千家信息网

5:使用GTID进行复制

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,服务器 192.168.1.1(master) 192.168.1.2(slave)同步服务器,只有当已经在复制但不使用gtid的服务器时才需要此步骤,,对于新服务器,请继续执行步骤5。将每个服务器上
千家信息网最后更新 2026年10月31日5:使用GTID进行复制
  1. 服务器 192.168.1.1(master) 192.168.1.2(slave)
  2. 同步服务器,只有当已经在复制但不使用gtid的服务器时才需要此步骤,,对于新服务器,请继续执行步骤5。将每个服务器上的read_only系统变量设置为ON,使服务器成为只读的,方法是发出以下命令:
    • 分别在master和slave上
    • mysql> SET @@global.read_only = ON;
    • Query OK, 0 rows affected (0.00 sec)
  3. 等待所有正在进行的事务提交或回滚。然后,让slave赶上master。在继续之前,确保slave已经处理了所有更新,这一点非常重要
  4. 将master和slave上面的mysql服务都停止
    • [root@iz2ze3bc56k6c4f3rsiahvz ~]# service mysqld stop
    • Redirecting to /bin/systemctl stop mysqld.service
    • #查看是否停止掉了
    • [root@iz2ze3bc56k6c4f3rsiahvz ~]# ps -ef | grep mysql
    • root 31143 30584 0 23:09 pts/0 00:00:00 grep --color=auto mysql
    • #确实停掉了
  5. 启用两台服务器并开启 GTIDs。要启用基于GTID的复制,必须在启用GTID模式的情况下启动每个服务器,方法是将gtid_mode变量设置为ON,并启用enforce_gtid_consistency变量以确保仅记录对基于GTID的复制安全的语句。此外,在配置slave设置之前,您应该使用-skip-slave-start 选项启动slaves。为什么需要指定--skip-slave-start,因为指定了--skip-slave-start的话,那么mysql启动的时候复制就不会启动。由于在MySQL 5.7.5中添加了mysql.gtid_executed表,因此为了使用GTIDs启用二进制日志记录不是必须的。这意味着您可以使用GTIDs但没有二进制日志记录的slave服务器。Masters必须始终启用二进制日志记录,以便能够复制。
    • 基于上面的讲述,我们需要针对master和slave进行不同的配置,下面我就贴上master和slave的配置图
    • master配置
      • 参数解释
        • log-bin 表示开启二进制日志
        • server_id 这是唯一的,用来区分服务器,在复制拓扑结构中,不能出现相同的server_id
        • gtid_mode 表示开启GTID
        • enforce_gtid_consistency 确保仅记录对基于GTID的复制安全的语句
    • slave配置
      • 参数解释(相同参数的解释请参考上面)
        • skip-slave-start 指定了--skip-slave-start的话,那么mysql启动的时候复制就不会启动
    • 然后启动master和slave的mysql,这时候可以将master的只读模式给禁用了
  6. 配置slave以使用基于GTID的自动定位。告诉slave使用具有基于GTID的事务的master作为复制数据源,并使用基于GTID的自动定位而不是基于文件的定位。在slave上发出CHANGE MASTER TO语句,包括语句中的MASTER_AUTO_POSITION选项,告诉slave对应master的事务是由GTID识别的。MASTER_LOG_FILE选项和MASTER_LOG_POS选项都不能与MASTER_AUTO_POSITION设置为1一起使用,尝试这样做会导致CHANGE MASTER TO语句失败并显示错误。
    • 在master上
      • #创建复制账号
      • mysql> CREATE USER 'wangwu'@'%' IDENTIFIED BY 'Wangwu@123456';
      • Query OK, 0 rows affected (0.00 sec)
      • mysql> GRANT REPLICATION SLAVE ON . TO 'wangwu'@'%';
      • Query OK, 0 rows affected (0.01 sec)
      • #创建后一定要远程登录一下账号,验证一下是否能登录
    • 在slave上
      • 发出CHANGE MASTER TO
      • mysql> CHANGE MASTER TO MASTER_HOST='192.168.1.1' ,MASTER_USER = 'wangwu',MASTER_PASSWORD = 'Wangwu@123456', MASTER_AUTO_POSITION = 1;
      • Query OK, 0 rows affected, 2 warnings (0.01 sec)
      • 参数讲解
        • MASTER_HOST master的ip地址
        • MASTER_USER master的复制用户名
        • MASTER_PASSWORD master的复制用户的密码
        • MASTER_AUTO_POSITION 当将MASTER_AUTO_POSITION = 1与CHANGE MASTER TO一起使用时,slave尝试使用基于gtid的复制协议连接到master。
  7. 进行一个新的备份
    • 由于您已启用GTID,因此在启用GTIDs之前创建的现有备份现在无法在这些服务器上使用。。此时进行一个新的备份,这样您就不会没有一个可用的备份。
  8. 在slave上
    • 启动复制
    • mysql> start slave;
    • Query OK, 0 rows affected (0.00 sec)
    • #查看是否连接上了master
    • mysql> show slave status\G
    • 看到了两个YES,那就说明没问题了
    • 禁用只读模式
    • 仅当您在步骤2中将服务器配置为只读时,才需要执行以下步骤。要允许服务器再次开始接受更新,请发出以下语句:
    • mysql> SET @@global.read_only = OFF;
    • Query OK, 0 rows affected (0.00 sec)
  9. 在master上面添加一些数据,然后在slave中是否能看到,如果能看到就说明没问题,如果看不到,就及时查看slave的错误日志

参考资料:https://dev.mysql.com/doc/refman/5.7/en/replication-gtids-howto.html

PREV:4:GTID简单介绍 https://blog.51cto.com/itzhoujun/2352688
NEXT: 6:多源复制的实现 https://blog.51cto.com/itzhoujun/2353940

服务 服务器 配置 语句 日志 二进制 参数 备份 步骤 事务 变量 模式 定位 解释 相同 安全 数据 方法 时候 用户 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 智能科技公司是互联网公司吗 互联网下的科技发展 中国互联网科技发展 华中科技大学互联网 美国互联网黑科技 易通互联网络科技有限公司 广州善班互联网科技 互联网金融 科技创新 新华互联网科技2019 互联网金融科技公司干啥的 华服互联网科技官网 世界互联网科技公司市值排名 湖南一路畅行互联网科技 健康食品互联网创新科技园项目 特约风豹互联网科技为什么扣费 山东星卡互联网科技有限公司官网 广州有谷有贝互联网科技有限公司 广州梦谷互联网科技有限公司领导 互联网科技接地气 数字科技和互联网金融哪个好 互联网科技作文 融势互联网科技 深圳天众互联网科技公司 湖南洣水互联网科技有限公司扣款 重庆威客帮互联网科技 乌鲁木齐新华智原互联网科技学校 华夏恒生科技与互联网科技 翼展科技 首家互联网医院 互联网领先科技宣传片 互联网硬科技公司
0