10bet网址
MySQL 8.0参考手册
相关的文档10bet官方网站 下载本手册
PDF(美国高级主任)- 41.7 mb
PDF (A4)- 41.8 mb
手册页(TGZ)- 262.2 kb
手册页(Zip)- 372.2 kb
信息(Gzip)- 4.0 mb
信息(邮政编码)- 4.0 mb
本手册节选

17.5.3升级复制设置

升级参与复制设置的服务器时,升级过程取决于当前服务器版本和要升级到的版本。本节提供有关升级如何影响复制的信息。有关升级MySQL的一般信息,请参见章节2.11,“升级MySQL”

当您将一个源代码从早期的MySQL版本系列升级到8.0时,您应该首先确保该源代码的所有副本都使用相同的8.0。x版本。如果不是这样,您应该首先升级副本。要升级每个副本,请关闭它,将其升级到适当的8.0。X版本,重新启动后,重新启动复制。升级后副本创建的中继日志格式为8.0。

影响严格SQL模式下操作的更改(STRICT_TRANS_TABLESSTRICT_ALL_TABLES)可能导致升级副本复制失败。如果使用基于语句的日志记录(binlog_format =声明),如果一个副本在源之前升级,源执行的语句在副本上成功,但在副本上可能失败,从而导致复制停止。为了解决这个问题,停止源上的所有新语句,等待副本赶上进度,然后升级副本。或者,如果不能停止新语句,请临时更改为源(binlog_format =行)并等待,直到所有副本都处理了此更改点之前产生的所有二进制日志,然后升级副本。

默认字符集已从latin1utf8mb4MySQL 8.0。在复制设置中,当从MySQL 5.7升级到8.0时,建议在升级前将默认字符集更改回MySQL 5.7中使用的字符集。升级完成后,默认字符集可以更改为utf8mb4.假设使用了以前的默认值,保留它们的一种方法是使用my.cnf文件:

[mysqld] character_set_server=latin1 collation_server=latin1_swedish_ci . [mysqld] character_set_server= latin1_swedish_ci .

在副本升级完成后,关闭源,将其升级到相同的8.0。X版本作为副本,并重新启动它。如果您临时将源更改为基于行的日志记录,请将其更改为基于语句的日志记录。8.0源代码能够读取在升级之前写入的旧二进制日志,并将它们发送到8.0副本。副本可以识别旧格式并正确地处理它。升级后源端生成的二进制日志格式为8.0。这些也可以被8.0的副本识别。

换句话说,当升级到MySQL 8.0时,副本必须是MySQL 8.0,然后才能将源文件升级到8.0。注意,从8.0降级到旧版本并不是那么简单:您必须确保任何8.0二进制日志或中继日志都已完全处理,以便在继续降级之前将其删除。

当您从一个MySQL系列转移到下一个MySQL系列时,某些升级可能要求您删除并重新创建数据库对象。例如,排序规则更改可能需要重新构建表索引。如有必要,此类操作详列于章节2.11.4,“MySQL 8.0的变化”.最安全的方法是分别在副本和源上执行这些操作,并禁止从源复制这些操作到副本。要实现这一点,请使用以下步骤:

  1. 停止所有副本并升级它们。重新启动它们——skip-slave-start选项,或从MySQL 8.0.24,该skip_slave_start系统变量,使它们不连接到源。执行重新创建数据库对象所需的任何表修复或重建操作,例如使用修理表ALTER TABLE,或者转储和重新加载表或触发器。

  2. 在源上禁用二进制日志。要在不重新启动源代码的情况下完成此操作,请执行SET sql_log_bin = OFF声明。方法停止源并重新启动它——skip-log-bin选择。如果重新启动源,可能还需要禁止客户端连接。例如,如果所有客户端都使用TCP/IP连接,则启用skip_networking重新启动源时的系统变量。

  3. 禁用二进制日志后,执行重新创建数据库对象所需的任何表修复或重建操作。在此步骤中必须禁用二进制日志,以防止这些操作被记录下来并在以后发送到副本。

  4. 在源上重新启用二进制日志。如果你设置sql_log_bin在前面,执行SET sql_log_bin = ON声明。如果重新启动源程序以禁用二进制日志,则重新启动源程序而不需要——skip-log-bin,并且不启用skip_networking系统变量,以便客户端和副本可以连接。

  5. 重新启动副本,这次没有——skip-slave-start选择或skip_slave_start系统变量。

如果您正在将现有的复制设置从不支持全局事务标识符的MySQL版本升级到支持全局事务标识符的版本,在确保设置满足基于gtid的复制的所有要求之前,不应该在源或副本上启用gtid。看到第17.1.3.4节,“使用gtid建立复制”,其中包含有关将现有复制设置转换为使用基于gtid的复制的信息。

在MySQL 8.0.16之前,当服务器运行时启用全局事务标识符(gtid)时(gtid_mode =对),不启用二进制日志记录bymysql_upgrade(——write-binlog选项)。从MySQL 8.0.16开始,服务器执行整个MySQL升级过程,但是在升级过程中禁用二进制日志记录,所以没有问题。

当服务器开启gtid功能时,不建议加载转储文件。gtid_mode =对),如果您的转储文件包括系统表。, mysqldump为使用非事务性MyISAM存储引擎的系统表发出DML指令,当启用gtid时,这种组合是不允许的。还要注意,从启用了gtid的服务器加载转储文件到启用了gtid的另一个服务器,会生成不同的事务标识符。