概述:本质上和传统异步复制没什么区别,就是加了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复制(基于空数据的配置)的更多相关文章

  1. mysql 5.6在gtid复制模式下复制错误,如何跳过??

    mysql 5.6在gtid复制模式下复制错误,如何跳过?? http://www.xuchanggang.cn/archives/918.html

  2. 深入MySQL复制(二):基于GTID复制

    相比传统的MySQL复制,gtid复制无论是配置还是维护都要轻松的多.本文对gtid复制稍作介绍. MySQL基于GTID复制官方手册:https://dev.mysql.com/doc/refman ...

  3. mysql的GTID复制和多源复制

    配置基于GTID的复制--------------------------------------------在参数文件/etc/my.cnf增加下面内容:主库master_info_reposito ...

  4. MySQL GTID复制

    什么是GTID 什么是GTID呢, 简而言之,就是全局事务ID(global transaction identifier ),最初由google实现,官方MySQL在5.6才加入该功能.GTID是事 ...

  5. MHA-手动Failover流程(传统复制&GTID复制)

    本文仅梳理手动Failover流程.MHA的介绍详见:MySQL高可用架构之MHA 一.基本环境 1.1.复制结构 VMware10.0+CentOS6.9+MySQL5.7.21 ROLE HOST ...

  6. [mysql] MariaDB 10.0.10 GTID复制

    一:概念理解:    1.TID:Transaction ID,即Mysql服务器的事务ID号. 2.GTID:Global Transaction ID,全局事务ID,在整个主从复制架构中任何两个事 ...

  7. mysql之 MySQL 主从基于 GTID 复制原理概述

    一. 什么是GTID ( Global transaction identifiers ):MySQL-5.6.2开始支持,MySQL-5.6.10后完善,GTID 分成两部分,一部分是服务的UUid ...

  8. mysql之 mysql 5.6不停机主从搭建(一主一从基于GTID复制)

    环境说明:版本 version 5.6.25-log 主库ip: 10.219.24.25从库ip:10.219.24.22os 版本: centos 6.7已安装热备软件:xtrabackup 防火 ...

  9. MysqL主从复制_模式之GTID复制

    基于GTID的复制是从Mysql5.6开始支持的一种新的复制方式,此方式与传统基于日志的方式存在很大的差异,在原来的基于日志的复制中,从服务器连接到主服务器并告诉主服务器要从哪个二进制日志的偏移量开始 ...

随机推荐

  1. Visio:为什么按下方向键,选中的目标不动,绘图区(页面)却在移动

    造冰箱的大熊猫,本文适用于Microsoft Visio 2007@cnblogs 2018/12/12 检查下键盘的“Scroll Lock”键是不是被激活了(键盘上对应的指示灯被点亮).Scrol ...

  2. 2018 南京预选赛 J Sum ( 欧拉素数筛 、Square-free Number、DP )

    题目链接 题意 : 定义不能被平方数整除的数为 Square-free Number 定义 F(i) = 有几对不同的 a 和 b 使得 i = a * b 且 a .b 都是 Square-free ...

  3. 路由器与交换机配置——交换机默认网关(实现跨网段telnet)

    一.实验目的:配置一台交换机,并配置默认网关,使不同网段的主机能够远程telnet登录连接到交换机 二.实验拓扑图如下: 二.实验步骤: 1.首先给PC1主机配置ip地址和网关(gateway) -- ...

  4. Java进阶知识03 Hibernate的基础配置详解

    1.Hibernate的原理/流程步骤 1.通过Configuration().configure(); 读取并解析hibernate.cfg.xml配置文件,并创建一个configuration对象 ...

  5. Plx9030通讯卡驱动开发与接口封装

    在学校的时候,曾经采用DDK+Driverstudio+VC6.0环境做过9054视频采集卡的驱动开发,回想起调试过程,记得最清楚的就是过无数次的计算机蓝屏重启....今天第一天来到新公司,老大就说你 ...

  6. linux如何模糊查找一个文件

    在当前目录下搜索指定文件: find . -name test.txt 在当前目录下模糊搜索文件: find . -name '*.txt' 在当前目录下搜索特定属性的文件: find . -amin ...

  7. Java多线程-程序运行堆栈分析

    class文件内容 class文件包含JAVA程序执行的字节码:数据严格按照格式紧凑排列在class文件中的二进制流,中间无任何分隔符:文件开头有一个0xcafebabe(16进制)特殊的一个标志. ...

  8. LeetCode 216. 组合总和 III(Combination Sum III)

    题目描述 找出所有相加之和为 n 的 k 个数的组合.组合中只允许含有 1 - 9 的正整数,并且每种组合中不存在重复的数字. 说明: 所有数字都是正整数. 解集不能包含重复的组合. 示例 1: 输入 ...

  9. SpringMVC——Servlet容器启动时初始化SpringMVC应用的原理

    在 Servlet 3.0标准中含有一个 ServletContainerInitializer接口,所有实现了这个接口的类会在容器启动的时候得到一个通知,并且会调用其 onStartup()方法,这 ...

  10. 4.HadoopMapRe程序设计

    1.介绍 2.基本构架与组件 3.基本算法