(1)GTID主从复制

1)环境介绍

/etc/redhat-release
CentOS Linux release 7.3.1611 (Core)

MySQL版本:5.7

mysql> select version();
+------------+
| version() |
+------------+
| 5.7.22-log |
+------------+

2) master端配置

  • 准备数据
mysql>	create database testdb;
mysql> create table testdb.t1(id int,name varchar(50));
mysql> insert into testdb.t1 values(1,'jack'),(2,'alex');
  • 开启二进制日志和配置server-id
#vim /etc/my.cnf
log-bin
server-id=1
gtid_mode=ON
enforce_gtid_consistency=1
  • 重启服务器
#systemctl restart mysqld
  • 创建授权账号
mysql> grant replication slave,replication client on *.* to 'rep'@'192.168.111.%' identified by 'Reprep@123';
mysql> flush privileges;
  • 备份数据库
mysqldump -uroot -pRedhat@123 -A -R --triggers --routines --events  --single-transaction --master-data=1 --flush-logs >$(date +%F)-mysql-all.sql
  • 把备份的数据库文件拷贝到从库主机上
scp -r 2018-04-26-mysql-all.sql root@192.168.111.152:/root
  • 在完整备份后在创建一些数据
mysql> insert into testdb.t1 values(3,'www');
mysql> insert into testdb.t1 values(4,'yyyy');

3)slave端配置

  • 验证主库创建的账号是否能够正常登陆,也验证是否有防火墙问题
# mysql -h192.168.111.151 -urep -p'Reprep@123'
  • 配置从库的server-id和设置从库只读

    注意应用程序连接从库的权限不要给所有权限,只让从库只读
#vim /etc/my.cnf
log-bin
server-id=2
read-only
gtid_mode=ON
enforce_gtid_consistency=1
master-info-repository=TABLE \\把mysql连接主库的信息保存在表中
relay-log-info-repository=TABLE
log_slave_updates = ON
  • 重启数据库
#systemctl restart mysqld
  • 把备份导入到从库上
mysql -uroot -pRedhat@123 </root/2018-04-26-mysql-all.sql
  • 连接主库
mysql> change master to
-> master_host='192.168.111.151', \\生成环境建议使用主机名,不建议使用ip地址
-> master_user='rep',
-> master_password='Reprep@123',
-> master_auto_position=1;
change master to master_host='192.168.111.151',master_user='rep',master_password='Reprep@123',master_auto_position=1;
  • 开启复制和验证状态
mysql> start slave;
mysql> show slave status\G
Slave_IO_Running: Yes
Slave_SQL_Running: Yes

主库上创建数据库:



从库上验证:

(2)GTID主主复制

  • 在master1作为从库上指向master2,注意:master2作为从库之前已经change过master1

    这里的host是master2,不要弄错了;同时生产环境建议不要使用ip
mysql> change master to master_host='192.168.111.152',master_user='rep',master_password='Reprep@123',master_auto_position=1;
mysql> start slave;
mysql>show slave\G
  • master1插入数据
mysql>  insert into testdb.t1 values(10,'aaaa');
  • master2插入数据同时把master2以前是slave的read-only删除
mysql> insert into testdb.t1 values(11,'bbbb');
  • 验证:发现两边master的数据都能正常同步,very good
mysql> select * from testdb.t1;
+------+------+
| id | name |
+------+------+
| 10 | aaaa |
| 11 | bbbb |

(3)GTID多主一从

MySQL5.7中使用的是多源复制

  • 在master1上备份全库,同时把备份文件传给slave1
#mysqldump -uroot -pRedhat@123 -A -R  --triggers --routines --events --single-transaction --master-data=1 --flush-logs > `date +%F`-mysql-all.sql
#scp -r 2018-04-26-mysql-all.sql 192.168.111.153:/root
  • slave配置
#vim /etc/my.cnf
server-id=3
read-only
gtid_mode=ON
enforce_gtid_consistency=1
master-info-repository=TABLE
relay-log-info-repository=TABLE
log_slave_updates = ON
  • 重启数据库
systemctl restart mysqld
  • 导入备份
mysql> reset master;
#mysql -uroot -pRedhat@123 </root/2018-04-26-mysql-all.sql
  • 连接主库
master> change master to master_host='192.168.111.151',master_user='rep',master_password='Reprep@123',master_auto_position=1 for channel 'rep-master1';
master> change master to master_host='192.168.111.152',master_user='rep',master_password='Reprep@123',master_auto_position=1 for channel 'rep-master2';
mysql> start slave;
``

(十四)基于GTID的主从复制的更多相关文章

  1. Mysql5.7实现主从复制、基于GTID的主从复制、并行复制

    (一.主从复制) 一.mysql主从复制原理    mysql的默认复制方式是主从复制.Mysql内建的复制功能是构建大型,高性能应用程序的基础.将Mysql的数据分布到多个系统上去,这种分布的机制, ...

  2. mysql主从之基于gtid的主从复制

    一 GITD介绍 1.1 gtid的含义 Global Transaction Identifier,全局事务标识 阿里云的rds目前已经使用gtid 基于gtid的主从复制原理 每个mysql数据库 ...

  3. percona mysql server5.7基于gtid的主从复制

    配置mysql基于gtid主从复制架构 一.二进制安装mysql [root@node5 data]# --Linux.x86_64.ssl101.tar.gz [root@node5 data]# ...

  4. MySQL5.7.18基于GTID的主从复制过程实现

    GTID是5.6时加入的,在5.7中被进一步完善,生产环境建议在5.7版本中使用.GTID全称为Global Transaction Identifiers,全局事务标识符.GTID的复制完全是基于事 ...

  5. 实现mysql的读写分离(mysql-proxy)____1(mysql的主从复制,基于gtid的主从复制,半同步复制,组复制)

    主从复制原理: 从库生成两个线程,一个I/O线程,一个SQL线程: i/o线程去请求主库 的binlog,并将得到的binlog日志写到relay log(中继日志) 文件中:主库会生成一个 log ...

  6. MySQL5.6基于GTID的主从复制配置

    全局事务标示符(Global Transactions Identifier)是MySQL 5.6复制的一个新特性. GTID实际上是由UUID+TID组成的.其中UUID是一个MySQL实例的唯一标 ...

  7. MySQL5.6:基于GTID的主从复制

    一.GTID简介 MySQL 5.6 的新特性之一,是加入了全局事务 ID (GTID) 来强化数据库的主备一致性,故障恢复,以及容错能力. 什么是GTID? 官方文档:http://dev.mysq ...

  8. redis之(十四)redis的主从复制的原理

    一:redis主从复制的原理,步骤.   第一步:复制初始化 --->从redis启动后,会根据配置,向主redis发送SYNC命令.2.8版本以后,发送PSYNC命令. --->主red ...

  9. mysql5.7.26 基于GTID的主从复制环境搭建

    简单工作原理: (1)从库执行 change master to 语句,会立即将主库信息记录到master.info中 (2)从库执行 start slave语句,会立即生成IO_T和SQL_T (3 ...

随机推荐

  1. 关于aspnet_regsql使用方法

    aspnet_regsql命令解释 说明该向导主要用于配置SQL Server数据库,如membership,profiles等信息,如果要配置SqlCacheDependency,则需要以命令行的方 ...

  2. ui-grid表格怎么实现内容居中

    这次是思想落后了,只关注怎么使用原生的ui-grid样式来实现这一需求,后来发现可以通过此列的cellTemplate来为列指定内容,从而可以使用css调整样式. ps:其实有时候换种思路,豁然开朗. ...

  3. [剑指Offer] 19.顺时针打印矩阵

    [思路]本题关键在于 右->左 和 下->上 两个循环体中的判断条件,即判断是否重复打印. class Solution { public: vector<int> print ...

  4. 【loj6191】「美团 CodeM 复赛」配对游戏 概率期望dp

    题目描述 n次向一个栈中加入0或1中随机1个,如果一次加入0时栈顶元素为1,则将这两个元素弹栈.问最终栈中元素个数的期望是多少. 输入 一行一个正整数 n . 输出 一行一个实数,表示期望剩下的人数, ...

  5. 有用的Java注解

    好处: 能够读懂别人的代码,特别是框架相关的代码: 让编程更加简洁,代码更加清晰. 使用自定义注解解决问题!! Java1.5版本引入. Java中的常见注解 @Override:告诉使用者及编译器, ...

  6. Visio中设置自定义属性的值

    ShapeSheet中User-Define Cells中Prompt格. 帮助解释为:为用户定义的单元格指定说明性提示或注释.应用程序自动将提示文本用引号 (" ") 引起来,以 ...

  7. CF840C On the Bench 解题报告

    CF840C On the Bench 题意翻译 给定\(n\) \((1≤n≤300)\) 个数,求问有多少种排列方案使得任意两个相邻的数之积都不是完全平方数.由于方案数可能很大,输出方案数 \(m ...

  8. 最小k度最小生成树模板

    代码是抄的 题解是瞄的 可我想学习的心是真的嘤嘤嘤 然而 还是上传一份ioi大神的论文吧 链接:https://pan.baidu.com/s/1neIW9QeZEa0hXsUqJTjmeQ 密码:b ...

  9. php windows rename 中文出错

    php windows rename 中文出错 rename()函数可以重命名文件.目录等,但是要注意目的地和起始地址的编码. 比如:我的PHP文件编码是UTF-8,但是在WINDOW系统中中文默认编 ...

  10. 「6月雅礼集训 2017 Day2」B

    [题目大意] 求n*n的棋盘,每行每列都有2个黑格子的方案数. n<=10^7 [题解] zzq的做法好神奇啊 行列建点,二分图 左边有i个点,右边有j个点的方案数 f[i,j] 左边有i个点, ...