本人微信公众号"aeolian"~

Mysql5.7基于日志主从复制

主从同步概念

主从同步是异步复制


《Mysql5.7基于日志主从复制》

Mysql两种复制类型:

基于二进制日志

使用GTID完成基于事务的复制

基于日志三种方式:

《Mysql5.7基于日志主从复制》

 


Mysql5.7需要注意的问题:

老版本方法创建mysql用户
#mysql5.7之前版本,新建并赋权限
grant replication slave on *.* to 'dba'@'192.168.25.%' identified by '123456';

查看警告

show warnings;之后发现这个创建用户的方法已经被抛弃,将来版本可能被移除

《Mysql5.7基于日志主从复制》

删除mysql用户

drop user 'dba'@'192.168.25.%';

查看mysql中的用户

select user,host from mysql.user;

《Mysql5.7基于日志主从复制》

新建用户

在master服务器上新建用户,登录mysql后执行以下语句

create user 'dba'@'192.168.25.%' identified by '123456'#新建用户,允许登录的ip地址段:192.168.25.% 用户名:dba 密码:123456
grant replication slave on *.* to dba@'192.168.25.%';    #赋权限

备份Master数据

首先vi /etc/my.cnf添加如下两行

log-bin=mysql-bin
server-id=4

cd /tmp    #备份到tmp文件夹下
#备份到文件all.sql
mysqldump --single-transaction --master-data=2 --triggers --routines --all-databases -uroot -p -h 192.168.25.4 > all.sql

《Mysql5.7基于日志主从复制》

将备份的all.sql复制到从服务器上

scp all.sql [root@]192.168.25.5:\tmp[\all.sql]

Slaver数据库备份数据还原

mysql -uroot -p -h 192.168.25.5 < all.sql

主从配置

more all.sql

《Mysql5.7基于日志主从复制》

登录后执行以下语句

 change master to master_host='192.168.25.4',    #主服务器ip
 master_user='dba',      #主服务器建的主从复制mysql用户
 master_password='123456',     #主从复制用户名密码
 master_log_file='mysql-bin.000005',    #mysqldump的备份文件中有
 master_log_pos=129058;     #mysqldump的备份文件中有

 《Mysql5.7基于日志主从复制》

这就完成了主从复制的配置,查看主从配置

show slave status \G;

《Mysql5.7基于日志主从复制》

发现Slave_IO_Running和Slave_SQL_Running进程都没有启动,启动进程

start slave;

《Mysql5.7基于日志主从复制》

 《Mysql5.7基于日志主从复制》

 如果某个进程启动失败,查看Last_IO_Error会有提示(例如:防火墙开了连接不上,虚拟机克隆mysql的pid一样需要重新initialize等)

主从同步属性

配置好主从同步后会多一个数据库performance_schema

一下表为主要从数据库配置表

《Mysql5.7基于日志主从复制》

 

连接从数据库,查看从服务器replication_applier_configuration表配置

select * from replication_applier_configuration;

《Mysql5.7基于日志主从复制》

 改变同步延迟

stop slave;

change master to master_delay=3600;

start slave;

《Mysql5.7基于日志主从复制》

查看主从同步延迟,为3600秒

查看配置表   select * from replication_applier_configuration;

《Mysql5.7基于日志主从复制》

查看slave状态   show slave status /G;

《Mysql5.7基于日志主从复制》

配置好后查看状态

select * from replication_applier_status;

《Mysql5.7基于日志主从复制》

连接mycat插入操作,会发现主数据库有,从数据库并没有,再次查看表replication_applier_status

《Mysql5.7基于日志主从复制》

多线程复制replication_applier_status_by_coordinator,因为不存在多线程,所以无数据。

《Mysql5.7基于日志主从复制》

 查看正在工作的线程,这里只有一条。

《Mysql5.7基于日志主从复制》

查看进程列表

《Mysql5.7基于日志主从复制》

 查看连接配置表(即一开始配置的change master属性)

select * from replication_connection_configuration \G;

《Mysql5.7基于日志主从复制》

查看连接状态

 select * from replication_connection_status \G;

《Mysql5.7基于日志主从复制》

 

点赞

Leave a Reply

Your email address will not be published. Required fields are marked *