MySQL主从复制
1.配置主服务器
登录主服务器3306
mysql -S /data/mysql/mysql_3306/mysqld.sock -P 3306 -u root -p
创建主从复制账户rep1
mysql> create user rep1;
账户赋权
mysql> GRANT REPLICATION SLAVE ON *.* to 'rep1'@'127.0.0.1' identified by 'password';
因为我是在一台机器上安装了两个mysql实例,配的地址是本机地址127.0.0.1,多台机器情况下配的是从服务器地址。
复制账号需要REPLICATION SLAVE权限才能正常使用,复制用户可以通过
SHOW MASTER STATUS;
SHOW SLAVE STATUS;
命令来查看复制状态
增加主服务器配置,开启二进制日志log-bin
server-id=1 //数据服务标识,从服务器配置的时候要区别于主服务器
log-bin=master-bin
log-bin-index=master-bin.index
登录主服务器查看状态
2.配置从服务器
修改从服务器配置文件server-id = 3,区别于主服务器id。
重启从服务器后登录
连接master:
mysql> change master to master_host=’127.0.0.1’,master_user=’rep1’,master_password=’password’,master_log_file=’mysql-bin.000002’,master_log_pos=0;
执行后启动Slave
mysql> start slave;
查询同步状态:
mysql> show slave status\G
原因关联master时master_log_pos属性没配
重新关联master
mysql> change master to master_host=’127.0.0.1’,master_user=’rep1’,master_password=’password’,master_log_file=’mysql-bin.000002’,master_log_pos=1309;
报错:ERROR 3021 (HY000): This operation cannot be performed with a running slave io thread; run STOP SLAVE IO_THREAD FOR CHANNEL '' first.
需要先关闭当前的slave;
mysql> stop slave;
完成后重新关联,查看slave状态:
slave_sql_running和Slave_IO_Running,分别负责slave mysql进程和与主机的io通信,必须全部是yes才表示成功。
验证:在主服务器中执行建库、建表、数据增删改都会同步到从服务器中,看来是成功了。
附上项目源码:https://github.com/wollowow/mysql-proxy-demo.git
参考:
https://www.cnblogs.com/luckcs/articles/2543607.html
https://www.cnblogs.com/alvin_xp/p/4162249.html