Loading... ## 前言 宝塔现在知名度很高了,但是软件商店里却没有实现数据库主主热备的插件,尝试了MySQL主从复制(重构版)插件,但是主从还要在网站代码方面做自改才能真正上线使用,对于我这种业余选手来说满足不了需求,于是各种看教程摸索了一天终于实现了MySQL主主复制的需求,两个数据库各自为主,互相复制。再就是可视化操作对于业余选手真的很方便,下面的教程尽量可视化。也是博主想记录一下方便下次部署的时候不需要找东找西。 ## 配置文件 **1.** 软件商店-MySQL-设置-配置修改   服务器A与B添加的配置文件只有第一项与最后一项不同,具体可看上图。 服务器A添加的配置 ``` server-id = 1 #唯一id log-bin =mysql-bin replicate-do-db= test #数据库名 log-slave-updates sync_binlog=1 auto_increment_increment=2 auto_increment_offset=1 ``` 服务器B添加的配置 ``` server-id = 2 #唯一id log-bin =mysql-bin replicate-do-db= test #数据库名 log-slave-updates sync_binlog=1 auto_increment_increment=2 auto_increment_offset=2 ``` 想复制多个数据库继续添加`replicate-do-db`项即可。 添加到[mysqld]下方即可,保存后重启两个服务器的MySQL。  ## 新建用户 为了更加可视化,首先用到phpmyadmin工具给数据库新建账户。 现在我要给服务器A与B部署数据库主主复制,下面操作A与B都要操作,不同的地方会指出。 **1.** 在应用商店找到安装即可  **2.** 用root账户进入phpmyadmin管理  **3.** 进入管理-新建用户  **4.** 给账户FILE, REPLICATION SLAVE权限-执行 <span style='color:red'>特别提醒:服务器A与B新建账户时最好账号密码相同,不然后续操作脑子会很乱。</span>  ## A主B从 首先查看服务器A的master状态,记录二进制文件名和位置(后面会用到) **1.** 服务器A 进入phpmyadmin管理-状态  **2.** 服务器B连接本地SSH  **3.** 服务器B root登录数据库 `cd ../www/server/mysql` `mysql -u root -p` 输入root密码后 **4.** 配置和启动slave服务 `change master to master_host='服务器A的IP',master_user='账号',master_password='密码',master_log_file='mysql-bin.000012',master_log_pos=6574697;` 这里仔细查看会发现用到了第1步获取到的信息。 `start slave;` 启动slave服务  这里博主已经配置完了就不回车了。 ## B主A从 首先查看服务器A的master状态,记录二进制文件名和位置(后面会用到) **1.** 服务器B 进入phpmyadmin管理-状态  **2.** 服务器A连接本地SSH  **3.** 服务器A root登录数据库 `cd ../www/server/mysql` `mysql -u root -p` 输入root密码后 **4.** 配置和启动slave服务 `change master to master_host='服务器B的IP',master_user='账号',master_password='密码',master_log_file='mysql-bin.000010',master_log_pos=7792253;` 一样用到了第1步获取到的信息。 `start slave;` 启动slave服务  这里博主已经配置完了就不回车了。 ## 查看状态 上面操作完成后服务器A和B都重启一下数据库,然后进入phpmyadmin管理-状态  这里服务器A和B都要查看,显示 ``` Slave_IO_Running Yes Slave_SQL_Running Yes ``` 两个YES就是配置成功了。 ## 备注 `stop slave;` 关闭slave服务(关闭主从复制,配置失败需要重新配置时请先停止复制) `start slave;` 开启slave服务(开启主从复制,如果在关闭slave服务后主数据库数据有修改,依然可以进行更新数据。因为主数据库修改数据会留下日志,而slave服务就是读取日志然后进行操作) 如果想要解除主从关系:`reset slave all;` ## 后言 验证是否成功可以自己在服务器A新建表然后查看服务器B的数据库表,反之亦然。 这里配置文件为什么不用phpmyadmin给的呢,一是之前看教程配置的就没改了,而是觉得之前配置主主的教程有解析,现在找不到了... 博主是业余人士,哪里有需要改善的地方或者哪里错了,大家可以评论指出来,大家一起学习,谢谢! 我的博客即将同步至腾讯云+社区,邀请大家一同入驻:[https://cloud.tencent.com/developer/support-plan?invite_code=2wsxriv2ba04c](https://cloud.tencent.com/developer/support-plan?invite_code=2wsxriv2ba04c) 部分参考于:[宝塔Mysql数据库主从热备 ](https://www.blogbig.cn/go/dJPGFT48/)|[数据库主主配置](https://www.blogbig.cn/go/7OROj48q/)|[主主复制时的主键冲突解决](https://www.blogbig.cn/go/kld06Yma/) 正文到此结束 最后修改:2022 年 08 月 03 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 2 如果觉得我的文章对你有用,请随意赞赏