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

 
posted @ 2019-05-09 17:36  wollow  阅读(539)  评论(0编辑  收藏  举报