概述:本质上和传统异步复制没什么区别,就是加了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. JavaWeb-SpringSecurity自定义登陆配置

    系列博文 项目已上传至guthub 传送门 JavaWeb-SpringSecurity初认识 传送门 JavaWeb-SpringSecurity在数据库中查询登陆用户 传送门 JavaWeb-Sp ...

  2. docker自动启动容器

    Docker提供了重新启动策略 来控制容器在退出时或Docker重新启动时是否自动启动.重新启动策略可确保以正确的顺序启动链接的容器.Docker建议您使用重新启动策略,并避免使用进程管理器来启动容器 ...

  3. Excel表格写入操作函数 C++

    #pragma once #include <stdio.h> #include <string.h> typedef unsigned short ushort; class ...

  4. Linux 服务器安装jdk,mysql,tomcat简要教程

    linux服务器是阿里云上买的,学生价9.9/月,拿来学习下. 需要准备软件工具: 1.editplus (编辑服务器上的文件) 2.PuTTY (Linux命令连接器) 3.FlashFXP(上传文 ...

  5. linux安装mysql可视化界面

    之前是一直用shell交互界面,但是最近频繁地检查数据库中的数据感觉特别麻烦,便装了一个可视化工具. 安装: $ sudo apt-get install mysql-workbench [sudo] ...

  6. logback条件日志配置

    logback支持条件日志配置,支持在测试环境和正式环境使用不同的参数启用不同的日志配置,从而避免手动修改日志配置文件.项目除了引入logback的包以外,还需要引入构件org.codehaus.ja ...

  7. System.Runtime.CompilerServices.Unsafe

    System.IO.FileNotFoundException: Could not load file or assembly 'System.Runtime.CompilerServices.Un ...

  8. LC 851. Loud and Rich

    In a group of N people (labelled 0, 1, 2, ..., N-1), each person has different amounts of money, and ...

  9. Bootstrap-CSS:目录

    ylbtech-Bootstrap-CSS:目录 1.返回顶部 1.   2. 2.返回顶部   3.返回顶部   4.返回顶部   5.返回顶部 1.   2.   6.返回顶部   7.返回顶部 ...

  10. vue.js-动态绑定class 利用index实现导航

    <template> <div class="stock"> <div class="buin_leftcont nav_ctrl" ...