19.9 复制顾问

本节介绍 Replication Advisors。

禁用二进制日志校验和

MySQL 服务器写入和读取的二进制日志现在是崩溃安全的,因为只有完整的事件(或事务)才会被记录或回读。默认情况下,服务器会记录事件的长度以及事件本身,并使用此信息来验证事件是否已正确写入。

您还可以通过设置系统变量使服务器使用 CRC32 校验和为事件写入校验和 binlog_checksum,从而为日志和复制过程增加额外的安全级别。要使服务器从二进制日志中读取校验和,请使用 master_verify_checksum系统变量。系统 slave_sql_verify_checksum 变量导致从 SQL 线程从中继日志中读取校验和。

默认频率06:00:00

默认自动关闭启用

二进制日志文件计数超过指定限制

二进制日志捕获发生的 DML、DDL 和安全更改,并以二进制格式存储这些更改。二进制日志支持复制和时间点恢复,防止在灾难恢复情况下丢失数据。它还使您能够查看对数据库所做的所有更改。但是,二进制日志会消耗磁盘空间和文件系统资源,并且可以在连接到该主服务器的从服务器不再需要它们并且备份它们之后将其从生产服务器中删除。

默认频率06:00:00

默认自动关闭是否启用

基于二进制日志行的图像过多

从 MySQL Server 5.6 开始,基于行的复制现在支持行图像控制。通过仅记录为每行更改(而不是所有列)唯一标识和执行更改所需的那些列,可以节省磁盘空间、网络资源和内存使用量。binlog_row_image您可以通过将服务器系统变量设置为minimal(仅记录所需列)、full(记录所有列)或 noblob(记录除不需要的 BLOB 或 TEXT 列之外的 所有列)之一来确定记录完整行还是最少行 。

默认频率06:00:00

默认自动关闭启用

二进制日志空间超过指定限制

二进制日志是一组文件,其中包含有关 MySQL 服务器所做的数据修改的信息。它支持复制和时间点恢复,防止在灾难恢复情况下丢失数据。它还使您能够查看对数据库所做的所有更改。

但是,二进制日志会占用大量磁盘空间,应该从生产服务器中删除,以便在连接到该主服务器的从服务器不再需要它们并备份它们后释放空间。

默认频率06:00:00

默认自动关闭是否启用

复制配置顾问

分析复制拓扑中源和副本的配置,并在检测到配置问题时发出警报:

Master 在读取二进制日志时不验证校验和

MySQL 服务器写入和读取的二进制日志现在是崩溃安全的,因为只记录或回读完整的事件或事务。默认情况下,服务器会记录事件的长度以及事件本身,并使用此信息来验证事件是否已正确写入。

您还可以通过设置系统变量使服务器使用 CRC32 校验和为事件写入校验和 binlog_checksum,从而为日志和复制过程增加额外的安全级别。要使服务器从二进制日志中读取校验和,请使用 master_verify_checksum系统变量。系统 slave_sql_verify_checksum 变量导致从 SQL 线程从中继日志中读取校验和。

默认频率06:00:00

默认自动关闭启用

复制状态顾问

监视从属复制状态并在复制停止或以某种方式受到损害时发出警报,例如,其中一个从属线程已停止,显示最后看到的错误消息,并在可能的情况下提供修复错误的具体建议。

从站检测网络中断太高

从站必须处理网络连接中断,这会影响从站从主站获取最新数据的能力,从而导致复制落后。slave_net_timeout 然而,只有在几秒内没有收到来自主站的数据后,从站才会注意到网络中断。您可能希望减少 slave_net_timeout,以便更快地检测和解决中断和关联的连接重试。此参数的默认值为 3600 秒(1 小时),这对于许多环境来说太高了。

默认频率06:00:00

默认自动关闭是否启用

副本执行位置太落后

当副本从其源接收更新时,I/O 线程将数据存储在称为中继日志的本地文件中。副本的应用程序线程读取中继日志并执行它们包含的更新。如果应用程序线程正在读取的位置远远落后于 I/O 线程当前正在写入的位置,则表明复制落后并且针对副本的查询结果可能无法反映所做的最新更改在源头上。

启用以下阈值的定义:

  • Same File Position Thresholds:如果 applier 线程读取位置和 I/O 线程写入位置差异大于配置的阈值并且正在读取/写入同一文件,则会生成警报。

  • 不同的文件位置阈值:如果应用程序线程读取位置大于配置的阈值并且 I/O 线程正在写入不同的文件,则会生成警报。

默认频率00:05:00

默认自动关闭是否启用

复制太落后

如果副本落后于源太远,则针对副本的查询结果可能无法反映对源所做的最新更改。

默认频率00:01:00

默认自动关闭启用

从属具有不适当权限的登录帐户

更改和删除从站上的表可能会破坏复制。除非从服务器还托管非复制表,否则不需要具有这些权限的帐户。作为替代方案,您应该设置read_only标志 ON,以便服务器不允许更新,除非具有SUPER 特权的用户或从属线程执行的更新除外。

默认频率06:00:00

默认自动关闭是否启用

从站未配置为只读

对从站的任意或意外更新可能会破坏复制或导致从站与其主站不一致。创建一个从read_only服务器可以用来确保从服务器只接受来自其主服务器而不是来自客户端的更新;它最大限度地减少了意外更新的可能性。

默认频率06:00:00

默认自动关闭是否启用

从中继日志读取时从站不验证校验和

MySQL 服务器写入和读取的二进制日志现在是崩溃安全的,因为只有完整的事件(或事务)才会被记录或回读。默认情况下,服务器会记录事件的长度以及事件本身,并使用此信息来验证事件是否已正确写入。

您还可以通过设置系统变量使服务器使用 CRC32 校验和为事件写入校验和 binlog_checksum,从而为日志和复制过程增加额外的安全级别。要使服务器从二进制日志中读取校验和,请使用 master_verify_checksum系统变量。系统 slave_sql_verify_checksum 变量导致从 SQL 线程从中继日志中读取校验和。

默认频率06:00:00

默认自动关闭启用

中继日志空间很大

当从服务器从其主服务器接收到更新时,I/O 线程将数据存储在称为中继日志的本地文件中。从服务器的 SQL 线程读取中继日志并执行它们包含的更新。在 SQL 线程执行完中继日志中的所有更新后,不再需要该文件,可以将其删除以节省磁盘空间。

默认频率06:00:00

默认自动关闭是否启用

从站中继日志未自动清除

当从服务器从其主服务器接收到更新时,I/O 线程将数据存储在称为中继日志的本地文件中。从服务器的 SQL 线程读取中继日志并执行它们包含的更新。在 SQL 线程执行完中继日志中的所有更新后,不再需要该文件,可以将其删除以节省磁盘空间。

默认频率06:00:00

默认自动关闭是否启用

从 SQL 处理不是多线程的

从 MySQL 服务器版本 5.6 开始,复制现在支持在从属服务器上使用多线程并行执行事务。当启用并行执行时,从属 SQL 线程充当许多从属工作线程的协调器,由 slave_parallel_workers服务器系统变量的值确定。

slave 上多线程的当前实现假定数据和更新在每个数据库的基础上进行分区,并且给定数据库内的更新以与在 master 上相同的相对顺序发生。但是,没有必要协调不同数据库之间的事务。然后事务也可以按数据库分布,这意味着从属服务器上的工作线程可以处理给定数据库上的连续事务,而无需等待对其他数据库的更新完成。

不同数据库上的事务在从服务器上的发生顺序可能与在主服务器上的顺序不同,简单地检查最近执行的事务并不能保证主服务器上的所有先前事务都已在从服务器上执行。这对使用多线程从站时的日志记录和恢复有影响。

最后,请注意从 MySQL Server 5.7.2 开始,还支持模式内并行化 (LOGICAL_CLOCK)。有关slave-parallel-type详细信息,请参阅。

默认频率06:00:00

默认自动关闭启用

没有复制从属帐户的从属

如果 master 发生故障,您可能希望使用其中一个 slave 作为新的 master。必须存在具有特权的帐户 REPLICATION SLAVE才能使服务器充当复制主服务器(以便从服务器可以连接到它),因此最好在您的从服务器上创建此帐户以准备它在需要时接管主服务器。

默认频率06:00:00

默认自动关闭是否启用