基于GTID主从复制 | 在线增加从服务器 | 过滤规则

基于全局事务标识符复制   |   不复制指定的库和指定的表   |    在线增加从服务器



全局事务标识符(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 on *.* to 'repl'@'%';


可以用一个语句创建和赋予权限
mysql> grant replication slave 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 [email protected]:/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:查看最新的bin-log日志文件和 log_pos
#more dump.sql


-- Position to start replication or point-in-time recovery from
--


-- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000003', MASTER_LOG_POS=607;


--
-- Current Database: `test`




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;






















猜你喜欢

转载自blog.csdn.net/qq_28710983/article/details/80914710