一、MYSQL 主从复制原理
1、在每个事务更新数据完成之前,master在二进制日志记录这些变化。写入二进制日志完成后,master通知存储引擎提交事务。

2、slave将master的binary log复制到其中继日志。slave开始一个工作线程--I/O线程,I/O线程在master上打开一个普通的连接,然后开始binlog dump process。binlog dump process从master的二进制日志中读取事件,如果已经连接上master,它会睡眠并等待master产生新的事件,I/O线程将这些事件写入中继日志。

3、SQL从线程处理该过程的最后一步,sql线程从中继日志读取事件,并重放其中的事件而更新slave的数据,使其与master中的数据一致。

二、实现主从复制

1、实现时间同步

启动ntp服务,实现开机自动启动

mysql 8 gtid 主从复制 mysql实现主从复制_主从复制

修改/etc/ntpd.conf,添加两项

server 192.168.1.20 //手工写 需要同步的上层服务器

fudge 192.168.1.20 stratum 8 //手工写 同步上层服务器的stratum,大小不能超过或等于16

mysql 8 gtid 主从复制 mysql实现主从复制_服务器_02

获取ntp服务器时间

mysql 8 gtid 主从复制 mysql实现主从复制_mysql 8 gtid 主从复制_03

mysql 8 gtid 主从复制 mysql实现主从复制_服务器_04

时间同步
2、配置MySQL主master服务器
修改配置文件my.cnf

mysql 8 gtid 主从复制 mysql实现主从复制_mysql 8 gtid 主从复制_05

mysql 8 gtid 主从复制 mysql实现主从复制_mysql 8 gtid 主从复制_06

mysql 8 gtid 主从复制 mysql实现主从复制_MySQL_07

授予复制权限

mysql 8 gtid 主从复制 mysql实现主从复制_mysql 8 gtid 主从复制_08


flush privileges 命令本质上的作用是将当前user和privilige表中的用户信息/权限设置从mysql库(MySQL数据库的内置库)中提取到内存里。MySQL用户数据和权限有修改后,希望在"不重启MySQL服务"的情况下直接生效

file列显示日志名,position列显示偏移量3、配置从服务器slave

修改/etc/my.cnf

mysql 8 gtid 主从复制 mysql实现主从复制_mysql 8 gtid 主从复制_09


默认情况,中继日志使用host_name-relay-bin.nnnnnn形式的文件名,其中host_name是从服务器主机名,nnnnnn是序 列号。用连续序列号来创建连续中继日志文件,从000001开始。从服务器跟踪索引文件中目前正使用的中继日志。

默认中继日志索引文件名为host_name-relay-bin.index。默认情况,在从服务器的数据目录中创建这些文件。

mysql 8 gtid 主从复制 mysql实现主从复制_MySQL_10

配置同步登陆MySQL

mysql 8 gtid 主从复制 mysql实现主从复制_mysql 8 gtid 主从复制_11


mysql 8 gtid 主从复制 mysql实现主从复制_服务器_12

mysql 8 gtid 主从复制 mysql实现主从复制_MySQL_13

4.验证主从复制

mysql 8 gtid 主从复制 mysql实现主从复制_主从复制_14

mysql 8 gtid 主从复制 mysql实现主从复制_数据库_15


转载于:https://blog.51cto.com/12879627/2088758