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

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

作者头像
运维开发王义杰
发布2023-10-23 20:30:46
3180
发布2023-10-23 20:30:46
举报
文章被收录于专栏:运维开发王义杰

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

准备工作

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

代码语言:javascript
复制
yum install mysql-server

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

代码语言:javascript
复制
systemctl start mysqld
systemctl enable mysqld

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

代码语言:javascript
复制
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
复制
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
复制
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
复制
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
复制
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
复制
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 删除。

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 准备工作
  • 配置GTID复制
  • 初始化数据同步
  • 配置双向复制
  • 总结
相关产品与服务
云数据库 MySQL
腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档