宝塔现在知名度很高了,但是软件商店里却没有实现数据库主主热备的插件,尝试了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权限-执行
特别提醒:服务器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服务
这里博主已经配置完了就不回车了。
首先查看服务器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