10bet网址
MySQL 8.0参考手册
相关的文档10bet官方网站 本手册下载 本手册节选

5.6.7.3克隆远程数据

clone插件支持以下语法来克隆远程数据;也就是说,从远程MySQL服务器实例(提供者)克隆数据,并将其传输到启动克隆操作的MySQL实例(接收者)。

克隆实例从'用户“@”宿主”:港口被“密码“数据目录[=]”clone_dir'] [require [no] ssl];

地点:

  • 用户是捐赠MySQL服务器实例上的克隆用户。

  • 密码用户密码。

  • 宿主主机名MySQL服务器实例的地址。不支持IPv6地址格式。可以使用IPv6地址的别名。IPv4地址可以直接使用。

  • 港口港口捐赠者MySQL服务器实例的编号。指定的X协议端口mysqlx_port不支持。也不支持通过MySQL路由器连接到捐赠MySQL服务器实例。)

  • 数据目录[=]'clone_dir是一个可选子句,用于为要克隆的数据指定收件人上的目录。如果不想删除收件人数据目录中的现有数据,请使用此选项。必须使用绝对路径,且该目录必须不存在。MySQL服务器必须具有创建目录所需的写访问权限。

    当可选数据目录[=]'clone_dir子句未使用时,克隆操作将删除接收数据目录中的现有数据,用克隆的数据替换它,然后自动重新启动服务器。

  • (需要[不]SSL]显式指定在通过网络传输克隆数据时是否使用加密连接。如果不能满足显式规范,则返回一个错误。如果未指定SSL子句,默认情况下,克隆将尝试建立加密连接,如果安全连接尝试失败,则退回到不安全连接。在克隆加密数据时,无论是否指定了此子句,都需要安全连接。有关更多信息,请参见配置克隆加密连接

请注意

默认情况下,用户创建的InnoDB位于提供MySQL服务器实例的data目录中的表和表空间被克隆到接收MySQL服务器实例的data目录中。如果数据目录[=]'clone_dir子句指定时,它们将被克隆到指定的目录。

用户创建的InnoDB位于施主MySQL服务器实例上data目录之外的表和表空间被克隆到施主MySQL服务器实例上的相同路径。如果表或表空间已经存在,则报告错误。

默认情况下,InnoDB系统表空间、重做日志和撤消表空间被克隆到在提供者上配置的相同位置innodb_data_home_dir而且innodb_data_file_pathinnodb_log_group_home_dir,innodb_undo_directory分别)。如果数据目录[=]'clone_dir子句时,这些表空间和日志将被克隆到指定的目录。

远程克隆先决条件

要执行克隆操作,克隆插件必须在捐赠者和接受者MySQL服务器实例上都是活动的。有关安装说明,请参见第5.6.7.1节“安装克隆插件”

在捐赠者和接受者上需要一个MySQL用户来执行克隆操作克隆的用户).

  • 在捐赠者上,克隆用户需要BACKUP_ADMIN权限,用于访问和传输来自捐赠者的数据,以及在克隆操作期间阻塞DDL。

  • 在收件人上,克隆用户需要CLONE_ADMIN权限,用于替换接收方数据,在克隆操作时阻塞DDL,并自动重启服务器。的CLONE_ADMIN特权包括BACKUP_ADMIN而且关闭隐式的特权。

远程克隆示例中包含了创建克隆用户和授予所需特权的说明,该示例遵循这个先决条件信息。

时检查以下先决条件克隆实例声明执行:

  • 捐赠者和接受者必须有相同的MySQL服务器版本。MYSQL 8.0.17及更高版本支持克隆插件。

    mysql>显示变量:+---------------+--------+ | Variable_name |值  | +---------------+--------+ | 版| 8.0.17  | +---------------+--------+
  • 捐赠者和接受者MySQL服务器实例必须运行在相同的操作系统和平台上。例如,如果捐赠实例运行在Linux 64位平台上,那么接收实例也必须运行在该平台上。有关如何确定操作系统平台的信息,请参阅操作系统文档。10bet官方网站

  • 收件人必须有足够的磁盘空间存放克隆的数据。默认情况下,在克隆提供者数据之前会删除接受者数据,因此只需要为提供者数据提供足够的空间。方法克隆到指定目录数据目录子句,您必须有足够的磁盘空间存放现有的收件人数据和克隆的数据。您可以通过检查文件系统上的数据目录大小和位于数据目录之外的任何表空间的大小来估计数据的大小。在估计供体的数据大小时,只记住这一点InnoDB数据是克隆。如果将数据存储在其他存储引擎中,请相应地调整数据大小估算值。

  • InnoDB允许在数据目录之外创建一些表空间类型。如果提供MySQL服务器实例的表空间位于数据目录之外,克隆操作必须能够访问这些表空间。您可以查询INFORMATION_SCHEMA。文件表来标识位于数据目录之外的表空间。位于数据目录之外的文件具有到数据目录以外的目录的完全限定路径。

    mysql> SELECT FROM INFORMATION_SCHEMA.FILES;
  • 在输入端激活的插件,包括任何密匙环插件,也必须在接收端激活。您可以通过发出显示插件语句或通过查询INFORMATION_SCHEMA。插件表格

  • 捐赠者和接收者必须具有相同的MySQL服务器字符集和排序规则。有关MySQL服务器字符集和排序规则配置的信息,请参见第10.15节“字符集配置”

  • 相同的innodb_page_size而且innodb_data_file_path需要在捐赠者和接受者上进行设置。的innodb_data_file_path在发送方和接收方上设置时,必须指定相同大小的相同数量的数据文件。您可以使用显示变量语法。

    显示变量innodb_page_size;显示变量innodb_data_file_path;
  • 如果克隆加密或页压缩数据,捐赠者和接收者必须具有相同的文件系统块大小。对于页压缩数据,接收文件系统必须支持稀疏文件和孔冲孔,以便在接收端上进行孔冲孔。有关这些特性以及如何识别使用它们的表和表空间的信息,请参见第5.6.7.4节“克隆加密数据”,第5.6.7.5节“克隆压缩数据”.要确定文件系统块大小,请参考操作系统文档。10bet官方网站

  • 如果要克隆加密数据,则需要安全连接。看到配置克隆加密连接

  • clone_valid_donor_list设置中必须包含MySQL服务器实例的主机地址。只能从有效提供程序列表上的主机克隆数据。的MySQL用户SYSTEM_VARIABLES_ADMIN配置此变量需要特权。设置的说明clone_valid_donor_list变量在本节后面的远程克隆示例中提供。你可以查阅clone_valid_donor_list设置使用显示变量语法。

    查询变量clone_valid_donor_list;
  • 必须没有其他克隆操作正在运行。一次只允许一个克隆操作。若要确定是否正在运行克隆操作,请查询clone_status表格看到使用性能模式克隆表监视克隆操作

  • 克隆插件传输数据在1MB的包加上元数据。所需的最低max_allowed_packet值为2MB,因此在提供者和接受者MySQL服务器实例上。一个max_allowed_packet值小于2MB会导致错误。使用以下查询检查您的max_allowed_packet设置:

    mysql>显示变量:max_allowed_packet

以下先决条件也适用:

  • 捐赠者上的撤销表空间文件名必须是唯一的。当数据被克隆到接收者时,撤消表空间(不管它们在捐赠者上的位置如何)将被克隆到innodb_undo_directory控件指定的目录或收件人上的位置数据目录[=]'clone_dir条款,如果使用。因此,在提供者上不允许重复的撤消表空间文件名。从MySQL 8.0.18开始,如果在克隆操作中遇到重复的undo表空间文件名,就会报告错误。在MySQL 8.0.18之前,克隆具有相同文件名的undo表空间可能导致undo表空间文件在接收端被覆盖。

    要查看捐赠者上的undo表空间文件名,以确保它们是唯一的,请使用查询INFORMATION_SCHEMA。文件

    mysql> SELECT TABLESPACE_NAME, FILE_NAME FROM INFORMATION_SCHEMA。file_type为“undo log”的文件;

    有关删除和添加undo表空间文件的信息,请参见第15.6.3.4节“撤消表空间”

  • 默认情况下,接收MySQL服务器实例在数据克隆后自动重启(停止和启动)。要发生自动重新启动,接收方上必须有一个监视进程来检测服务器关闭。否则,克隆操作停止,克隆完成后出现以下错误,并关闭接收MySQL服务器实例:

    ERROR 3707 (HY000): Restart server failed (mysqld is not managed by supervisor process)。

    此错误并不表示克隆失败。这意味着在克隆数据之后,收件人MySQL服务器实例必须重新手动启动。在手动启动服务器之后,您可以连接到接收MySQL服务器实例,并检查Performance Schema克隆表,以验证克隆操作已成功完成(参见使用性能模式克隆表监视克隆操作)。的重新启动语句具有相同的监视过程要求。有关更多信息,请参见第13.7.8.8节,“RESTART语句”.类克隆到命名目录时,此要求不适用数据目录子句,因为在这种情况下不会执行自动重新启动。

  • 有几个变量控制远程克隆操作的各个方面。在执行远程克隆操作之前,请检查变量并根据需要调整设置,以适应您的计算环境。克隆变量设置在执行克隆操作的接收MySQL服务器实例上。看到第5.6.7.12节“克隆系统变量”

克隆远程数据

下面的示例演示克隆远程数据。默认情况下,远程克隆操作会删除收件人数据目录中的数据,用克隆的数据替换它,然后重新启动MySQL服务器。

该示例假设满足了远程克隆的前提条件。看到远程克隆先决条件

  1. 使用管理用户帐户登录到捐赠MySQL服务器实例。

    1. 方法创建克隆用户BACKUP_ADMIN特权。

      CREATE USER 'donor_clone_user'@'example.donor.host.com' IDENTIFIED BY '密码”;mysql>授权BACKUP_ADMIN*“donor_clone_user”@“example.donor.host.com”;
    2. 安装克隆插件:

      mysql>安装插件克隆SONAME 'mysql_clone.so';
  2. 使用管理用户帐户登录到接收MySQL服务器实例。

    1. 方法创建克隆用户CLONE_ADMIN特权。

      mysql> CREATE USER 'recipient_clone_user'@ example.recipi.host.com ' IDENTIFIED BY '密码”;mysql>设置CLONE_ADMIN*“recipient_clone_user”@“example.recipient.host.com”;
    2. 安装克隆插件:

      mysql>安装插件克隆SONAME 'mysql_clone.so';
    3. 将捐赠者MySQL服务器实例的主机地址添加到clone_valid_donor_list变量设置。

      SET GLOBAL clone_valid_donor_list = 'example.donor.host.com3306”;
  3. 以前面创建的clone用户登录到接收MySQL服务器实例(recipient_clone_user‘@’example.recipient.host.com),并执行克隆实例声明。

    mysql>克隆实例从'donor_clone_user'@'example.donor.host.com':3306 IDENTIFIED BY '密码”;

    数据克隆完成后,接收服务器上的MySQL服务器实例将自动重启。

    有关监视克隆操作状态和进度的信息,请参见第5.6.7.9节“监视克隆操作”

克隆到命名目录

默认情况下,远程克隆操作将删除收件人数据目录中的数据,并将其替换为克隆的数据。通过克隆到命名目录,可以避免从接收数据目录中删除现有数据。

克隆到命名目录的过程与中描述的过程相同克隆远程数据只有一个例外:克隆实例语句必须包含数据目录条款。例如:

mysql>克隆实例用户“@”example.donor.host.com”:3306被“密码'数据目录= '/ / clone_dir /路径”;

必须使用绝对路径,且该目录必须不存在。MySQL服务器必须具有创建目录所需的写访问权限。

当克隆到指定目录时,数据克隆完成后,接收MySQL服务器实例不会自动重启。如果你想在指定目录上重新启动MySQL服务器,必须手动执行:

壳> mysqld_safe——datadir =/ / clone_dir /路径

在哪里/ / clone_dir /路径是收件人上指定目录的路径。

配置克隆加密连接

您可以为远程克隆操作配置加密连接,以保护通过网络克隆的数据。在克隆加密数据时,默认情况下需要加密连接。(见第5.6.7.4节“克隆加密数据”)。

下面的说明描述了如何配置接收MySQL服务器实例以使用加密连接。假定提供的MySQL服务器实例已经配置为使用加密连接。如果没有,请参考第6.3.1节“配置MySQL使用加密连接”用于服务器端配置说明。

配置接收MySQL服务器实例使用加密连接。

  1. 使捐赠者MySQL服务器实例的客户端证书和密钥文件对接收主机可用。可以使用安全通道将文件分发到接收主机,也可以将它们放在接收主机可以访问的挂载分区上。提供的客户端证书和密钥文件包括:

    • ca.pem

      自签名证书颁发机构(CA)文件。

    • client-cert.pem

      客户端公钥证书文件。

    • client-key.pem

      客户端私钥文件。

  2. 在接收MySQL服务器实例上配置以下SSL选项。

    例如:

    clone_ssl_ca = /路径// ca。pem clone_ssl_cert = /路径// client-cert。pem clone_ssl_key = /路径// client-key.pem
  3. 若要要求使用加密连接,请包含需要SSL条款。克隆关于收件人的声明。

    mysql>克隆实例用户“@”example.donor.host.com”:3306被“密码'数据目录= '/ / clone_dir /路径“需要SSL;

    如果未指定SSL子句,克隆插件在默认情况下尝试建立加密连接,如果加密连接尝试失败,则退回到未加密连接。

    请注意

    如果要克隆加密数据,则默认情况下需要加密连接,而不管是否需要SSL子句指定。使用不需要SSL如果试图克隆加密数据,则会导致错误。