前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >MySQL:探究基于GTID的双向复制系统部署

MySQL:探究基于GTID的双向复制系统部署

作者头像
运维开发王义杰
发布于 2023-10-23 12:30:46
发布于 2023-10-23 12:30:46
34500
代码可运行
举报
运行总次数:0
代码可运行

云计算技术日益成熟的今天,为了确保数据的高可用性和一致性,数据库的复制技术成了不可或缺的一环。MySQL作为一种广泛使用的关系数据库管理系统,其提供了基于全局事务标识符(GTID)的二进制日志(Binlog)双向复制功能,使得数据库在不同节点间的数据同步成为可能。本文将通过在腾讯云上创建的两个TencentOS Server 3.1虚拟机,深入探讨如何部署并测试基于GTID的MySQL双向复制系统。

准备工作

首先,我们在腾讯云上创建了两个TencentOS Server 3.1的虚拟机,并在每个节点上安装了MySQL服务器。安装过程非常简单,仅需通过YUM包管理器执行如下命令:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
yum install mysql-server

安装完成后,我们启动MySQL服务,并设置为开机自启动:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
systemctl start mysqld
systemctl enable mysqld

接下来,为了保障系统的安全,我们修改了root用户的密码,并创建了一个能从任何主机连接到数据库的root用户,同时授予了该用户所有权限:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
alter user root@`localhost` identified by 'root-123';
create user root@`%` identified by 'root-123';
grant all privileges on *.* to root@`%`;
flush privileges;

配置GTID复制

在MySQL中,GTID是一个全局唯一的标识符,用于跟踪提交的事务。通过GTID,我们能确保在复制过程中每个事务只会被执行一次,从而确保数据的一致性。

在第一个节点上,我们进行了如下配置,以启用GTID并为该节点分配了一个唯一的服务器ID:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
set persist server_id=1;
set PERSIST gtid_mode=OFF_PERMISSIVE;
set PERSIST gtid_mode=ON_PERMISSIVE;
set PERSIST enforce_gtid_consistency=ON;
set PERSIST gtid_mode=ON;

在第二个节点上,我们进行了类似的配置,不过为其分配了一个不同的服务器ID:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
set persist server_id=2;
set PERSIST gtid_mode=OFF_PERMISSIVE;
set PERSIST gtid_mode=ON_PERMISSIVE;
set PERSIST enforce_gtid_consistency=ON;
set PERSIST gtid_mode=ON;

这样,两个节点的基本配置就完成了,接下来我们将着手进行双向复制的配置。

初始化数据同步

在配置双向复制之前,我们需要确保两个节点上的数据是一致的。为此,我们在第二个节点上创建了一个数据的备份,然后将该备份导入到第一个节点上:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mysqldump -h 10.206.16.5 -u root -proot-123 --all-databases --source-data > master.db
mysql -u root -proot-123 -e "source master.db"

配置双向复制

现在,我们开始配置双向复制。首先,在第二个节点上,我们指定了第一个节点作为其复制源,并启动了复制进程:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mysql -u root -proot-123 -e "CHANGE REPLICATION SOURCE TO SOURCE_HOST = '10.206.16.5',
   SOURCE_PORT = 3306,
   SOURCE_USER = 'root',
   SOURCE_PASSWORD = 'root-123',
   SOURCE_AUTO_POSITION = 1;"

mysql -u root -proot-123 -e "start replica;"

同样,在第一个节点上,我们指定了第二个节点作为其复制源,并启动了复制进程:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mysql -u root -proot-123 -e "CHANGE REPLICATION SOURCE TO SOURCE_HOST = '10.206.16.6',
   SOURCE_PORT = 3306,
   SOURCE_USER = 'root',
   SOURCE_PASSWORD = 'root-123',
   SOURCE_AUTO_POSITION = 1;"
mysql -u root -proot-123 -e "start replica;"

至此,基于GTID的MySQL双向复制系统配置完成。我们现在可以通过在任一节点上插入、更新或删除数据,然后观察另一节点上数据是否得到了相应的更新,以验证复制系统的正确性和高效性。

总结

通过在腾讯云上创建的两个虚拟机的实验,我们成功地部署并测试了基于GTID的MySQL双向复制系统。这种复制系统能确保数据在不同节点间的高效同步,为构建高可用、高一致性的数据库系统提供了强有力的支持。在未来的项目实施中,我们会进一步探讨如何优化复制性能,以及如何处理可能出现的各种问题,以期提供更为稳定、高效的数据库解决方案

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-10-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 运维开发王义杰 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
MySQL传统点位复制在线转为GTID模式复制
MySQL传统点位复制在5.7版本前是主要的主从复制模式,而随着MySQL5.6版本引入GTID,并且MySQL5.7进行各方面的优化以后,在mySQL5.7(尤其是MySQL5.7.6)版本后GTID模式的主从复制方式成为一个新的选择方式。要使用GTID模式,首先也需知其优缺点,其主要的优缺点如下:
俊才
2019/11/18
2K0
MySQL传统点位复制在线转为GTID模式复制
配置MySQL GTID 主从复制
GTID是一个基于原始mysql服务器生成的一个已经被成功执行的全局事务ID,它由服务器ID以及事务ID组合而成。这个全局事务ID不仅仅在原始服务器器上唯一,在所有存在主从关系 的mysql服务器上也是唯一的。正是因为这样一个特性使得mysql的主从复制变得更加简单,以及数据库一致性更可靠。本文主要描述了快速配置一个基于GTID的主从复制架构,供大家参考。 一、GTID的概念 1、全局事务标识:global transaction identifiers。 2、GTID是一个事务一一对应,并且全局唯一
Leshami
2018/08/13
4.6K0
MySQL主从复制---偏移量改为GTID
今天上午,做了一个比较有意思的操作,之前一直没有做过,就是把一套比较老的主从复制环境从基于偏移量的复制方式改为了基于GTID的复制方式,这里记录一下过程,如果大家有这方面的需求,可以参考一下:
AsiaYe
2019/11/06
3.6K0
技术分享 | MySQL 在线开启 GTID 的每个阶段是要做什么
而基于 GTID 的方式在一主多从的架构下主从切换有着明显优势外,对于日常复制异常的故障诊断也更为方便,在日常运维或 MySQL 升级过程中我们免不了要做 GTID 的开启或关闭,从个人角度而言,我也更倾向于大家做在线开启或关闭 GTID 的操作,一方面该操作能尽可能小的影响数据库停机时间,另一方面在开启或关闭的过程中也顺便可以验证该参数的调整是否会对应用造成影响,从 MySQL 5.7.6 之后便开始支持动态开启和关闭 GTID 模式,其参数 GTID_MODE 有以下取值
爱可生开源社区
2022/02/09
5740
技术分享 | MySQL 在线开启 GTID 的每个阶段是要做什么
Mysql8.4基于GTID主从部署以及故障修复
MySQL 8.4是一个稳定和高性能的关系型数据库管理系统,支持各种操作系统平台,包括Linux、Windows和macOS。部署MySQL 8.4通常包括安装、配置、优化和测试等步骤
DBA实战
2024/09/26
5620
Mysql8.4基于GTID主从部署以及故障修复
技术分享 | 需要小心配置的 gtid_mode
数据库中的 gtid 参数:gtid_mode=OFF_PERMISSIVE(接管后数据库重启过)
爱可生开源社区
2022/07/26
7890
MySQL 在线开启/关闭GTID
MySQL DBA大都熟悉 MySQL 5.6版本开始提供基于 GTID模式的主从复制,该特性简化复制和降低主从复制维护的难度,提高复制的可运维性,不再依赖binlog文件名和文件中的位置。 但是它有很多限制,5.7版本MySQL支持对GTID做了如下改进:
用户1278550
2019/04/25
10.1K0
MySQL 8 复制(五)——配置GTID复制
上篇解释了许多GTID的原理,以及在MySQL复制中所起的作用,并且进行了很多实验加以辅助说明。本篇演示如何从头开始一步步配置GTID复制。实验环境同https://wxy0327.blog.csdn.net/article/details/90081518#%E4%BA%8C%E3%80%81%E5%A4%8D%E5%88%B6%E5%AE%9E%E9%AA%8C%E7%8E%AF%E5%A2%83。这里只讨论在联机情况下进行配置,因为相对于空库或脱机等理想情况,联机配置复制的需求更为典型和常见。
用户1148526
2019/07/02
4.6K0
MySQL 8 复制(五)——配置GTID复制
MySQL GTID全局事物标识
(1)全局事物标识:global transaction identifieds。
Power
2025/03/01
1980
深入理解 MySQL 5.7 GTID 系列(三):GTID的生成时机
其中AUTOMATIC_GROUP通常用于主库开启GTID的情况,GTID_GROUP通常用于备库和使用了GTID_NEXT的情况下。
wubx
2019/02/27
9240
MySQL8 GTID双主配置
ianzhi
2023/10/19
4690
关于 MySQL GTID 复制
MySQL5.7以后都基本用GTID方式复制了,相对于binlog和position号方式,在failover时候减少很多人工切换操作
星哥玩云
2022/08/18
4430
Mysql主从复制
Mysql主从复制也可以称为Mysql主从同步,它是构建数据库高可用集群架构的基础。它通过将一台主机的数据复制到其他一台或者多台主机上,并重新应用日志(realy log)中的SQL语句来实现复制功能。Mysql支持单向,双向,链式级联,异步复制,复制过程中一台服务器充当主库(master),而一个或者多个服务器充当从库(slave)
mikelLam
2022/10/31
1.4K0
MySQL 8.0 与 8.4 主主同步
MySQL 8.4 是 MySQL 8 系列的持续更新,虽然没有完全不同于 8.0 的架构变动,但它在稳定性和性能方面提供了增强和改进。
晓松
2024/12/23
4000
MySQL 8.0 与 8.4 主主同步
传统复制在线变更为GTID复制
1.在所有数据库上执行SET @@GLOBAL.ENFORCE_GTID_CONSISTENCY = WARN;
wangwei-dba
2021/06/17
3650
【Mysql】5.7不停机:传统复制-gtid复制
系统:centos7 主库:192.168.225.128:3307 从库1:192.168.225.129:3307 主从复制传统复制已配置完毕
用户5522200
2019/06/02
9550
MGR单主模式部署
官网地址:https://dev.mysql.com/downloads/mysql/
lee_yanyi
2021/05/08
6020
MySQL组复制(MGR)全解析 Part 4 MGR单主模式部署前准备
在MySQL 8.0.16之前如果禁用MyISAM时使用mysql_upgrade命令会报错,如果需要可以首先启用MyISAM后再运行
bsbforever
2020/08/18
7300
MySQL组复制(MGR)全解析  Part 4 MGR单主模式部署前准备
GTID,你了解多少?
全局事务标识符(Global Transaction Identifier,GTID)是MySQL5.6版本开始在主从复制方面推出的重要特性,它是一个已提交事务的编号,并且是全局唯一编号,不仅是在主库上,在给定的复制设置中的所有数据库上,它都是唯一的。
MySQL数据库技术栈
2020/08/05
2.2K0
GTID,你了解多少?
MySQL在线开启 GTID
GTID 是 MySQL 5.6 的新特性,可简化 MySQL 的主从切换以及 Failover。但是当我们开启 binlog 时,MySQL 并没有默认开启 GTID ,好在 GTID 可以在线开启,本篇文章我们一起来看下如何在线开启 GTID ,如果你的数据库实例原来未启用 GTID ,可以参考本篇文章来开启 GTID 。
MySQL技术
2022/11/22
3.6K0
相关推荐
MySQL传统点位复制在线转为GTID模式复制
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验