主从同步概念

主从同步是异步复制


Mysql两种复制类型:

基于二进制日志

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

基于日志三种方式:

 


Mysql5.7需要注意的问题:

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

查看警告

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

Mysql5.7基于日志主从复制_Mysql数据库

删除mysql用户

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

查看mysql中的用户

select user,host from mysql.user;

Mysql5.7基于日志主从复制_Mysql数据库_02

新建用户

在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基于日志主从复制_Mysql数据库_03

将备份的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基于日志主从复制_Mysql数据库_04

登录后执行以下语句

 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基于日志主从复制_数据库教程_05

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

show slave status \G;

Mysql5.7基于日志主从复制_Mysql数据库_06

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

start slave;

Mysql5.7基于日志主从复制_Mysql数据库_07

 Mysql5.7基于日志主从复制_Mysql数据库_08

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

主从同步属性

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

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

Mysql5.7基于日志主从复制_数据库教程_09

 

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

select * from replication_applier_configuration;

Mysql5.7基于日志主从复制_数据库教程_10

 改变同步延迟

stop slave;

change master to master_delay=3600;

start slave;

Mysql5.7基于日志主从复制_数据库教程_11

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

查看配置表   select * from replication_applier_configuration;

Mysql5.7基于日志主从复制_数据库教程_12

查看slave状态   show slave status /G;

Mysql5.7基于日志主从复制_Mysql数据库_13

配置好后查看状态

select * from replication_applier_status;

Mysql5.7基于日志主从复制_数据库教程_14

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

Mysql5.7基于日志主从复制_Mysql数据库_15

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

Mysql5.7基于日志主从复制_数据库教程_16

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

Mysql5.7基于日志主从复制_Mysql数据库_17

查看进程列表

Mysql5.7基于日志主从复制_Mysql数据库_18

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

select * from replication_connection_configuration \G;

Mysql5.7基于日志主从复制_Mysql数据库_19

查看连接状态

 select * from replication_connection_status \G;

Mysql5.7基于日志主从复制_Mysql数据库_20