数据库

Mysql-8.0.2 主从复制(GTID)

2021-06-10  本文已影响0人  _大叔_

https://dev.mysql.com/doc/refman/8.0/en/replication.html 官方地址,我这里使用的是 Mysql8.0.2

主从复制的优点:

Mysql 8.0 支持多种复制计数,可以从二进制日志复制,也可以GTID(全局事务)标识复制,也可以多主复制等,更多方法可以从官网中查看,这里我们根据 GTID 复制。GTID依赖于事务,也就是说其他引擎是没办法复制的

在主服务器配置 my.cnf 中配置如下

# server_id 必须在复制中唯一
server_id=1
# 主从复制所需
gtid_mode=ON
enforce-gtid-consistency=ON

在从服务器配置的my.cng中配置如下

server_id=2
# 主从复制所需
gtid_mode=ON
enforce-gtid-consistency=ON
# 启动每个副本 ,以确保在配置副本设置之前不会启动复制
skip-slave-start=on
# 指定复制的数据库
replicate-do-db=test
# 过滤复制的数据库
replicate-ignore-db=iedp:wiedp_sub:wiedp

启动主服务器,添加一个让子服务器连接的账号和密码

# 创建用户
CREATE USER repl@'10.240.30.%' IDENTIFIED BY 'repl@password';
# 授权
GRANT REPLICATION SLAVE ON *.* TO repl@'10.240.30.%';

启动从服务器,并输入如下语句

CHANGE MASTER TO
    MASTER_HOST = '10.240.30.101',
    MASTER_PORT = 3306,
    MASTER_USER = 'repl',
    MASTER_PASSWORD = 'Repl@123',
    MASTER_AUTO_POSITION = 1;

注意要复制的库在从库不能存在,否则会报错,在从库执行如下命令

mysql> START SLAVE;

主从复制结束。

注意事项:
从库可以删除同步的数据和表以及被同步的库;
从库删除的数据、表、库,在主库添加数据时从库无法恢复;
从库在首次复制不能拥有要复制的库,否则报错;
从库主动删除的数据无法恢复,只能拥有未被复制过的数据;

如果想动态设置需要复制的库,可以通过如下命令

# 需要先停止之前复制线程
STOP SLAVE SQL_THREAD;
# 重新设置要复制哪些库,replicate_ignore_db(不复制的库)
CHANGE REPLICATION filter replicate_do_db=(test_1,test);
# 重新启动复制线程
start slave sql_thread;
上一篇下一篇

猜你喜欢

热点阅读