看过好多大神的博客,尝试过好几个方法,最终总结出适用自己的。
主服务器:
ip:120.78.00.001(随便起的)
centos7.4 64位
mysql 5.7
从服务器:
ip:120.78.00.002(随便起的)
centos7.4 64位
mysql 5.7
主服务器上
1.1登陆mysql:
mysql -u root -p
1.2给从服务器120.78.00.002授权用户hotstandby
grant all privileges on *.* to 'hotstandby' @'120.78.00.002' identified by 'A123a123!!';
如果没有修改密码安全等级,要设复杂点
1.3开启远程连接权限
grant all privileges on *.* to 'hotstandby' @'%' identified by 'A123a123!!';
1.4刷新
flush privileges;
1.5退出mysql
exit
1.6编辑my.cnf文件
vim /etc/my.cnf
按i进入编辑模式,结尾添加
log-bin=mysql-bin
binlog_format=mixed
server-id=1 #服务器唯一性标识符,每台服务器配置必须保存不一样
read-only=0
binlog-do-db=bootdo #需要备份的那个数据库名叫 “bootdo”
auto-increment-increment=2 #这里设置用来台服务器来做备份,按个人情况定
auto-increment-offset=1 #表示这台服务器序号,从1开始,不超auto-increment-increment
按esc退出模式,输入‘:wq’退出并保存文件
1.7重启mysql
service mysql restart
1.8重新登陆mysqlmysql -u root -p
1.9查看主服务器状态
show master status;
记住这里的file值:mysql-bin.000001和position的值:154 后面会用到复制数据库
我是用Navicat连接了两个数据库,把主数据库的bootdo储成sql文件bootdo.sql(结构和数据),然后在从数据库的bootdo下执行bootdo.sql
我执行时报错 [Msg] Finished - Unsuccessfully —,没有一条成功,百度后发现是sql语句过长,文件太大了,要修改从数据库的参数max_allowed_packet,忘了是哪位大神的帖子,只记得是把参数改成512M
在navicat上右键数据库,进入命令列界面
set global max_allowed_packet = 1024*1024*512;
从服务器
2.1编辑my.cnf文件
vim /etc/my.cnf
按i进入编辑模式,结尾添加
log-bin=mysql-bin
binlog_format=mixed
server-id=2
replicate-do-db=bootdo
relay_log=mysql.relay.bin
按esc退出模式,输入‘:wq’退出并保存文件
2.2重启mysql
service mysql restart
2.3登陆mysql
mysql -u root -p
2.4先停止slave同步进程
stop slave;
2.5执行同步语句
CHANGE MASTER TO MASTER_HOST='120.78.00.001',MASTER_USER='hotstandby',MASTER_PASSWORD='A123a123!!',MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=154;
MASTER_HOST=主服务器ip;
MASTER_USER=授权的用户;
MASTER_PASSWORD=密码;
MASTER_LOG_FILE=前面查出来的file值;
MASTER_LOG_POS=前面查出来的position的值;
2.6开启slave同步进程
start slave;
2.7查看slave同步信息
show slave status\G;
如果看到红色框的两个参数都是yes,就表示成功了测试
启动项目,新增一个用户,可以看到主数据库上用户表里有新增,从数据库上用户表里也有新增。
再测试删除,更新,效果也一样。