10bet网址
MySQL复制
相关的文档10bet官方网站 下载此节选
PDF(美国高级主任)- 1.5 mb
PDF (A4)- 1.6 mb
HTML下载(TGZ)- 322.5 kb
HTML下载(Zip)- 330.4 kb


2.3.4使用gtid建立复制

介绍在MySQL 8.0系统中配置并启动基于gtid的复制的流程。这是一个冷启动过程,该过程假设您是第一次启动源服务器,或者可以停止源服务器;有关从运行中的源服务器使用gtid提供副本的信息,请参见第2.3.5节,“使用gtid进行故障转移和扩展”.有关在线更改服务器GTID模式的信息,请参见第2.4节“在线服务器上更改GTID模式”

对于尽可能简单的GTID复制拓扑结构(包括一个源和一个副本),启动过程中的关键步骤如下:

  1. 如果复制已经在运行,则通过将两个服务器设置为只读来同步它们。

  2. 停止两个服务器。

  3. 重新启动两个服务器,启用gtid并配置正确的选项。

    mysqld启动服务器所需的选项将在本节后面的示例中讨论。

  4. 指示副本使用源作为复制数据源并使用自动定位。完成此步骤所需的SQL语句将在本节后面的示例中描述。

  5. 做一个新的备份。包含没有gtid的事务的二进制日志不能在启用了gtid的服务器上使用,因此在此之前所做的备份不能用于您的新配置。

  6. 启动副本,然后在两个服务器上禁用只读模式,以便它们可以接受更新。

在下面的示例中,两台服务器已经作为源和副本运行,使用MySQL的基于位置的二进制日志复制协议。如果从新服务器开始,请参见第2.2.3节“创建复制用户”有关为复制连接添加特定用户的信息和第2.2.1节“设置复制源配置”属性的信息server_id变量。下面的例子展示了如何存储mysqld服务器选项文件中的启动选项,请参见使用选项文件获取更多信息。或者,您可以在运行时使用启动选项mysqld

下面的大多数步骤都需要使用MySQL帐户或其他MySQL用户帐户超级特权。mysqladmin关闭要求超级特权还是关闭特权。

步骤1:同步服务器只有在使用已经复制但不使用gtid的服务器时,才需要此步骤。对于新服务器,请继续执行步骤3。属性将服务器设置为只读read_only系统变量为在每个服务器上执行以下命令:

mysql> SET @@GLOBAL。read_only = ON;

等待所有正在进行的事务提交或回滚。然后,允许副本赶上源文件。在继续之前,确保副本已经处理了所有更新是非常重要的

如果将二进制日志用于复制以外的任何用途,例如执行时间点备份和恢复,请等到不需要包含没有gtid的事务的旧二进制日志时再使用。理想情况下,等待服务器清除所有二进制日志,并等待任何现有备份过期。

重要的

重要的是要理解,不能在启用了gtid的服务器上使用包含没有gtid的事务的日志。在继续之前,必须确保没有gtid的事务在拓扑中不存在。

步骤2:停止两台服务器。停止每个服务器使用mysqladmin如图所示,其中用户名是有足够权限关闭服务器的MySQL用户的用户名:

Shell > mysqladmin -u用户名- p关闭

然后在提示符处输入该用户的密码。

步骤3:启用gtid启动两台服务器。为了启用基于GTID的复制,每个服务器必须在启动时启用GTID模式gtid_mode变量来,以及enforce_gtid_consistency变量启用,以确保只记录对基于gtid的复制安全的语句。例如:

在enforce-gtid-consistency gtid_mode = =

启动每个副本——skip-slave-start选项,或从MySQL 8.0.24,该skip_slave_start系统变量,以确保在配置副本设置之前复制不会启动。有关GTID相关选项和变量的详细信息,请参见第2.6.5节,全局事务ID系统变量

类时,为了使用gtid,并不强制启用二进制日志记录mysql。gtid_executed表.源服务器必须始终启用二进制日志记录,以便能够进行复制。但是,副本服务器可以使用gtid,但不使用二进制日志记录。如果需要在副本服务器上禁用二进制日志记录,可以通过指定——skip-log-bin而且——log-slave-updates =了副本的选项。

步骤4:配置副本使用基于gtid的自动定位。告诉副本使用带有基于GTID事务的源作为复制数据源,并使用基于GTID的自动定位,而不是基于文件的定位。发出一个将复制源更改为语句(从MySQL 8.0.23)或将master更改为语句(在MySQL 8.0.23之前)的副本,包括SOURCE_AUTO_POSITION|MASTER_AUTO_POSITION选项,告诉副本源的事务是由gtid标识的。

您可能还需要为源的主机名和端口号提供适当的值,以及复制用户帐户的用户名和密码,副本可以使用复制用户帐户连接到源;如果在第1步之前已经设置了这些选项,并且不需要进行进一步的更改,则可以安全地从这里所示的语句中省略相应的选项。

mysql>更改主机为> MASTER_HOST =宿主, > master_port =港口, > master_user =用户, > master_password =密码, > master_auto_position = 1;从MySQL 8.0.23: MySQL > CHANGE REPLICATION SOURCE TO > SOURCE_HOST =宿主, > source_port =港口, > source_user =用户, > source_password =密码, > source_auto_position = 1;

步骤5:进行新的备份。启用gtid后,在启用gtid之前所做的现有备份不能再在这些服务器上使用。此时请执行一个新的备份,这样就不会没有可用的备份。

例如,您可以执行刷新日志在进行备份的服务器上。然后,要么显式地进行备份,要么等待您可能已经设置的任何定期备份例程的下一次迭代。

步骤6:启动副本并禁用只读模式。像这样开始副本:

mysql> START SLAVE;或者从MySQL 8.0.22: MySQL > START REPLICA;

如果在步骤1中已将服务器设置为只读,则需要执行以下步骤。要允许服务器再次开始接受更新,发出以下语句:

mysql> SET @@GLOBAL。read_only = OFF;

基于gtid的复制现在应该正在运行,您可以像以前一样开始(或恢复)源上的活动。第2.3.5节,“使用gtid进行故障转移和扩展”,讨论了在使用gtid时如何创建新的副本。