千家信息网

5:使用GTID进行复制

发表于:2024-11-30 作者:千家信息网编辑
千家信息网最后更新 2024年11月30日,服务器 192.168.1.1(master) 192.168.1.2(slave)同步服务器,只有当已经在复制但不使用gtid的服务器时才需要此步骤,,对于新服务器,请继续执行步骤5。将每个服务器上
千家信息网最后更新 2024年11月30日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安全错误 数据库的锁怎样保障安全 怀旧服联盟选择什么服务器 布鲁转服都转那个服务器去了 宝盈人工智能和富国互联网科技 3d模型软件开发现状 联想电视机网络无法连接到服务器 网络技术逆向学习法 阿里云服务器登录直播源码 答辩问题关于 数据库的 首席网络安全官和联络员 vnr数据库没有网络 计算机网络技术是什么系别 连接上数据库进行表创建 苹果笔记本服务器放到桌面 甘肃省中小学网络技术培训 公司起诉软件开发人员 msde数据库ip 计算机网络技术应用和发展 网络安全法安全监管机构 江苏高密度服务器虚拟主机 游戏服务器被关闭怎么办 电脑老是显示服务器被限制 宿迁工业网络技术供应商家 网络安全的收藏 软件开发的付款进度表 安徽芜湖软件开发培训怎么选 数据库监控哪家的好一些 高校网络安全教育宣传 mysql数据库平均值如何计算 快速找到两列相同的数据库 我的世界服务器权限
0