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

  • 前言
  • 配置大框架
  • 配置复制主服务器(master)
  • 配置复制从属服务器(slave)
  • 复制过滤规则
  • 感谢

前言

关于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- 过滤器应用

感谢

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

你可能感兴趣的:(mysql,数据库)