【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开始支持的一种新的复制方式,此方式与传统基于日志的方式存在很大的差异,在原来的基于日志的复制中,从服务器连接到主服务器并告诉主服务器要从哪个二进制日志的偏移量开始 ...
随机推荐
- TTTTTTTTTTTTT CF#365 div2 B 统计点
B. Mishka and trip time limit per test 1 second memory limit per test 256 megabytes input standard i ...
- Java写入的常用技巧
一.批量写入 Java写入大量数据到磁盘/数据库等其它第三方介质时,由于IO是比较耗费资源的操作,通常采用攒一批然后批量写入的模式 //通常构造一个缓存池,一个限制指标,可以是内存大小也可以是时间 B ...
- 文字和符号组合成图 Banner
springboot 启动 logo.... 文字符号组合成的图. <<< | /\\\ /--\\\ / \\\\ <*| /________\\\\ | ___ | | | ...
- mongodb 单节点集群配置 (开发环境)
最近项目会用到mongodb的oplog触发业务流程,开发时的debug很不方便.所以在本地创建一个单台mongodb 集群进行开发debug. 大概:mongodb可以产生oplog的部署方式应该是 ...
- zipkin-client:brave核心代码思路整理
Zipkin是分布式跟踪系统. 简单地理解,可以将Zipkin分为两部分. 一部分为Zipkin Server,其负责接受存储应用程序处理耗时数据,以及UI展示. 另一部分为Zipkin Client ...
- TensorFlow 学习(4)——MNIST机器学习进阶
要进一步改进MNIST学习算法,需要对卷积神经网络进行学习和了解 学习材料参见https://www.cnblogs.com/skyfsm/p/6790245.html 卷积神经网络依旧是层级网络,只 ...
- StackTraceElement 源码阅读
StackTraceElement 属性说明 /** * 每个 StackTraceElement 对象代表一个独立的栈帧,所有栈帧的顶部是一个方法调用 * @since 1.4 * @author ...
- 网络通信框架之okHttp
主页: https://github.com/square/okhttp 特点: * 支持HTTP/2 和 SPDY * 默认支持 GZIP 降低传输内容的大小 * 支持网络请求的缓存 * 当网络出现 ...
- day01-JavaScript中"Uncaught TypeError: Cannot set property 'innerHTML' of null"错误
转行学开发,代码100天.初写了最简的一段Js代码,即通过document中的innerHTML方法修改一个<p>标签的内容,报以下错误. -"Uncaught TypeErro ...
- Python标准组件ConfigParser配置文件解析器,保存配置时支持大写字母的方法
虽然自己已经改用xml作为配置文件首选格式了,但是有时候还是需要解析ini.cfg文件(为了兼容早期版本或者其他作者的软件). 基本上Python自带的ConfigParser足够应对了,但是美中不足 ...