文档章节

MySQL 5.7基于GTID的主从复制实践

o
 osc_x4h57ch8
发布于 2018/04/24 11:55
字数 636
阅读 0
收藏 0

精选30+云产品,助力企业轻松上云!>>>

GTID是基于mysql事务实现的,如果对mysql事务没啥概念的话,建议先看看

『浅入深出』MySQL 中事务的实现

不在单独说明如何搭建mysql单点 请参考

使用二进制包安装mysql

然后再看这个gtid的

https://www.hi-linux.com/posts/47176.html

 

现在有这样一个需求:

主1mysql 是个单点的mysql库,库里有很多数据,想给主1增加个从库,并且使用gtid

具体操作可以在https://www.hi-linux.com/posts/47176.html 里寻找

思路如下:

1.备份主1的数据或者拿主1最新的备份(主1已经开启gtid)

 

通过配置文件my.cnf 开启gtid
gtid-mode = ON
enforce-gtid-consistency = ON
log-slave-updates = ON

在线开启gtid 不用重启
mysql> set global gtid_mode='OFF_PERMISSIVE';
Query OK, 0 rows affected (0.01 sec)
mysql> set global gtid_mode='ON_PERMISSIVE';
Query OK, 0 rows affected (0.01 sec)
mysql> set global enforce_gtid_consistency=ON;
Query OK, 0 rows affected (0.00 sec)
mysql> set global gtid_mode='ON';
Query OK, 0 rows affected (0.00 sec)


 查看主库与从库的GTID是否开启

mysql> show variables like "%gtid%";

+----------------------------------+-----------+
| Variable_name                    | Value     |
+----------------------------------+-----------+
| binlog_gtid_simple_recovery      | ON        |
| enforce_gtid_consistency         | ON        |
| gtid_executed_compression_period | 1000      |
| gtid_mode                        | ON        |
| gtid_next                        | AUTOMATIC |
| gtid_owned                       |           |
| gtid_purged                      |           |
| session_track_gtids              | OFF       |
+----------------------------------+-----------+
8 rows in set (0.00 sec)

mysql> show variables like '%gtid_next%';
+---------------+-----------+
| Variable_name | Value     |
+---------------+-----------+
| gtid_next     | AUTOMATIC |
+---------------+-----------+
1 row in set (0.00 sec)

备份常用指令
 /usr/local/mysql/bin/mysqldump --all-databases --single-transaction --master-data=2 --set-gtid-purged=off -F --triggers --routines --events  --user=root -p --socket=/data/mysql3306/logs/mysql.sock > all111_0423.sql
所需命令

 

2.导入从库(从库开启gtid)

3.主1创建授权同步用户

 

在MySQL主服务器上创建
mysql> grant replication slave on *.* to 'repl'@'192.168.2.%' identified by '000000';
mysql> flush privileges;
所需命令

 

4.从库指定主库

CHANGE MASTER TO MASTER_HOST='xxxxx',MASTER_USER='xxxx',MASTER_PASSWORD='xxxx',MASTER_AUTO_POSITION=1;

start slave;

show slave status \G 查看是否两个yes
如果有报错 就去查看errorlog

这里我做的时候出现一个错误
我把root删除了,创建了新的特权用户 结果就报错如下
018-04-24T14:55:06.459876+08:00 25 [ERROR] Slave SQL for channel '': Error 'Operation ALTER USER failed for 'root'@'localhost'' on query. Default database: ''. Query: 'ALTER USER 'root'@'localhost' IDENTIFIED WITH 'mysql_native_password' AS '*FAAFFE644E901CFAFAEC7562415E5FAEC243B8B2'', Error_code: 1396
然后我把root加回来后 就可以了

 

好处就是 不用再关心日志的位置,gtid会自己去寻找位置进行同步,多省心。

 

还有个需求

从库需要切换主库

1.首先查看主库的binlog日志 是否全完整,是否连续

因为从库从主库同步的时候,得利用binlog日志,日志都没了,从库咋同步

如果确定日志全呢  直接进行上边的 步骤3和4即可

否则 按照上边的流程 重新来一遍

 

o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。

暂无文章

Spring Cloud开发人员如何解决服务冲突和实例乱窜?(IP实现方案)

点击上方“陶陶技术笔记”关注我 回复“资料”获取作者整理的大量学习资料! 一、背景 在我上一篇文章《Spring Cloud开发人员如何解决服务冲突和实例乱窜?》中提到使用服务的元数据来实现隔...

zlt2000
2019/09/06
0
0
Linux下diff命令用法详解

大家好,我是良许。 我们在平时工作的时候,经常要知道两个文件之间,以及同个文件不同版本之间有何异同点。在 Windows 下,有 beyond compare 这个好用的工具,而在 Linux 下,也有很多很强...

osc_th8jvcw7
40分钟前
7
0
万变不离其宗之UART要点总结

[导读] 单片机开发串口是应用最为广泛的通信接口,也是最为简单的通信接口之一,但是其中的一些要点你是否明了呢?来看看本人对串口的一些总结,当然这个总结并不能面面俱到,只是将个人认为...

osc_kyehmyzk
41分钟前
7
0
kafka的认识、安装与配置

认识Kafka 花费越少的精力在数据移动上,就能越专注于核心业务 --- 《Kafka:The Definitive Guide》 认识 Kafka 之前,先了解一下发布与订阅消息系统:消息的发送者不会直接把消息发送给接收...

osc_wy8nhxhn
43分钟前
0
0
使用pandas进行数据处理——DataFrame篇

  今天是pandas数据处理专题的第二篇文章,我们一起来聊聊pandas当中最重要的数据结构——DataFrame。   上一篇文章当中我们介绍了Series的用法,也提到了Series相当于一个一维的数组,只...

开源仔
43分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部