【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//mysql-bin #开启binlog
log_bin_index=/mysql/log//mysql-bin.index
binlog_format=row
binlog_rows_query_log_events=on
max_binlog_size= bind-address=0.0.0.0
server_id=2013306 #注意,这里从库的server_id和主库一定要不一样
expire_logs_days= #超过7天的binlog清理
innodb_support_xa=
binlog_cache_size=1M
log_bin_trust_function_creators= #同步存储过程、函数、触发器
innodb_flush_log_at_trx_commit=
sync_binlog=
transaction-isolation=read-committed #slave replication
relay_log=/mysql/log//relaylog/mysql-relay.log
log-slave-updates=
read_only=
slave-parallel-type=LOGICAL_CLOCK
slave-parallel-workers= master_info_repository=table #master_info 会记录到 mysql.slave_master_info
relay_log_info_repository=table #relay_log 会记录到,mysql.slave_relay_log_info
relay_log_recovery=
slave_skip_errors=ddl_exist_errors
slave_preserve_commit_order= #增加的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 '';
grant replication slave on *.* to 'rpl'@'192.168.135.%';
flush privileges;
select user,host from mysql.user;
【4】在从库上运行主从配置
stop slave; change master to
master_host='192.168.135.158',
master_port=3306,
master_user='rpl',
master_password='',
master_auto_position=1; start slave;
如果是多主一从
对于需要多主一从情况(假设另一主库为157,账号为rpl):
B mysql>
CHANGE MASTER TO
MASTER_HOST='192.168.135.157',
MASTER_USER='rpl',
MASTER_PASSWORD='',
master_auto_position=1 for CHANNEL 'm1'; CHANGE MASTER TO
MASTER_HOST='192.168.1.158',
MASTER_USER='rpl',
MASTER_PASSWORD='',
master_auto_position=1 for CHANNEL 'm2';
【5】核验
【5.1】show slave status\G 查看是否有误

OK。两个线程启动了,Error字样的字段也没有任何问题。
【5.2】核验之前创建的用户是否有同步过来

OK,没有问题。
【5.3】在主库创建测试数据库与测试表查看同步情况
#创建test2库,以及test2.test1表
create database test2;
create table test2.test1(id int);
insert into test2.test1 values(1);
commit;
select * from test2.test1;
从库查看
select * from test2.test1;

OK 核验完成。
【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
从库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值是否一样?

(2)show slave status\G

从库根据这个字段与主库的 show global variables like '%gtid_executed%' ; 对应
上面的那个字段,Retrieved_Gtid_Set 这个字段,当主库数据比从库多,之后再开启主从,这里记录了最后一个的恢复同步的GTID事务(或者说是回复到的点)
(3)确保IO线程已经没有事务在跑,状态如下

【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】方法核验
参考:
GTID详解:https://blog.csdn.net/wmq880204/article/details/53160078
GTID详解:https://blog.csdn.net/thundermeng/article/details/50401150
【3.2】【mysql基本实验】mysql GTID复制(基于空数据的配置)的更多相关文章
- mysql 5.6在gtid复制模式下复制错误,如何跳过??
mysql 5.6在gtid复制模式下复制错误,如何跳过?? http://www.xuchanggang.cn/archives/918.html
- 深入MySQL复制(二):基于GTID复制
相比传统的MySQL复制,gtid复制无论是配置还是维护都要轻松的多.本文对gtid复制稍作介绍. MySQL基于GTID复制官方手册:https://dev.mysql.com/doc/refman ...
- mysql的GTID复制和多源复制
配置基于GTID的复制--------------------------------------------在参数文件/etc/my.cnf增加下面内容:主库master_info_reposito ...
- MySQL GTID复制
什么是GTID 什么是GTID呢, 简而言之,就是全局事务ID(global transaction identifier ),最初由google实现,官方MySQL在5.6才加入该功能.GTID是事 ...
- MHA-手动Failover流程(传统复制>ID复制)
本文仅梳理手动Failover流程.MHA的介绍详见:MySQL高可用架构之MHA 一.基本环境 1.1.复制结构 VMware10.0+CentOS6.9+MySQL5.7.21 ROLE HOST ...
- [mysql] MariaDB 10.0.10 GTID复制
一:概念理解: 1.TID:Transaction ID,即Mysql服务器的事务ID号. 2.GTID:Global Transaction ID,全局事务ID,在整个主从复制架构中任何两个事 ...
- mysql之 MySQL 主从基于 GTID 复制原理概述
一. 什么是GTID ( Global transaction identifiers ):MySQL-5.6.2开始支持,MySQL-5.6.10后完善,GTID 分成两部分,一部分是服务的UUid ...
- mysql之 mysql 5.6不停机主从搭建(一主一从基于GTID复制)
环境说明:版本 version 5.6.25-log 主库ip: 10.219.24.25从库ip:10.219.24.22os 版本: centos 6.7已安装热备软件:xtrabackup 防火 ...
- MysqL主从复制_模式之GTID复制
基于GTID的复制是从Mysql5.6开始支持的一种新的复制方式,此方式与传统基于日志的方式存在很大的差异,在原来的基于日志的复制中,从服务器连接到主服务器并告诉主服务器要从哪个二进制日志的偏移量开始 ...
随机推荐
- linux下su设置无密码模式
1.首先切换到root用户下 2.进到etc目录 cd /etc 3. 修改文件的权限 chmod u+w /etc/sudoers 4. 修改文件 vim /etc/sudoers
- MySQL的密码操作命令
一.请问在win2K命令提示符下怎样更改mysql的root管理员密码? >mysql -u root -p Enter password: ****** mysql> use mysql ...
- matplotlib中 plt.plot() 函数中**kwargs的参数形式
plt.plot(x, y, **kwargs) **kwargs的参数大致有如下几种: color: 颜色 linestyle: 线条样式 marker: 标记风格 markerfacecolor: ...
- 在CentOS 7上搭建WordPress
环境(ECS阿里云服务器) 服务器操作系统:CentOS 7.3 : 博客部署服务器:Apache HTTP: 数据库:MySql: 框架:WordPress: 步骤 一.安装 Apache HTTP ...
- 回调函数(callback) python / c++ 演示
什么是回调函数? 我们绕点远路来回答这个问题. 编程分为两类:系统编程(system programming)和应用编程(application programming).所谓系统编程,简单来说,就是 ...
- word 之 插入删除空行
好久没有写程序了.有些手生: 在用C#对word进行直接开发操作过程中,为了文档的美观,我们会插入或删除空行. 1.插入空行的代码很简单. Selection 类型的TypeParagraph()函数 ...
- js监听某个元素高度变化来改变父级iframe的高度
最近需要做一个iframe调用其他页面内容,这个iframe地址是可变化的,但是里面的内容高度不确定且里面内容高度可调整,所以需要通过监听iframe里面body的高度变化来调整iframe的高度. ...
- Fastadmin 写关联命名时,最好前后台用同一个model,方便管理(会出现命名空间问题)
1.php think crud -t test --relation=category(外键表1) --relation=admin(外键表2) --relationforeignkey=categ ...
- 类 kotlin(13)
Kotlin 中使用关键字 class 声明类class Invoice {} 类声明由类名.类头(指定其类型参数.主 构造函数等) 和由大括号包围的类体构成.类头和类体都是可选的:如果一个类没有类体 ...
- 开源运维自动化平台-opendevops
开源运维自动化平台-opendevops 简介 官网 | Github| 在线体验 CODO是一款为用户提供企业多混合云.自动化运维.完全开源的云管理平台. CODO前端基于Vue iview开发. ...