• 复制从站的启动选项
• 从站状态记录到表的选项
• 过时的复制从站选项
• 复制从站上使用的系统变量
在 命令行或选项文件中指定 选项。可以使用以下CHANGE MASTER TO语句在服务器运行时设置许多选项 。使用指定系统变量值 SET。
服务器ID。 在主服务器和每个从属服务器上,必须设置 server_id系统变量以在1到2 32 − 1 的范围内建立唯一的复制ID 。“ Unique ” 表示每个ID必须与其他任何复制使用的其他ID都不同。主或从。示例 my.cnf文件:
[mysqld]
server-id=3
- 复制从站的启动选项
本节说明用于控制复制从属服务器的启动选项。在服务器运行时,可以使用以下CHANGE MASTER TO语句设置许多这些选项 。其他(例如–replicate-*选项)只能在从属服务器启动时进行设置。与复制相关的系统变量将在本节后面讨论。
• --abort-slave-event-count
属性 值
命令行格式 --abort-slave-event-count=#
类型 整数
默认值 0
最低值 0
• 当将此选项设置为value0(默认值)以外的某个正整数时, 它将影响复制行为,如下所示:从属SQL线程启动后,value允许执行日志事件;否则,将执行日志事件。此后,从SQL线程不再接收任何事件,就像断开了来自主服务器的网络连接一样。从属线程继续运行,并且在和 列中都 SHOW SLAVE STATUS显示 了输出 ,但没有从中继日志中读取其他事件。 YesSlave_IO_RunningSlave_SQL_Running
• MySQL测试套件在内部使用此选项进行复制测试和调试。不适用于生产环境。
• --disconnect-slave-event-count
属性 值
命令行格式 --disconnect-slave-event-count=#
类型 整数
默认值 0
• MySQL测试套件在内部使用此选项进行复制测试和调试。
• --log-slow-slave-statements
属性 值
命令行格式 --log-slow-slave-statements[={OFF|ON}] (5.6.10)
已移除 5.6.11
类型 布尔型
默认值 OFF
• 此命令行选项已在MySQL 5.6.11中删除,并由log_slow_slave_statements 系统变量替换 。可以在命令行或选项文件中以与选项相同的方式设置系统变量,因此在服务器启动时不需要进行任何更改,但是系统变量还可以在运行时检查或设置值。
• --log-warnings[=level]
属性 值
命令行格式 --log-warnings[=#]
系统变量 log_warnings
范围 全局
动态 是
类型 整数
默认值 1
最低值 0
最大值(64位平台) 18446744073709551615
最大值(32位平台) 4294967295
• 使服务器在错误日志中记录有关其正在执行的操作的更多消息。关于复制,服务器会生成网络或连接失败后重新连接成功的警告,并提供有关每个从属线程如何启动的信息。默认情况下启用此选项(1);要禁用它,请使用 --log-warnings=0。如果该值大于1,则将中止的连接写入错误日志,并写入新连接尝试的访问被拒绝的错误。请参见 第B.4.2.11节“通信错误和中止的连接”。
• 注意
• 此选项的作用不仅限于复制。它会影响整个服务器活动中的诊断消息。
• --master-info-file=file_name
属性 值
命令行格式 --master-info-file=file_name
类型 文件名
默认值 master.info
• 从属服务器在其中记录有关主服务器的信息的文件使用的名称。默认名称 master.info在数据目录中。有关此文件格式的信息,请参见 第17.2.2.2节“从站状态日志”。
• --master-retry-count=count
属性 值
命令行格式 --master-retry-count=#
不推荐使用 是
类型 整数
默认值 86400
最低值 0
最大值(64位平台) 18446744073709551615
最大值(32位平台) 4294967295
• 从站放弃之前尝试连接到主站的次数。尝试以MASTER_CONNECT_RETRY 该CHANGE MASTER TO语句的选项设置的间隔尝试重新连接(默认为60)。当从属服务器达到其连接超时(由slave_net_timeout系统变量指定)而未从主服务器接收数据时,将触发重新连接尝试 。默认值为86400。值0表示 “ 无限 ”;从站尝试永久连接。
• 该选项已被弃用,并将在以后的MySQL版本中删除。应将应用程序更新为使用语句的 MASTER_RETRY_COUNT选项 CHANGE MASTER TO。
• --max-relay-log-size=size
属性 值
命令行格式 --max-relay-log-size=#
系统变量 max_relay_log_size
范围 全局
动态 是
类型 整数
默认值 0
最低值 0
最大值 1073741824
• 服务器自动旋转中继日志文件的大小。如果该值不为零,则继电器日志的大小超过该值时,它将自动旋转。如果该值为零(默认值),则继电器日志旋转发生的大小由的值确定 max_binlog_size。有关更多信息,请参见第17.2.2.1节“从站中继日志”。
• --relay-log-purge={0|1}
属性 值
命令行格式 --relay-log-purge[={OFF|ON}]
系统变量 relay_log_purge
范围 全局
动态 是
类型 布尔型
默认值 ON
• 不再需要中继日志时,请禁用或启用它们的自动清除。默认值为1(启用)。这是一个全局变量,可以使用进行动态更改。启用该选项时,如果禁用中继日志清除,则 会使数据一致性受到威胁。 SET GLOBAL relay_log_purge = N–relay-log-recovery
• --relay-log-space-limit=size
属性 值
命令行格式 --relay-log-space-limit=#
系统变量 relay_log_space_limit
范围 全局
动态 没有
类型 整数
默认值 0
最低值 0
最大值(64位平台) 18446744073709551615
最大值(32位平台) 4294967295
• 此选项对从站上所有中继日志的总大小(以字节为单位)设置上限。值0表示“ 无限制 ”。这对于磁盘空间有限的从属服务器主机很有用。达到限制后,I / O线程将停止从主服务器读取二进制日志事件,直到SQL线程赶上并删除一些未使用的中继日志。请注意,此限制不是绝对的:在某些情况下,SQL线程需要更多事件才能删除中继日志。在那种情况下,I / O线程会超出限制,直到SQL线程有可能删除一些中继日志为止,因为不这样做会导致死锁。你不应该设置 --relay-log-space-limit到小于两倍的值 --max-relay-log-size(或者 --max-binlog-size如果 --max-relay-log-size是0)。在这种情况下,I / O线程有可能因为–relay-log-space-limit超出了空间而等待可用空间 ,但是SQL线程没有要清除的中继日志,因此无法满足I / O线程。这将强制I / O线程–relay-log-space-limit 暂时忽略 。
• --replicate-do-db=db_name
属性 值
命令行格式 --replicate-do-db=name
类型 串
• 此选项的效果取决于是否使用基于语句的复制或基于行的复制。
• 基于语句的复制。 告诉从SQL线程限制复制到报表,其中默认的数据库(即,由选定的一个USE)是 db_name。要指定多个数据库,请多次使用此选项,每个数据库一次;但是,这样做 不会复制跨数据库语句,例如在选择其他数据库(或未选择数据库)的情况下。 UPDATE some_db.some_table SET foo=‘bar’
• 警告
• 要指定多个数据库,您 必须使用此选项的多个实例。因为数据库名称可以包含逗号,所以如果您提供用逗号分隔的列表,则该列表将被视为单个数据库的名称。
• 一个使用基于语句的复制时可能无法正常工作的示例:如果从属服务器启动–replicate-do-db=sales 并在主服务器上发出以下语句,则该 UPDATE语句 不会被复制:
• USE prices;
• UPDATE sales.january SET amount=amount+1000;
• 这种“ 仅检查默认数据库 ”行为的主要原因是,仅凭语句很难知道是否应复制它(例如,如果您使用的是多表 DELETE语句或UPDATE 跨多个表起作用的多表语句)数据库)。如果不需要,仅检查默认数据库而不是所有数据库也更快。
• 基于行的复制。 告诉从SQL线程将复制限制到数据库db_name。仅属于的表db_name被更改;当前数据库对此没有影响。假设从属服务器开始 --replicate-do-db=sales并且基于行的复制生效,然后在主服务器上运行以下语句:
• USE prices;
• UPDATE sales.february SET amount=amount+100;
• 从站上february的sales数据库中 的表 根据该UPDATE 语句进行更改;无论是否USE发出声明,都会发生这种情况 。但是,在使用基于行的复制和时,在主服务器上发出以下语句对从服务器没有影响 --replicate-do-db=sales:
• USE prices;
• UPDATE prices.march SET amount=amount-25;
• 即使将语句USE prices更改为USE sales,该 UPDATE语句的效果仍然不会被复制。
• --replicate-do-db与引用基于行的复制相比,基于语句的复制在处理方式上的 另一个重要区别 在于引用多个数据库的语句。假设从站以 --replicate-do-db=db1, and the following statements are executed on the master:
• USE db1;
• UPDATE db1.table1 SET col1 = 10, db2.table2 SET col2 = 20;
• 如果使用的是基于语句的复制,则两个表都将在从属服务器上更新。但是,使用基于行的复制时,仅table1在从属服务器上受到影响;由于table2位于不同的数据库中,table2因此从属服务器上的不会被更改UPDATE。现在,假设已使用USE db1 一条USE db4语句代替该语句:
• USE db4;
• UPDATE db1.table1 SET col1 = 10, db2.table2 SET col2 = 20;
• 在这种情况下,UPDATE 使用基于语句的复制时,该语句对从属服务器无效。但是,如果您使用的是基于行的复制,UPDATE则将table1在从属服务器上 更改,而 不会更改 table2-换句话说,仅–replicate-do-db更改由数据库命名的表 ,并且默认数据库的选择对此行为没有影响。
• 如果需要跨数据库更新才能工作,请 改用。请参见第17.2.3节“服务器如何评估复制过滤规则”。 --replicate-wild-do-table=db_name.%
• 注意
• 此选项以与–binlog-do-db影响二进制日志记录相同的方式影响复制, 复制格式对–replicate-do-db 复制行为的影响与日志记录格式对行为的影响相同 --binlog-do-db。
• 此选项没有影响 BEGIN, COMMIT或者 ROLLBACK 语句。
• --replicate-ignore-db=db_name
属性 值
命令行格式 --replicate-ignore-db=name
类型 串
• 与一样–replicate-do-db,此选项的效果取决于是否正在使用基于语句的复制或基于行的复制。
• 基于语句的复制。 告诉slave SQL线程不会复制任何声明,其中默认数据库(也就是一个由选定的 USE)是 db_name。
• 基于行的复制。 告诉从SQL线程不要更新数据库中的任何表db_name。默认数据库无效。
• 当使用基于语句的复制时,以下示例无法正常工作。假设从属服务器启动, --replicate-ignore-db=sales 并且您在主服务器上发出以下语句:
• USE prices;
• UPDATE sales.january SET amount=amount+1000;
• 在这种情况下, 该UPDATE语句将 被复制,因为它 --replicate-ignore-db仅适用于默认数据库(由该USE语句确定 )。因为sales在该语句中显式指定了 数据库,所以该语句尚未过滤。但是,在使用基于行的复制时,该 UPDATE语句的效果不会传播到从属服务器,并且从属服务器的sales.january表副本 不变。在这种情况下, --replicate-ignore-db=sales 导致对主副本的表中的表进行的所有更改sales 从数据库将忽略该数据库。
• 要指定多个要忽略的数据库,请多次使用此选项,每个数据库一次。因为数据库名称可以包含逗号,所以如果您提供用逗号分隔的列表,则该列表将被视为单个数据库的名称。
• 如果您正在使用跨数据库更新,并且您不希望复制这些更新,则不应使用此选项。请参见第17.2.3节“服务器如何评估复制过滤规则”。
• 如果需要跨数据库更新才能工作,请 改用。请参见第17.2.3节“服务器如何评估复制过滤规则”。 --replicate-wild-ignore-table=db_name.%
• 注意
• 此选项以与–binlog-ignore-db影响二进制日志记录相同的方式影响复制, 复制格式对 --replicate-ignore-db 复制行为的影响与日志记录格式对行为的影响相同 --binlog-ignore-db。
• 此选项没有影响 BEGIN, COMMIT或者 ROLLBACK 语句。
• --replicate-do-table=db_name.tbl_name
属性 值
命令行格式 --replicate-do-table=name
类型 串
• 通过告诉从SQL线程将复制限制到给定表来创建复制筛选器。要指定多个表,请多次使用此选项,每个表一次。与相比,这适用于跨数据库更新和默认数据库更新 --replicate-do-db。请参见 第17.2.3节“服务器如何评估复制过滤规则”。
• 此选项仅影响适用于表的语句。它不会影响仅适用于其他数据库对象的语句,例如存储的例程。要过滤对存储的例程进行操作的语句,请使用一个或多个 --replicate--db选项。
• --replicate-ignore-table=db_name.tbl_name
属性 值
命令行格式 --replicate-ignore-table=name
类型 串
• 通过告诉从SQL线程不要复制任何更新指定表的语句来创建复制过滤器,即使同一表可能会更新其他表。要指定多个要忽略的表,请多次使用此选项,每个表一次。与相比,这适用于跨数据库更新 --replicate-ignore-db。请参见 第17.2.3节“服务器如何评估复制过滤规则”。
• 此选项仅影响适用于表的语句。它不会影响仅适用于其他数据库对象的语句,例如存储的例程。要过滤对存储的例程进行操作的语句,请使用一个或多个 --replicate--db选项。
• --replicate-rewrite-db=from_name->to_name
属性 值
命令行格式 --replicate-rewrite-db=old_name->new_name
类型 串
• 告诉从创建转换的默认数据库复制过滤器(即,一个由选定的USE),以 to_name如果它是 from_name在主。只有涉及表语句将受到影响(没有语句,例如CREATE DATABASE, DROP DATABASE和 ALTER DATABASE),且仅当 from_name是主服务器上的默认数据库。要指定多个重写,请多次使用此选项。服务器使用第一个具有from_name匹配值的服务器 。在测试规则之前, 已完成数据库名称转换 --replicate-*。
• 使用此选项时,其中表名使用数据库名限定的语句不适用于表级复制过滤选项,例如 --replicate-do-table。假设我们有一个a在主服务器上命名的数据库,一个b在从服务器上命名的数据库,每个数据库都包含一个表t,并使用来启动了主数据库–replicate-rewrite-db=‘a->b’。在稍后的时间,我们执行 DELETE FROM a.t。在这种情况下,由于以下原因,没有相关的过滤规则起作用:
- –replicate-do-table=a.t不起作用,因为从属t数据库中有表b。
- –replicate-do-table=b.t 与原始语句不匹配,因此将被忽略。
- –replicate-do-table=.t的处理方式与相同 --replicate-do-table=a.t,因此也不起作用。
同样,该–replication-rewrite-db 选项不适用于跨数据库更新。
如果在命令行上使用此选项,并且该 >字符对于命令解释器来说是特殊的,请引用该选项的值。例如:
shell> mysqld --replicate-rewrite-db=“olddb->newdb”
• --replicate-same-server-id
属性 值
命令行格式 --replicate-same-server-id[={OFF|ON}]
类型 布尔型
默认值 OFF
• 在从属服务器上使用。通常,应使用默认设置0,以防止循环复制引起的无限循环。如果设置为1,则从站不会跳过具有其自己的服务器ID的事件。通常,这仅在很少的配置中有用。如果log_slave_updates启用,则不能设置为1 。默认情况下,如果从属I / O线程具有从属服务器的ID,则不会将二进制日志事件写入中继日志(此优化有助于节省磁盘使用量)。如果要使用 --replicate-same-server-id,请确保在使用此选项启动从属服务器之前,先让该从属服务器读取您自己的事件,该事件需要您执行从属SQL线程。
• --replicate-wild-do-table=db_name.tbl_name
属性 值
命令行格式 --replicate-wild-do-table=name
类型 串
• 通过告诉从线程将复制限制为其中任何更新的表与指定的数据库和表名称模式匹配的语句,从而创建复制筛选器。模式可以包含%和 _通配符,其含义与LIKE 模式匹配运算符相同。要指定多个表,请多次使用此选项,每个表一次。这适用于跨数据库更新。请参见 第17.2.3节“服务器如何评估复制过滤规则”。
• 此选项适用于表,视图和触发器。它不适用于存储过程和功能或事件。要过滤对后一个对象操作的语句,请使用一个或多个–replicate--db选项。
• 示例: --replicate-wild-do-table=foo%.bar% 仅复制使用数据库名称以开头foo且表名称以开头的表的更新bar。
• 如果表名称模式%,它匹配任何表名和选项也适用于数据库级的语句(CREATE DATABASE,DROP DATABASE,和ALTER DATABASE)。例如,如果使用 --replicate-wild-do-table=foo%.%,则在数据库名称与pattern匹配时复制数据库级语句foo%。
• 要在数据库或表名称模式中包括文字通配符,请使用反斜杠对其进行转义。例如,要复制一个名为的数据库的所有表 my_own%db,但不从该my1ownAABCdb数据库复制表,则应转义_和% 字符,例如: --replicate-wild-do-table=my_own%db。如果在命令行上使用选项,则可能需要加倍反斜杠或引用选项值,具体取决于命令解释器。例如,对于 bash shell,您需要输入 --replicate-wild-do-table=my\_own\%db。
• --replicate-wild-ignore-table=db_name.tbl_name
属性 值
命令行格式 --replicate-wild-ignore-table=name
类型 串
• 创建一个复制过滤器,以防止从属线程复制任何表与给定通配符模式匹配的语句。要指定多个要忽略的表,请多次使用此选项,每个表一次。这适用于跨数据库更新。请参见 第17.2.3节“服务器如何评估复制过滤规则”。
• 示例: --replicate-wild-ignore-table=foo%.bar% 不复制使用数据库名称以开头foo且表名称以开头的表的更新bar。
• 有关匹配如何工作的信息,请参阅–replicate-wild-do-table 选项说明 。在选项值中包括文字通配符的规则也与之相同 --replicate-wild-ignore-table 。
• --skip-slave-start
属性 值
命令行格式 --skip-slave-start[={OFF|ON}]
类型 布尔型
默认值 OFF
• 指示从属服务器在服务器启动时不要启动从属线程。要稍后启动线程,请使用一条 START SLAVE语句。
• --slave-skip-errors=[err_code1,err_code2,…|all|ddl_exist_errors]
属性 值
命令行格式 --slave-skip-errors=name
系统变量 slave_skip_errors
范围 全局
动态 没有
类型 串
默认值 OFF
有效值 OFF
[list of error codes]
all
ddl_exist_errors
• 通常,当从属服务器上发生错误时,复制将停止。这使您有机会手动解决数据中的不一致问题。当语句返回选项值中列出的任何错误时,此选项告诉从SQL线程继续复制。
• 除非您完全理解为什么会出错,否则不要使用此选项。如果复制设置和客户端程序中没有错误,而MySQL本身也没有错误,则永远不会发生停止复制的错误。不加选择地使用此选项会导致从属设备变得与主设备失去同步,而您不知道为什么会发生这种情况。
• 对于错误代码,应在从站错误日志和的输出中使用错误消息提供的编号 SHOW SLAVE STATUS。 附录B,“ 错误,错误代码和常见问题”,列出了服务器错误代码。
• 您也可以(但不应)使用非常不推荐的值all导致从属设备忽略所有错误消息,并且无论发生什么都会继续运行。不用说,如果使用all,就不能保证数据的完整性。在这种情况下,如果从站的数据与主站的数据不一致,请不要抱怨(或提交错误报告)。您已被警告。
• MySQL 5.6以及MySQL NDB Cluster 7.3和更高版本都支持一个附加的速记值 ddl_exist_errors,该值等同于错误代码列表 1007,1008,1050,1051,1054,1060,1061,1068,1094,1146。
• 例子:
• --slave-skip-errors=1062,1053
• --slave-skip-errors=all
• --slave-skip-errors=ddl_exist_errors
• --slave-sql-verify-checksum={0|1}
属性 值
命令行格式 --slave-sql-verify-checksum[={OFF|ON}]
类型 布尔型
默认值 ON
• 启用此选项后,从站将检查从中继日志中读取的校验和,如果不匹配,则从站会因错误而停止。
2. 从站状态记录到表的选项
MySQL 5.6和更高版本支持将复制从属状态信息记录到表而不是文件中。可以使用以下两个系统变量分别配置主信息日志和中继日志信息日志的写入:
• master_info_repository
• relay_log_info_repository
有关这些变量的信息,请参见 第17.1.4.3节“复制从站选项和变量”。
信息日志表及其内容被认为是给定MySQL服务器本地的。它们不会被复制,对它们的更改也不会写入二进制日志。
有关更多信息,请参见第17.2.2节“复制中继和状态日志”。
3. 过时的复制从站选项
下列选项已被删除,并由该CHANGE MASTER TO … 语句的功能代替(请参见第13.4.2.1节“ CHANGE MASTER TO语句”)。如果尝试使用MySQL 5.6中的任何这些选项启动mysqld,则服务器将因未知变量错误而中止 。
• --master-host
• --master-user
• --master-password
• --master-port
• --master-connect-retry
• --master-ssl
• --master-ssl-ca
• --master-ssl-capath
• --master-ssl-cert
• --master-ssl-cipher
• --master-ssl-key
4. 复制从站上使用的系统变量
下表描述了用于控制复制从属服务器的系统变量。可以在服务器启动时设置它们,其中一些可以在运行时使用进行更改 SET。本节前面列出了与复制从属服务器一起使用的服务器选项。
• init_slave
属性 值
命令行格式 --init-slave=name
系统变量 init_slave
范围 全局
动态 是
类型 串
• 该变量与相似 init_connect,但是是一个字符串,每次SQL线程启动时由从属服务器执行。字符串的格式与init_connect变量的格式相同。
• 注意
• SQL线程在执行之前将确认发送给客户端 init_slave。因此,不能保证 返回init_slave时已执行START SLAVE。有关更多信息,请参见第13.4.2.5节“ START SLAVE语句”。
• log_slow_slave_statements
属性 值
命令行格式 --log-slow-slave-statements[={OFF|ON}]
介绍了 5.6.11
系统变量 log_slow_slave_statements
范围 全局
动态 是
类型 布尔型
默认值 OFF
• 启用慢速查询日志后,此变量将启用日志记录,以记录long_query_time在从属服务器上执行了超过几秒钟的查询 。请注意,如果正在使用基于行的复制(binlog_format=ROW), log_slow_slave_statements 则无效。查询仅在二进制日志中以语句格式记录时,即binlog_format=STATEMENT设置时或 binlog_format=MIXED设置时以及以语句格式记录时,才添加到从属的慢速查询日志中 。设置为时以行格式记录的慢查询binlog_format=MIXED,或设置 为时记录的慢查询 binlog_format=ROW设置后,即使log_slow_slave_statements 已启用,也不会添加到从站的慢速查询日志中 。
• 设置 log_slow_slave_statements 没有立即生效。变量的状态适用于所有后续START SLAVE 语句。另请注意,的全局设置 long_query_time适用于SQL线程的生存期。如果更改了设置,您必须停止并重新启动从服务器的SQL线程存在(例如,通过发布实施变更 STOP SLAVE,并 START SLAVE与报表SQL_THREAD选项)。
• master_info_repository
属性 值
命令行格式 --master-info-repository={FILE|TABLE}
系统变量 master_info_repository
范围 全局
动态 是
类型 串
默认值 FILE
有效值 FILE
TABLE
• 此变量的设置确定从属服务器是将主服务器状态和连接信息记录到 FILE(master.info)还是TABLE (mysql.slave_master_info)上。
• 该变量的设置也直接影响到sync_master_info系统变量设置所产生的效果 。有关更多信息,请参见该变量说明。
• 对于FILE日志记录,您可以使用–master-info-file服务器选项更改文件名 。
• max_relay_log_size
属性 值
命令行格式 --max-relay-log-size=#
系统变量 max_relay_log_size
范围 全局
动态 是
类型 整数
默认值 0
最低值 0
最大值 1073741824
• 如果复制从属对其中继日志的写操作导致当前日志文件大小超过此变量的值,则从属将旋转中继日志(关闭当前文件并打开下一个文件)。如果 max_relay_log_size为0,则服务器同时使用 max_binlog_size二进制日志和中继日志。如果 max_relay_log_size大于0,则将限制中继日志的大小,这使您可以为两个日志设置不同的大小。您必须将其设置 max_relay_log_size为4096字节至1GB(含)之间,或设置为0。默认值为0。请参见 第17.2.1节“复制实现详细信息”。
• relay_log
属性 值
命令行格式 --relay-log=file_name
系统变量 relay_log
范围 全局
动态 没有
类型 文件名
• 中继日志的基本名称。默认基本名称是 host_name-relay-bin。
• 服务器将文件写入数据目录中,除非给基本名称提供前导的绝对路径名以指定其他目录。服务器通过在基本名称中添加数字后缀来依次创建中继日志文件。
• 由于MySQL解析服务器选项的方式,如果在服务器启动时指定此变量,则必须提供一个值。仅当未实际指定选项时,才使用默认基本名称。如果relay_log在服务器启动时指定系统变量而未指定值,则可能会导致意外行为;否则,可能会导致意外行为。此行为取决于所使用的其他选项,指定它们的顺序以及是否在命令行或选项文件中指定它们。有关MySQL如何处理服务器选项的更多信息,请参见 第4.2.2节“指定程序选项”。
• 如果指定此变量,则指定的值还将用作中继日志索引文件的基本名称。您可以通过使用relay_log_index系统变量指定其他中继日志索引文件基本名称来覆盖此行为 。
• 服务器从索引文件读取条目时,将检查条目是否包含相对路径。如果是这样,则将路径的相对部分替换为使用relay_log系统变量设置的绝对路径 。绝对路径保持不变;在这种情况下,必须手动编辑索引以启用新路径。
• 您可能会发现relay_log 系统变量对于执行以下任务很有用:
o 创建名称独立于主机名的中继日志。
o 如果您需要将中继日志放置在数据目录之外的其他区域,因为您的中继日志往往很大,并且您不想减少中继日志 max_relay_log_size。
o 通过使用磁盘之间的负载平衡来提高速度。
您可以从relay_log_basename系统变量获取中继日志文件名(和路径) 。
• relay_log_basename
属性 值
系统变量 relay_log_basename
范围 全局
动态 没有
类型 文件名
默认值 datadir + ‘/’ + hostname + ‘-relay-bin’
• 保留中继日志文件的名称和完整路径。该变量由服务器设置,并且是只读的。
• relay_log_index
属性 值
命令行格式 --relay-log-index=file_name
系统变量 relay_log_index
范围 全局
动态 没有
类型 文件名
默认值 host_name-relay-bin.index
• 中继日志索引文件的名称。默认名称 host_name-relay-bin.index 位于数据目录中,其中 host_name是从属服务器的名称。
• 由于MySQL解析服务器选项的方式,如果在服务器启动时指定此变量,则必须提供一个值。仅当未实际指定选项时,才使用默认基本名称。如果relay_log_index在服务器启动时指定系统变量而未指定值,则可能会导致意外行为;否则,可能会导致意外行为。此行为取决于所使用的其他选项,指定它们的顺序以及是否在命令行或选项文件中指定它们。有关MySQL如何处理服务器选项的更多信息,请参见 第4.2.2节“指定程序选项”。
• relay_log_info_file
属性 值
命令行格式 --relay-log-info-file=file_name
系统变量 relay_log_info_file
范围 全局
动态 没有
类型 文件名
默认值 relay-log.info
• 从站记录有关中继日志的信息的文件名。默认名称 relay-log.info在数据目录中。有关此文件格式的信息,请参见 第17.2.2.2节“从站状态日志”。
• relay_log_info_repository
属性 值
命令行格式 --relay-log-info-repository=value
系统变量 relay_log_info_repository
范围 全局
动态 是
类型 串
默认值 FILE
有效值 FILE
TABLE
• 该变量确定从站在继电器日志中的位置是写入FILE (relay-log.info)还是 写入TABLE (mysql.slave_relay_log_info)。
• 该变量的设置也直接影响到sync_relay_log_info系统变量设置所产生的效果 。有关更多信息,请参见该变量说明。
• 此选项可用于使复制从属服务器能够应对意外的暂停。有关更多信息,请参见 第17.3.2节“处理复制从站的意外中止”。
• relay_log_purge
属性 值
命令行格式 --relay-log-purge[={OFF|ON}]
系统变量 relay_log_purge
范围 全局
动态 是
类型 布尔型
默认值 ON
• 一旦不再需要中继日志文件,则禁用或启用它们的自动清除。默认值为1(ON)。
• relay_log_recovery
属性 值
命令行格式 --relay-log-recovery[={OFF|ON}]
系统变量 relay_log_recovery
范围 全局
动态 没有
类型 布尔型
默认值 OFF
• 如果启用,此变量将在服务器启动后立即启用自动中继日志恢复。恢复过程将创建一个新的中继日志文件,将SQL线程位置初始化为该新的中继日志,并将I / O线程初始化为SQL线程位置。然后继续从主机读取中继日志。该全局变量在运行时为只读。可以使用–relay-log-recovery从属启动时的选项来设置其值,该 选项应在复制从属意外终止后使用,以确保不会处理任何可能损坏的中继日志。可以启用该选项,以使从站能够应对意外的暂停。看到 有关更多信息,请参见第17.3.2节“处理复制从站的意外中断”。
• 此变量还与变量交互,该 relay_log_purge变量控制不再需要日志时清除日志。启用 relay_log_recovery时, relay_log_purge是从没有清除的文件,从而导致数据不一致读取中继日志残疾的风险。
• 当relay_log_recovery被启用,从已停止由于同时在多线程模式下运行时遇到错误,不能执行 CHANGE MASTER TO,如果有日志中的任何空隙。在这种情况下,解决方案是发出START SLAVE UNTIL SQL_AFTER_MTS_GAPS确保在切换回单线程模式或执行CHANGE MASTER TO 语句之前处理所有间隙的问题。
• relay_log_space_limit
属性 值
命令行格式 --relay-log-space-limit=#
系统变量 relay_log_space_limit
范围 全局
动态 没有
类型 整数
默认值 0
最低值 0
最大值(64位平台) 18446744073709551615
最大值(32位平台) 4294967295
• 所有中继日志使用的最大空间量。
• report_host
属性 值
命令行格式 --report-host=host_name
系统变量 report_host
范围 全局
动态 没有
类型 串
• 在从站注册期间要向主站报告的从站的主机名或IP地址。此值出现在SHOW SLAVE HOSTS主服务器上的输出中。如果您不希望从属设备向主控设备注册自己,请保留该值未设置。
• 注意
• 从站连接后,主站仅从TCP / IP套接字中读取从站的IP地址是不够的。由于NAT和其他路由问题,该IP可能无效,无法从主服务器或其他主机连接到从服务器。
• report_password
属性 值
命令行格式 --report-password=name
系统变量 report_password
范围 全局
动态 没有
类型 串
• 在从站注册期间要向主站报告的从站的帐户密码。SHOW SLAVE HOSTS如果主服务器以开头,则此值将显示在主服务器 的输出中–show-slave-auth-info。
• 尽管此变量的名称可能暗示其他名称, report_password但未连接到MySQL用户特权系统,因此不一定(或什至可能)与MySQL复制用户帐户的密码相同。
• report_port
属性 值
命令行格式 --report-port=port_num
系统变量 report_port
范围 全局
动态 没有
类型 整数
默认值 [slave_port]
最低值 0
最大值 65535
• 用于连接到从站的TCP / IP端口号,在从站注册期间向主站报告。仅当从属服务器正在侦听非默认端口时,或者您具有从主服务器或其他客户端到从属服务器的特殊隧道时,才应设置此选项。如果不确定,请不要使用此选项。
• 该选项的默认值为从站实际使用的端口号。这也是所显示的默认值SHOW SLAVE HOSTS。
• report_user
属性 值
命令行格式 --report-user=name
系统变量 report_user
范围 全局
动态 没有
类型 串
• 在从站注册期间要向主站报告的从站的帐户用户名。SHOW SLAVE HOSTS如果主服务器以开头,则此值将显示在主服务器 的输出中–show-slave-auth-info。
• 尽管此变量的名称可能暗示其他含义, report_user但未连接到MySQL用户特权系统,因此不一定(或什至可能)与MySQL复制用户帐户的名称相同。
• rpl_semi_sync_slave_enabled
属性 值
命令行格式 --rpl-semi-sync-slave-enabled[={OFF|ON}]
系统变量 rpl_semi_sync_slave_enabled
范围 全局
动态 是
类型 布尔型
默认值 OFF
• 控制是否在从属服务器上启用半同步复制。要启用或禁用插件,请将此变量 分别设置为ON或OFF(或1或0)。默认值为 OFF。
• 仅当安装了从属端半同步复制插件时,此变量才可用。
• rpl_semi_sync_slave_trace_level
属性 值
命令行格式 --rpl-semi-sync-slave-trace-level=#
系统变量 rpl_semi_sync_slave_trace_level
范围 全局
动态 是
类型 整数
默认值 32
• 从服务器上的半同步复制调试跟踪级别。有关rpl_semi_sync_master_trace_level 允许的值,请参见 。
• 仅当安装了从属端半同步复制插件时,此变量才可用。
• rpl_stop_slave_timeout
属性 值
命令行格式 --rpl-stop-slave-timeout=seconds
介绍了 5.6.13
系统变量 rpl_stop_slave_timeout
范围 全局
动态 是
类型 整数
默认值 31536000
最低值 2
最大值 31536000
• 在MySQL 5.6.13和更高版本中,您可以STOP SLAVE通过设置此变量来控制超时之前等待的时间(以秒为单位)。这可用于避免使用STOP SLAVE与从属服务器的不同客户端连接以及其他从属SQL语句之间的死锁 。
• 最大值和默认值为 rpl_stop_slave_timeout31536000秒(1年)。最小为2秒。对该变量的更改对后续STOP SLAVE语句生效。
• 此变量仅影响发出STOP SLAVE语句的客户端 。当达到超时时,发布客户端返回一条错误消息,指出命令执行不完整。然后,客户端停止等待从属线程停止,但是从属线程继续尝试停止,并且STOP SLAVE指令仍然有效。一旦从属线程不再繁忙,STOP SLAVE则执行该语句,并且从属线程停止。
• slave_checkpoint_group
属性 值
命令行格式 --slave-checkpoint-group=#
系统变量 slave_checkpoint_group
范围 全局
动态 是
类型 整数
默认值 512
最低值 32
最大值 524280
块大小 8
• 设置在调用检查点操作以更新其状态之前,多线程从属可以处理的最大事务数,如所示 SHOW SLAVE STATUS。设置此变量对未启用多线程的从站无效。
• 注意
• NDB群集当前不支持多线程从属,它会静默忽略此变量的设置。有关更多信息,请参见 第18.6.3节“ NDB群集复制中的已知问题”。
• 此变量与slave_checkpoint_period 系统变量结合使用 ,这样的方式可以在超过任何一个限制时执行检查点,并且计数器会跟踪事务数和自最后一个检查点以来经过的时间。
• 除非服务器是使用构建的,否则此变量的最小允许值为32, -DWITH_DEBUG在这种情况下,最小值为1。有效值始终为8的倍数;您可以将其设置为非整数倍的值,但是服务器会在存储该值之前将其四舍五入为下一个较低的8的倍数。(例外:调试服务器不执行这种舍入操作。)不管服务器是如何构建的,默认值为512,最大允许值为524280。
• slave_checkpoint_period
属性 值
命令行格式 --slave-checkpoint-period=#
系统变量 slave_checkpoint_period
范围 全局
动态 是
类型 整数
默认值 300
最低值 1
最大值 4G
• 设置调用检查点操作以更新多线程从站状态之前允许通过的最长时间(以毫秒为单位),如所示 SHOW SLAVE STATUS。设置此变量对未启用多线程的从站无效。
• 注意
• NDB群集当前不支持多线程从属,它会静默忽略此变量的设置。有关更多信息,请参见 第18.6.3节“ NDB群集复制中的已知问题”。
• 此变量与slave_checkpoint_group 系统变量结合使用 ,这样的方式可以在超过任何一个限制时执行检查点,并且计数器会跟踪事务数和自最后一个检查点以来经过的时间。
• 除非使用构建服务器,否则此变量的最小允许值为1。 -DWITH_DEBUG在这种情况下,最小值为0。无论构建服务器的方式如何,默认值为300,最大可能值为4294967296(4GB) 。
• slave_compressed_protocol
属性 值
命令行格式 --slave-compressed-protocol[={OFF|ON}]
系统变量 slave_compressed_protocol
范围 全局
动态 是
类型 布尔型
默认值 OFF
• 如果主从都支持压缩,是否使用主/从协议的压缩。如果禁用此变量(默认设置),则连接不会被压缩。另请参见第4.2.5节“连接压缩控制”。
• slave_exec_mode
属性 值
命令行格式 --slave-exec-mode=mode
系统变量 slave_exec_mode
范围 全局
动态 是
类型 列举
默认值 IDEMPOTENT (NDB)
STRICT (其他)
有效值 IDEMPOTENT
STRICT
• 控制从属线程如何解决复制期间的冲突和错误。IDEMPOTENT模式可抑制重复密钥错误和找不到密钥的错误; STRICT表示不会发生这种抑制。
• IDEMPOTENT此模式旨在用于NDB群集复制的多主复制,循环复制和某些其他特殊复制方案中。(有关更多信息,请参见 第18.6.10节“ NDB集群复制:多主复制和循环复制”和 第18.6.11节“ NDB集群复制冲突解决”。)NDB集群将忽略显式设置的任何值 slave_exec_mode,并且始终将其视为IDEMPOTENT。
• 在MySQL Server 5.6中,STRICT mode是默认值。
• 对于以外的其他存储引擎 NDB, IDEMPOTENT仅当您绝对确定可以安全地忽略重复键错误和未找到键错误时,才应使用mode。它旨在用于采用多主复制或循环复制的NDB群集的故障转移方案中,不建议在其他情况下使用。
• slave_load_tmpdir
属性 值
命令行格式 --slave-load-tmpdir=dir_name
系统变量 slave_load_tmpdir
范围 全局
动态 没有
类型 目录名
默认值 Value of --tmpdir
• 从站创建临时文件的目录的名称。设置此变量将立即对所有复制通道(包括正在运行的通道)生效。默认情况下,变量值等于tmpdir系统变量的值,或者在未指定该系统变量时应用的默认值。
• 当从属SQL线程复制一条 LOAD DATA语句时,它将从中继日志中加载的文件提取到临时文件中,然后将它们加载到表中。如果主服务器上加载的文件很大,则从服务器上的临时文件也很大。因此,建议使用此选项告诉从服务器将临时文件放在具有大量可用空间的某些文件系统中的目录中。在这种情况下,中继日志也很大,因此您可能还需要设置 relay_log系统变量以将中继日志放置在该文件系统中。
• 此选项指定的目录应该位于基于磁盘的文件系统(而不是基于内存的文件系统)中,以便用于复制LOAD DATA语句的临时文件 可以在计算机重新启动后幸免。该目录也不应是操作系统在系统启动过程中清除的目录。但是,如果已删除临时文件,复制现在可以在重新启动后继续。
• slave_max_allowed_packet
属性 值
命令行格式 --slave-max-allowed-packet=#
系统变量 slave_max_allowed_packet
范围 全局
动态 是
类型 整数
默认值 1073741824
最低值 1024
最大值 1073741824
• 此变量设置从属SQL和I / O线程的最大数据包大小,因此使用基于行的复制进行的较大更新不会导致复制失败,因为超出了更新 max_allowed_packet。
• 该全局变量的值始终是1024的正整数倍;如果您将其设置为非某个值,则该值将被四舍五入为下一个最大的1024倍,因为它会被存储或使用。设置 slave_max_allowed_packet为0将导致使用1024。(在所有这种情况下,都会发出截断警告。)默认值和最大值为1073741824(1 GB);默认值为1073741824(1 GB)。最小为1024。
• slave_net_timeout
属性 值
命令行格式 --slave-net-timeout=#
系统变量 slave_net_timeout
范围 全局
动态 是
类型 整数
默认值 3600
最低值 1
• 从站认为连接断开,中止读取并尝试重新连接之前,等待主站发送更多数据的秒数。第一次重试在超时后立即发生。重试之间的间隔由该语句的MASTER_CONNECT_RETRY 选项控制CHANGE MASTER TO,并且重新连接尝试的次数由该–master-retry-count选项限制 。默认值为3600秒(一小时)。
• slave_parallel_workers
属性 值
命令行格式 --slave-parallel-workers=#
系统变量 slave_parallel_workers
范围 全局
动态 是
类型 整数
默认值 0
最低值 0
最大值 1024
• 设置用于并行执行复制事件(事务)的从属工作线程数。将此变量设置为0(默认值)将禁用并行执行。最大值为1024。
• 注意
• NDB群集当前不支持多线程从属,它会静默忽略此变量的设置。有关更多信息,请参见 第18.6.3节“ NDB群集复制中的已知问题”。
• 启用并行执行后,从属SQL线程将充当从属工作器线程的协调器,其中事务是按数据库分配的。这意味着从属服务器上的工作线程可以处理给定数据库上的连续事务,而无需等待对其他数据库的更新完成。当前在从属服务器上执行多线程假定数据已按数据库分区,并且给定数据库中的更新以与主服务器上相同的相对顺序发生,以便正常工作。但是,不需要在任何两个数据库之间协调事务。
• 由于不同数据库上的事务在从服务器上的发生顺序可能与在主服务器上的发生顺序不同,因此检查最近执行的事务并不能保证主机上的所有先前事务都已在从服务器上执行。使用多线程从站时,这对日志记录和恢复具有影响。有关在从服务器上使用多线程时如何解释二进制日志记录信息的信息,请参见 第13.7.5.35节“ SHOW SLAVE STATUS语句”。另外,这意味着START SLAVE UNTIL多线程从站不支持该功能。
• 启用多线程后, slave_transaction_retries 将被视为等于0,并且无法更改。(当前,多线程从站不支持重试事务。)
• 您还应注意,在不同数据库中的表之间强制使用外键关系会导致多线程从属设备使用顺序模式而不是并行模式,这可能会对性能产生负面影响。(错误#14092635)
• slave_pending_jobs_size_max
属性 值
命令行格式 --slave-pending-jobs-size-max=#
系统变量 slave_pending_jobs_size_max
范围 全局
动态 是
类型 整数
默认值 16M
最低值 1024
最大值 16EiB
块大小 1024
• 对于多线程从属服务器,此变量设置可用于保存尚未应用事件的从属工作器队列可用的最大内存量(以字节为单位)。设置此变量对未启用多线程的从站无效。
• 该变量的最小可能值为1024;默认值为16MB。可能的最大值是18446744073709551615(16艾字节)。并非1024的精确倍数的值在存储之前会向下舍入为1024的下一个最高倍数。
• 此变量的值是一个软限制,可以设置为与正常工作负载匹配。如果异常大的事件超出了此大小,则事务将一直保留到所有从属工作器都具有空队列,然后再进行处理。保留所有后续事务,直到完成大事务为止。
• slave_rows_search_algorithms
属性 值
命令行格式 --slave-rows-search-algorithms=value
系统变量 slave_rows_search_algorithms
范围 全局
动态 是
类型 组
默认值 TABLE_SCAN,INDEX_SCAN
有效值 TABLE_SCAN,INDEX_SCAN
INDEX_SCAN,HASH_SCAN
TABLE_SCAN,HASH_SCAN
TABLE_SCAN,INDEX_SCAN,HASH_SCAN (相当于INDEX_SCAN,HASH_SCAN)
• 在为基于行的日志记录和复制准备一批行时,此变量控制如何搜索行以查找匹配项,即是否将散列用于使用主键或唯一键,某些其他键或不使用键的搜索完全没有 设置此变量将立即对所有复制通道(包括正在运行的通道)生效。选项。
• 从列表中指定的逗号分隔的任何2(或所有3个)的值列表INDEX_SCAN, TABLE_SCAN,HASH_SCAN。该值应为字符串,因此,如果在运行时而不是在服务器启动时进行设置,则必须用引号将该值引起来。此外,该值不得包含任何空格。下表显示了可能的组合(列表)及其影响:
使用的索引/期权价值 INDEX_SCAN,HASH_SCAN 要么 INDEX_SCAN,TABLE_SCAN,HASH_SCAN INDEX_SCAN,TABLE_SCAN TABLE_SCAN,HASH_SCAN
主键或唯一键 索引扫描 索引扫描 哈希扫描索引
(其他)键 哈希扫描索引 索引扫描 哈希扫描索引
没有索引 哈希扫描 表扫描 哈希扫描
• 列表中指定算法的顺序与通过SELECTor或 SHOW VARIABLES语句显示的顺序没有区别(与前面显示的表中使用的顺序相同)。
o 默认值为 TABLE_SCAN,INDEX_SCAN,表示所有可以使用索引的搜索都使用它们,而没有任何索引的搜索都使用表扫描。
o 要将哈希用于不使用主键或唯一键的任何搜索,请将此选项设置为 INDEX_SCAN,HASH_SCAN。指定INDEX_SCAN,TABLE_SCAN,HASH_SCAN与指定 具有相同的效果 INDEX_SCAN,HASH_SCAN。
o 要对所有搜索强制使用哈希,请将此选项设置为 TABLE_SCAN,HASH_SCAN。
可以指定单个值,但这不是最佳选择,因为设置单个值会将搜索限制为仅使用该算法。特别是,INDEX_SCAN不建议单独设置 ,因为在这种情况下,如果不存在索引,搜索将根本找不到行。
注意
仅当行事件足够大时INDEX_SCAN,它 HASH_SCAN才有 性能优势 。行事件的大小使用配置 --binlog-row-event-max-size。例如,假设DELETE 删除25,000行的语句生成大型 Delete_row_event事件。在这种情况下, slave_rows_search_algorithms 将设置为INDEX_SCAN或 HASH_SCAN可以提高性能。但是,如果有25,000条 DELETE语句,并且每个语句由一个单独的事件表示,则将其设置 slave_rows_search_algorithms 为INDEX_SCAN或 HASH_SCAN 执行这些单独的事件时,性能没有任何提高。
• slave_skip_errors
属性 值
命令行格式 --slave-skip-errors=name
系统变量 slave_skip_errors
范围 全局
动态 没有
类型 串
默认值 OFF
有效值 OFF
[list of error codes]
all
ddl_exist_errors
• 通常,当从属服务器上发生错误时,复制将停止。这使您有机会手动解决数据中的不一致问题。当语句返回变量值中列出的任何错误时,此变量告诉从SQL线程继续复制。
• slave_sql_verify_checksum
属性 值
命令行格式 --slave-sql-verify-checksum[={OFF|ON}]
系统变量 slave_sql_verify_checksum
范围 全局
动态 是
类型 布尔型
默认值 ON
• 使从属SQL线程使用从中继日志中读取的校验和来验证数据。如果发生不匹配,则从站会因错误而停止。
• 注意
• 从网络上接受事件时,如果可能,从属I / O线程总是读取校验和。
• slave_transaction_retries
属性 值
命令行格式 --slave-transaction-retries=#
系统变量 slave_transaction_retries
范围 全局
动态 是
类型 整数
默认值 10
最低值 0
最大值(64位平台) 18446744073709551615
最大值(32位平台) 4294967295
• 如果复制从SQL线程失败,因为一个来执行事务 InnoDB死锁或因为交易的执行时间超过 InnoDB的 innodb_lock_wait_timeout或 NDB的 TransactionDeadlockDetectionTimeout 或 TransactionInactiveTimeout,它会自动重试 slave_transaction_retries 与错误停止前的时间。预设值为10。
• 使用多线程从站时,无法重试事务。换句话说,只要 slave_parallel_workers大于0,slave_transaction_retries 就等于0,并且不能更改。
• slave_type_conversions
属性 值
命令行格式 --slave-type-conversions=set
系统变量 slave_type_conversions
范围 全局
动态 没有
类型 组
默认值
有效值(> = 5.6.13) ALL_LOSSY
ALL_NON_LOSSY
ALL_SIGNED
ALL_UNSIGNED
有效值(<= 5.6.12) ALL_LOSSY
ALL_NON_LOSSY
• 使用基于行的复制时,控制从属设备上有效的类型转换模式。在MySQL 5.6.13和更高的,它的值是逗号分隔的集合从列表中零个或多个元素:ALL_LOSSY, ALL_NON_LOSSY, ALL_SIGNED, ALL_UNSIGNED。将此变量设置为空字符串以禁止在主服务器和从服务器之间进行类型转换。更改需要重新启动从站才能生效。
• ALL_SIGNED并且 ALL_UNSIGNED已添加到MySQL 5.6.13(Bug#15831300)中。有关适用于基于行的复制中的属性提升和降级的类型转换模式的其他信息,请参见 基于行的复制:属性提升和降级。
• sql_slave_skip_counter
属性 值
系统变量 sql_slave_skip_counter
范围 全局
动态 是
类型 整数
• 从属服务器应跳过的来自主服务器的事件数。
• 此选项与基于GTID的复制不兼容,并且在时不得将其设置为非零值 gtid_mode=ON。在MySQL 5.6.10和更高版本中,明确禁止尝试这样做。(缺陷号15833516)如果在使用GTID时需要跳过事务,请改为使用 gtid_executed主服务器。请参阅 注入空事务,以获取有关如何执行此操作的信息。
• 重要
• 如果跳过通过设置此变量指定的事件数会导致从站开始在事件组的中间,则从站将继续跳过,直到找到下一个事件组的起点并从该点开始。有关更多信息,请参见 第13.4.2.4节“ SET GLOBAL sql_slave_skip_counter语句”。
• sync_master_info
属性 值
命令行格式 --sync-master-info=#
系统变量 sync_master_info
范围 全局
动态 是
类型 整数
默认值 10000
最低值 0
最大值(64位平台) 18446744073709551615
最大值(32位平台) 4294967295
• 此变量对复制从站的影响取决于从站的 master_info_repository设置为FILE还是TABLE,如以下段落中所述。
• master_info_repository = FILE。 如果的值sync_master_info大于0,则从服务器在每个事件后将其master.info文件同步 到磁盘(使用 fdatasync()) sync_master_info。如果为0,则MySQL服务器不执行master.info文件与磁盘的同步;否则为0 。而是,服务器依赖操作系统来定期刷新其内容,就像处理任何其他文件一样。
• master_info_repository = TABLE。 如果的值sync_master_info大于0,则从服务器在每个sync_master_info事件后都会更新其主信息存储库表 。如果为0,则表永远不会更新。
• sync_relay_log
属性 值
命令行格式 --sync-relay-log=#
系统变量 sync_relay_log
范围 全局
动态 是
类型 整数
默认值 10000
最低值 0
最大值(64位平台) 18446744073709551615
最大值(32位平台) 4294967295
• 如果该变量的值大于0,则fdatasync()在将每个sync_relay_log事件写入中继日志后,MySQL服务器都会 使用将该服务器的中继日志同步到磁盘 。
• 设置sync_relay_log为0将导致不对磁盘进行任何同步。在这种情况下,服务器依赖操作系统不时刷新中继日志的内容,就像处理其他任何文件一样。
• 值1是最安全的选择,因为在发生崩溃的情况下,您从中继日志中最多丢失一个事件。但是,它也是最慢的选择(除非磁盘具有电池备份的高速缓存,这使得同步非常快)。
• sync_relay_log_info
属性 值
命令行格式 --sync-relay-log-info=#
系统变量 sync_relay_log_info
范围 全局
动态 是
类型 整数
默认值 10000
最低值 0
最大值(64位平台) 18446744073709551615
最大值(32位平台) 4294967295
• 的默认值为sync_relay_log_info 10000。
• 此变量对复制从属服务器的影响取决于服务器的 relay_log_info_repository 设置(FILE或 TABLE)。如果设置为 TABLE,则变量的效果还取决于中继日志信息表使用的存储引擎是事务性的(例如 InnoDB)还是事务性的(MyISAM)。对于sync_relay_log_info零和大于零的值,这些因素对服务器行为的影响 如下:
• sync_relay_log_info = 0
o 如果 relay_log_info_repository 设置为FILE,则MySQL服务器不执行relay-log.info文件与磁盘的同步 ;而是,服务器依赖操作系统来定期刷新其内容,就像处理任何其他文件一样。
o 如果 relay_log_info_repository 将设置为TABLE,并且该表的存储引擎是事务性的,那么在每次事务处理后都会更新该表。(sync_relay_log_info在这种情况下,该 设置将被有效忽略。)
o 如果 relay_log_info_repository 设置为TABLE,并且该表的存储引擎不是事务性的,则该表永远不会更新。
sync_relay_log_info = N > 0
o 如果 relay_log_info_repository 将设置为FILE,则从服务器在每次事务后将其relay-log.info文件同步 到磁盘(使用fdatasync()) N。
o 如果 relay_log_info_repository 将设置为TABLE,并且该表的存储引擎是事务性的,那么在每次事务处理后都会更新该表。(sync_relay_log_info在这种情况下,该 设置将被有效忽略。)
o 如果 relay_log_info_repository 将设置为TABLE,并且该表的存储引擎不是事务性的,则在每个N事件之后都会更新该表 。




