• 【MySQL】如何配置复制拓扑?


    前言

    关于MySQL中的复制技术相关内容,可以看看这些文章:
    【MySQL】MySQL中的复制技术是什么?它有哪些组成部分?
    【MySQL】怎么理解复制技术中的复制冲突(Replication Conflicts)?什么时候使用复制技术?
    【MySQL】MySQL中的二进制日志,它有哪些格式?

    配置大框架

    1. 根据业务,规划并绘制复制拓扑图。
    2. 标识参与复制的所有服务器,包括它们之间的主从关系。注意一个主服务器如果也从另一个主服务器复制,那么这个主服务器也是复制从属服务器。
    3. 为每个服务器配置唯一的 server-id。server-id是默认值为1的无符号 32 位整数。
    4. 配置每个主服务器
    5. 配置每个复制从属服务器以连接到主服务器
    6. 使用 START SLAVE 在每个复制从属服务器上启动复制

    下面我们分别来看下如何配置复制主服务器和复制从属服务器:

    配置复制主服务器(master)

    • 启用 TCP/IP 网络。各服务器之间通过网路通信。
    • 启用二进制日志。在复制过程中,每个主服务器将其日志内容发送到每个从属服务器。
    • 创建具有 REPLICATION SLAVE 权限的用户(最小权限原则)。在有多个从属服务器的主服务器上,在主机名中指定通配符可以匹配所有从站,或者创建多个用户。
      示例:CREATE USER user@slave_hostname IDENTIFIED BY 'password'; GRANT REPLICATION SLAVE ON *.* TO user@slave_hostname;
    • 备份主数据库作为从属服务器开始复制的起点。在启动复制之前要备份主服务器上的数据库,因为此时从属服务器上的数据库是空的,要先将备份应用到从属服务器上,保证主服务器和从属服务器的数据一致性。
      • 若使用 mysqldump 执行备份,那么可以用–master-data=2 选项自动在转储文件中加入change master to 这个语句,这条语句能让导入该主库备份的服务器变为从属服务器。不过这个语句默认加上了注释符,如果需要使用,就手动去掉注释符。
    • 使用日志坐标或GTID标识记录。
      • 在集群中必须使用GTID。GTID是全局事务标识符。能够唯一标识复制拓扑中的每个事务。它是一种更方便的日志定位技术。它由执行事务的服务器的UUID和事务的顺序编号组成。比如 0ed18583-47fd-11e2-92f3-0019b944b7f7:338 冒号前面是执行事务的服务器的UUID,冒号后面是事务的编号。

    配置复制从属服务器(slave)

    • 从主服务器备份恢复。
      • 如果使用 GTID,则验证是否设置了 gtid_purged 变量。
    • 使用CHANGE MASTER TO语句配置从属服务器。在每个从属服务器上执行CHANGE MASTER TO语句,该语句用于配置从属服务器以连接到主服务器并开始复制。以下是一些常见的配置选项:
      • 主服务器的网络位置:使用MASTER_HOST和MASTER_PORT指定主服务器的主机名和端口。
      • 复制帐户用户名和口令:使用MASTER_USER和MASTER_PASSWORD指定具有REPLICATION SLAVE权限的帐户的用户名和口令。这个账户就是之前在主服务器上创建的账户。
      • 开始复制的二进制日志坐标:如果不使用GTID,使用MASTER_LOG_FILE和MASTER_LOG_POS指定从属服务器开始复制的二进制日志文件和位置。如果使用GTID,可以指定MASTER_AUTO_POSITION=1来自动获取复制位置。

    复制过滤规则

    BLACKHOLE存储引擎可以过滤数据,不过它是表级别的。另一种控制复制内容的方法是使用复制过滤规则。它既可以在数据库级别,也可以在表级别。
    MySQL提供了复制过滤规则,通过这些规则,我们可以控制复制的范围,以确保只复制需要的数据到从属服务器。复制过滤规则可以应用于主服务器(用于写入二进制日志)或从属服务器(用于读取中继日志)。
    过滤器是应用于主服务器或从属服务器的服务器选项。

    • 主服务器写入二进制日志时应用 binlog-* 过滤器
    • 从属服务器读取中继日志时应用 replicate-* 过滤器

    应用过滤器时考虑优先规则:
    – 数据库过滤器优先于表过滤器应用
    – 表通配符过滤器 -wild- 在不使用通配符的那些过滤器之后应用
    -do- 过滤器先于各个 -ignore- 过滤器应用

    感谢 💖

    好啦,这次的分享就到这里,感谢大家看到这里🤞

  • 相关阅读:
    leetcode:87场双周赛总结 = 思维贪心专场
    基于SSM的学生事务处理系统设计与实现
    PHP:foreach结构
    MySQL 数据库查询缓存
    【二叉树】- 层序遍历( js 实现)
    牛客的课程订单分析[分组统计时如何取指定行字段?]
    44、Spring AMQP 数据转换器
    数据平滑和离群值检测
    【深度学习】最大熵马尔科夫、CRF、条件随机场、最大匹配法
    服务器防漏扫,主机加固方案来解决
  • 原文地址:https://blog.csdn.net/m0_60511809/article/details/133316462