mysql主从复制原理:

Master将数据改变记录到二进制日志(binary log)中,也就是配置文件log-bin指定的文件,

这些记录叫做二进制日志事件(binary log events);

Slave 通过 I/O 线程读取 Master 中的 binary log events 并写入到它的中继日志(relay log);

Slave 重做中继日志中的事件, 把中继日志中的事件信息一条一条的在本地执行一次,完

成数据在本地的存储, 从而实现将改变反映到它自己的数据(数据重放)。

注意事项:

主从服务器操作系统版本和位数一致;

Master 和 Slave 数据库的版本要一致;

Master 和 Slave 数据库中的数据要一致;

Master 开启二进制日志, Master 和 Slave 的 server_id 在局域网内必须唯一;

本文以node1和node2为例:数据库版本都是8.0.20,以node1作为MASTER,node2作为slave。

  linux操作系统centos7.9 mysql8.0 主从数据同步_mysql

 先配置主节点(标红的为新增):

只需要配置mysqld,其他的都可以注释,从节点也是一样的。

vim /etc/my.cnf 

[mysqld]

basedir=/var/local/mysql-8.0/

datadir=/var/local/mysql-8.0/data/

socket=/tmp/mysql.sock

character-set-server=UTF8MB4

log-bin=mysql-bin

server-id=1

linux操作系统centos7.9 mysql8.0 主从数据同步_mysql_02

从节点配置:

vim /etc/my.cnf 

[mysqld]

basedir=/var/local/mysql-8.0/

datadir=/var/local/mysql-8.0/data/

socket=/tmp/mysql.sock

character-set-server=UTF8MB4

erver-id=2

linux操作系统centos7.9 mysql8.0 主从数据同步_mysql_03

主从配置完了之后,创建用于复制操作的用户。

在主节点上创建test用户,用于从节点连接主节点使用。

CREATE USER 'repl'@'192.168.107.102' IDENTIFIED WITH mysql_native_password BY 'Ron_master_1';

GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.107.102';

刷新授权表信息

flush privileges;

linux操作系统centos7.9 mysql8.0 主从数据同步_mysql_04

  现在获取主节点当前的binlog文件名和位置。

 linux操作系统centos7.9 mysql8.0 主从数据同步_mysql_05

  记录下来,然后再从节点上设置主节点的master参数

mysql> CHANGE MASTER TO

-> MASTER_HOST='192.168.107.101',

-> MASTER_USER='repl',

-> MASTER_PASSWORD='Ron_master_1',

-> MASTER_LOG_FILE='binlog.000001',

-> MASTER_LOG_POS=2212;

Query OK, 0 rows affected, 2 warnings (0.08 sec)

mysql>

linux操作系统centos7.9 mysql8.0 主从数据同步_二进制日志_06

  然后开启同步(注意关闭两边防火墙):

linux操作系统centos7.9 mysql8.0 主从数据同步_二进制日志_07

可以通过show slave status \G;该命令查看主从同步情况

linux操作系统centos7.9 mysql8.0 主从数据同步_mysql_08

遇到这个报错,是因为主机和丛机的server_id相同了,

 linux操作系统centos7.9 mysql8.0 主从数据同步_二进制日志_09

  所以要修改从机的值

set global server_id=2;

linux操作系统centos7.9 mysql8.0 主从数据同步_二进制日志_10

 修改完了之后,从机要先执行stop 再执行start。

linux操作系统centos7.9 mysql8.0 主从数据同步_mysql_11

 现在在执行show slave status \G;查看同步情况

linux操作系统centos7.9 mysql8.0 主从数据同步_数据_12

进行测试验证:

linux操作系统centos7.9 mysql8.0 主从数据同步_mysql_13

 主从数据同步成功。编写不易,望采纳!