- 前言
- 配置大框架
- 配置复制主服务器(master)
- 配置复制从属服务器(slave)
- 复制过滤规则
- 感谢
前言
关于MySQL中的复制技术相关内容,可以看看这些文章:
【MySQL】MySQL中的复制技术是什么?它有哪些组成部分?
【MySQL】怎么理解复制技术中的复制冲突(Replication Conflicts)?什么时候使用复制技术?
【MySQL】MySQL中的二进制日志,它有哪些格式?
配置大框架
- 根据业务,规划并绘制复制拓扑图。
- 标识参与复制的所有服务器,包括它们之间的主从关系。注意一个主服务器如果也从另一个主服务器复制,那么这个主服务器也是复制从属服务器。
- 为每个服务器配置唯一的 server-id。server-id是默认值为1的无符号 32 位整数。
- 配置每个主服务器
- 配置每个复制从属服务器以连接到主服务器
- 使用 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- 过滤器应用
感谢
好啦,这次的分享就到这里,感谢大家看到这里