MYSQL8主从同步配置

355 阅读2分钟

前提条件
1.MYSQL 大版本一致 mysql -v
2.还没想到

一、配置SERVER_ID

1. 获取主库server_id

show variables like '%server_id%';

记录下主库server_id,下面要用

二、配置从库

1. 停止从库的MySQL服务:

service mysql stop

2. 修改从库配置文件

vim /etc/my.cnf

这里要注意配置的参数放在[mysqld]下:

server-id               =  2222              //服务 ID,主从实例 server-id 需不同。
log_bin                 =  mysql-bin.log     //这里要确保路径存在
expire_logs_days        =  10
max_binlog_size         =  100M
replicate-do-db         =  exampledb              //需要同步的数据库
replicate-ignore-db     =  mysql                  //不需要同步的数据库
replicate-ignore-db     =  information_schema     //不需要同步的数据库
replicate-ignore-db     =  performance_schema     //不需要同步的数据库

配置GTID同步模式,binlog格式为ROW,同样放置在[mysqld]下:

#GTID
gtid_mode=on
enforce_gtid_consistency=on
binlog_format=row                             //设置 binlog 为 row
log-slave-updates=1

3. 启动MySql服务:

systemctl start mysqld 

4.检查配置是否生效

进入MySQL,执行语句,查看配置是否生效(值为ROW即生效):

show variables like '%binlog_format%';

三、导出主库全部数据

1. 主库加锁

首先登陆数据库,然后刷新所有的表,同时给数据库加上一把锁,阻止对数据库进行任何的写操作

flush tables with read lock;

2. 获取二进制日志信息

然后执行下面的语句获取二进制日志的信息

show master status;

File:当前使用的二进制日志的文件名

Position:该日志里面的位置信息

备注:记下这两个值,下面配置从服务器时用到

3. 导出数据

mysqldump -h RDS数据库ip -P RDS数据库端口 -u RDS数据库账号 -p 数据库名 > 导出的文件名.sql 

输入密码等待完成

可以忽略以下报错

Warning: A partial dump from a server that has GTIDs will by default include the GTIDs of all transactions, even those that changed suppressed parts of the database. If you don't want to restore GTIDs, pass --set-gtid-purged=OFF. To make a complete dump, pass --all-databases --triggers --routines --events.

4.数据库解锁

恢复对主数据库的操作

unlock tables;

四、从库操作

1. 导入主库数据

CREATE DATABASE 数据库名;
USE 数据库名;
SOURCE 导出的文件名.sql

2. 配置同步信息

使用上面获取的主库日记信息

change master to master_host='192.168.0.104', //Master 服务器Ip
master_port=3306,
master_user='test',
master_password='mysql', 
master_log_file='master-bin.000001',//Master服务器当前使用的二进制日志的文件名(File值)
master_log_pos=0; //Master服务器该日志里面的位置信息(Position值)

3. 启动slave

start slave;

4. 查看slave状态:

show slave status\G;

如果Slave_IO_Running 和 Slave_SQL_Running 的状态是否都为 Yes的话则配置成功!

参考文章:

  1. www.likecs.com/show-203583…

  2. blog.csdn.net/agonie20121…

  3. developer.aliyun.com/article/975…

  4. blog.csdn.net/zzddada/art…

感谢作者辛苦付出