基于全局事务标识符复制 | 不复制指定的库和指定的表 | 在线增加从服务器
全局事务标识符(GTID)时一个唯一的标识符,在5.6版本引入,用于取代基于二进制日志复制的传统方式
GTID格式:source_id:transaction_id
GTID查看:可以通过gtid_executed、gtid_purged和gtid_next系统变量查看
GTID生成:由gtid_next控制,默认值AUTOMATIC,即每次提交事务自动生成
GTID持久化:
基于全局事务标识符复制-复制配置
主节点配置
1:启用GTID模式、二进制和配置唯一ID
[mysqld]
gtid_mode=ON
server_id=1
log-bin=mysql-bin
enforce_gtid_consistency=ON
创建复制账户
mysql> create user 'repl'@'%' identified by 'www.c1688.CC';
mysql> grant replication slave,REPLICATION CLIENT on *.* to 'repl'@'%';
可以用一个语句创建和赋予权限
mysql> grant replication slave,REPLICATION CLIENT on *.* to 'repl' identified by 'www.c1688.CC';
2:重启mysql
#systemctl restart mysqld
从节点配置
1:启用GTID模式和配置唯一ID
[mysqld]
gtid_mode=ON
server_id=2
#log-bin=mysql-bin
enforce_gtid_consistency=ON
2:配置复制连接
mysql> change master to master_host='192.168.31.3', master_user='repl',master_password='www.c1688.CC',master_auto_position=1;
3:启动线程
mysql> start slave;
4:查看状态
mysql> show slave status\G;
清空原有复制环境
slave从停止线程
mysql> stop slave;
清空配置文件
mysql> reset slave;
基于全局事务标识符复制-过滤规则
在从站设置过滤规则
改动前必须停止slave线程
mysql> stop slave sql_thread;
mysql> change replication filter Replicate_wild_Ignore_table=('test.user1'); #不复制test的user1表的数据
mysql> start slave sql_thread;
设置忽略数据库
mysql> stop slave sql_thread;
mysql> change replication filter Replicate_Ignore_DB=(test); #忽略test数据库,不加引号
mysql> start slave sql_thread;
清空过滤条件
mysql> stop slave sql_thread;
mysql> change replication filter Replicate_Ignore_DB=();
mysql> change replication filter Replicate_wild_Ignore_table=();
mysql> start slave sql_thread;
在线增加从服务器
如果主机以前是从服务器的机器首先执行
mysql> reset master;
1:备份主服务器
#mysqldump -h127.0.0.1 -uroot -p -P 3306 -A -R --single-transaction> dump.sql #导出全部库
#mysqldump -h127.0.0.1 -uroot -p -P 3306 -B test -R --single-transaction> dump.sql #只导出test库
备份copy到从服务器 ,copy到root目录下
#scp dump.sql root@192.168.31.4:/root
2:从服务器配置
#vi /etc/my.cnf
[mysqld]
gitd_mode=ON
server-id=3
#log-bin=mysql-bin
enforce_gtid_consistency=ON
3:重启mysql
#systemctl restart mysqld.service
4:导入备份数据库
#mysql -uroot -p < /root/dump.sql
5:建立复制链接
mysql> change master to master_host='192.168.31.3', master_user='repl', master_password='www.c1688.CC', master_auto_position=1;
6:启动线程
mysql> start slave;