暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

17.1.3.2 Setting Up Replication Using GTIDs

原创 由迪 2020-02-28
584

本节介绍了在MySQL 5.6中配置和启动基于GTID的复制的过程。这是一个 “ 冷启动 ”过程,假定您是第一次启动复制母版,或者可以停止它。有关使用来自正在运行的主服务器的GTID来配置复制从服务器的信息,请参见 第17.1.3.3节“使用GTID进行故障转移和横向扩展”。

对于最简单的GTID复制拓扑(由一个主节点和一个从属节点组成),此启动过程中的关键步骤如下:

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

停止两个服务器。

重新启动两台服务器,使其启用GTID,二进制日志记录和从属更新日志记录,并禁用对基于GTID的复制不安全的语句。此外,服务器应以只读模式启动,并且应防止从SQL和I / O线程在从服务器上启动。

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

指示从属服务器将主服务器用作复制数据源并使用自动定位。本节后面的示例中描述了完成此步骤所需的SQL语句。

进行新的备份。包含没有GTID的事务的二进制日志不能在启用了GTID的服务器上使用,因此在此之前进行的备份不能与新配置一起使用。

启动从服务器,然后在两台服务器上再次禁用只读模式,以便它们可以接受更新。

在下面的示例中,两个服务器已经使用MySQL的“ 经典 ” 基于文件的复制协议作为主服务器和从服务器运行。

遵循的大多数步骤要求使用MySQL root帐户或具有SUPER特权的另一个MySQL用户帐户。 mysqladmin shutdown 需要SUPER特权或 SHUTDOWN特权。

步骤1:同步服务器。 将服务器设为只读。为此,read_only通过在两个服务器上执行以下语句来启用 系统变量:

mysql> SET @@GLOBAL.read_only = ON;
等待所有正在进行的事务提交或回滚。然后,让从机赶上主机。在继续之前,确保从站已处理所有更新,这一点非常重要。

如果您将二进制日志用于复制以外的其他用途,例如进行时间点备份和还原,请等到不再需要包含没有GTID的事务的旧二进制日志。理想情况下,请等待服务器清除所有二进制日志,然后等待任何现有备份到期。

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

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

shell> mysqladmin -uusername -p shutdown

然后在提示时提供该用户的密码。

步骤3:重启两个启用了GTID的服务器。 要启用具有全局事务标识符的二进制日志记录,必须以GTID模式,二进制日志记录,启用从属更新日志记录并禁用对基于GTID的复制不安全的语句来启动每个服务器。此外,应通过以只读模式启动这两个服务器,以防止在这两个服务器上执行不必要或意外的更新。这意味着两个服务器必须(至少)使用以下mysqld_safe调用中所示的选项启动 :

shell> mysqld_safe --gtid_mode=ON --log-bin --log-slave-updates --enforce-gtid-consistency &

此外,您应该使用该–skip-slave-start选项以及在刚刚显示的示例中指定的其他服务器选项启动从属 服务器。

注意
gtid_mode不是布尔值,而是枚举。设置此选项时,请使用一个值ON或OFF仅使用一个值 。使用数字值(例如0或1)可能会导致意外结果。

有关gtid_mode和 enforce_gtid_consistency变量的更多信息 ,请参见第17.1.4.5节“全局事务ID选项和变量”。

根据您的配置,为mysqld_safe或其他 mysqld启动脚本提供其他选项 。

步骤4:指示从属设备使用主设备。 告诉从服务器将主服务器用作复制数据源,并使用基于GTID的自动定位而不是基于文件的定位。CHANGE MASTER TO在从站上执行一条语句,使用该 MASTER_AUTO_POSITION选项告诉从站该事务将由GTID标识。

您可能还需要为主服务器的主机名和端口号以及复制用户帐户的用户名和密码提供适当的值,从服务器可以使用该值来连接主服务器。如果已经在步骤1之前设置了这些选项,并且无需进行进一步更改,则可以安全地从此处显示的语句中省略相应的选项。

mysql> CHANGE MASTER TO
     >     MASTER_HOST = host,
     >     MASTER_PORT = port,
     >     MASTER_USER = user,
     >     MASTER_PASSWORD = password,
     >     MASTER_AUTO_POSITION = 1;


无论是MASTER_LOG_FILE选择还是 MASTER_LOG_POS选择可能与使用 MASTER_AUTO_POSITION等于1尝试这样做会导致CHANGE MASTER TO失败,错误陈述。

步骤5:进行新备份。 启用GTID以后,在启用GTID之前进行的现有备份将无法再在这些服务器上使用。此时,请进行新的备份,以免没有可用的备份。

例如,您可以FLUSH LOGS在进行备份的服务器上执行。然后,要么明确地进行备份,要么等待您可能已设置的任何定期备份例程的下一个迭代。

步骤6:启动从站并禁用只读模式。 像这样启动slave:

mysql> START SLAVE;

通过运行以下语句,允许主服务器再次开始接受更新:

mysql> SET @@GLOBAL.read_only = OFF;

基于GTID的复制现在应该正在运行,并且您可以像以前一样在主服务器上开始(或恢复)活动。 第17.1.3.3.3节“使用GTID进行故障转移和横向扩展”讨论了使用GTID时创建新的从服务器。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论