mysql gtid 容灾_【3.2】【mysql基本实验】mysql GTID复制(基于空数据的配置)

概述:本质上和传统异步复制没什么区别,就是加了GTID参数。

且可以用传统的方式来配置主从,也可以用GTID的方式来自动配置主从。

这里使用GTID的方式来自动适配主从。

需要mysql5.6.5以上

目录

一、基于GTID的异步复制(一主一从)

【1】环境

【2】my.cnf 参数配置(主从都配)

【3】在主库创建复制用户

【4】在从库上运行主从配置

【5】核验

【5.1】show slave status\G 查看是否有误

【5.2】核验之前创建的用户是否有同步过来

【5.3】在主库创建测试数据库与测试表查看同步情况

【5.4】show global variables like '%gtid%' ; 查看GTID信息

一、基于GTID的异步复制(一主一从)

【1】环境

操作系统:CentOS linux 7.5

数据库版本:5.7.26

数据库架构:主从复制,主库用于生产,从库用于数据容灾和主库备机,采用默认传统的异步复制。

主库IP:192.168.135.158  端口:3306

从库IP:192.168.135.159  端口:3306

【2】my.cnf 参数配置(主从都配)

#replication_new

log_bin=/mysql/log/3306/mysql-bin #开启binlog

log_bin_index=/mysql/log/3306/mysql-bin.index

binlog_format=row

binlog_rows_query_log_events=on

max_binlog_size=2048bind-address=0.0.0.0server_id=2013306#注意,这里从库的server_id和主库一定要不一样

expire_logs_days=7#超过7天的binlog清理

innodb_support_xa=1binlog_cache_size=1M

log_bin_trust_function_creators=1#同步存储过程、函数、触发器

innodb_flush_log_at_trx_commit=1sync_binlog=1transaction-isolation=read-committed

#slave replication

relay_log=/mysql/log/3306/relaylog/mysql-relay.log

log-slave-updates=1read_only=1slave-parallel-type=LOGICAL_CLOCK

slave-parallel-workers=4master_info_repository=table #master_info 会记录到 mysql.slave_master_info

relay_log_info_repository=table #relay_log 会记录到,mysql.slave_relay_log_info

relay_log_recovery=1slave_skip_errors=ddl_exist_errors

slave_preserve_commit_order=1#增加的GTID参数

gtid_mode=on

enforce_gtid_consistency=1 #on:当发现语句/事务不支持GTID时,返回错误信息

log-slave-updates=1

binlog_gtid_simple-recovery=1 #5.7.6以下默认为off,5.7.6以上默认为on

【3】在主库创建复制用户

这里也会记录到binlog,开启主从同步后会一并复制过去,以便我们做主从且换

create user 'rpl'@'192.168.135.%' identified by '123456';

grantreplication slave on *.* to 'rpl'@'192.168.135.%';

flushprivileges;select user,host from mysql.user;

【4】在从库上运行主从配置

stop slave;

change master tomaster_host='192.168.135.158',

master_port=3306,

master_user='rpl',

master_password='123456',

master_auto_position=1;

start slave;

如果是多主一从

对于需要多主一从情况(假设另一主库为157,账号为rpl):

B mysql>CHANGE MASTERTOMASTER_HOST='192.168.135.157',

MASTER_USER='rpl',

MASTER_PASSWORD='123456',

master_auto_position=1 for CHANNEL 'm1';

CHANGE MASTERTOMASTER_HOST='192.168.1.158',

MASTER_USER='rpl',

MASTER_PASSWORD='123456',

master_auto_position=1 for CHANNEL 'm2';

【5】核验

【5.1】show slave status\G 查看是否有误

4c09a4694dab4da8542b39b1f81293d5.png

OK。两个线程启动了,Error字样的字段也没有任何问题。

【5.2】核验之前创建的用户是否有同步过来

74063dba4ae286bb49728773bf891b0f.png

OK,没有问题。

【5.3】在主库创建测试数据库与测试表查看同步情况

#创建test2库,以及test2.test1表create databasetest2;create table test2.test1(id int);insert into test2.test1 values(1);

commit;select * from test2.test1;

从库查看

select * from test2.test1;

1faadce3a1990874823f6445a92f19bb.png

OK 核验完成。

【5.4】show global variables like '%gtid%' ; 查看GTID信息

146a50fced8a9f1919a5901d3bd4a366.png

可以查看是否开启,图中框出来的是最新事务的GTID,可以在主从上对照查看事务是否同步。

二、一主多从

步骤与一主一从一样,我们这里主要讲一主多从的主从切换

【1】环境

操作系统:CentOS linux 7.5

数据库版本:5.7.26

数据库架构:主从复制,主库用于生产,从库用于数据容灾和主库备机,采用默认传统的异步复制。

主库IP:192.168.135.158  端口:3306

从库IP:192.168.135.159  端口:3306

从库IP:192.168.135.160  端口:3306

【2】配置新从库192.168.135.160

【2.1】修改 my.cnf(具体参考上面一主一从)

【2.2】停止从库 =》运行change master to =》开启从库

【2.3】验证状态;show slave status\G

【3】主从切换,把158=>159

158 主库必须是停业务,或者宕机状态。且从库已经同步完现有数据。否则会数据不一致。

【3.1】在159、160操作,查看数据同步情况

stop slave io_thread;

(1)show global variables like '%gtid_executed%' ;  查看gtid值是否一样?

2b0150c43739d6caf99bf1568bbfabca.png

(2)show slave status\G

5cc2c1f4099f82178f274dab2f6e7346.png

从库根据这个字段与主库的 show global variables like '%gtid_executed%' ; 对应

上面的那个字段,Retrieved_Gtid_Set 这个字段,当主库数据比从库多,之后再开启主从,这里记录了最后一个的恢复同步的GTID事务(或者说是回复到的点)

(3)确保IO线程已经没有事务在跑,状态如下

123f72f6061a34221674c6900054d3a5.png

【3.2】主从切换 158-》159 具体操作

-- 原从1,现主,159:

stop slave;

-- 原从2,现从,160: 当159和158有相同的复制账户及端口时,可以只改master_host即可,我们这里my.cnf与账户都是一样的,所以只需要改master_host。否则就要和最初配置一样,5个都要改

stop slave;

change master to

master_host='192.168.135.159';

-- ,master_user='rpl'

-- ,master_password='123456'

-- ,master_port=3306

-- ,master_auto_position=1;

start slave;

-- 原主,现从,158:

stop slave;change master to

master_host='192.168.135.159',

master_user='rpl',

master_password='123456',

master_port=3306,

master_auto_position=1;

start slave;

【3.3】核验

使用 【一】中的【5】方法核验

参考:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值