相关文章推荐
想出家的回锅肉  ·  Spring Cloud Config ...·  6 月前    · 
暴躁的李子  ·  c++ fstream open try ...·  7 月前    · 
从容的梨子  ·  在Python中对2D ...·  9 月前    · 
阳光的充值卡  ·  AddMonths built-in ...·  1 年前    · 
笑点低的毛豆  ·  IMX6 Daul Android ...·  1 年前    · 
  1. 准备外部 MySQL 数据库实例。

  2. 准备用于复制的源 MySQL 数据库实例。

  3. 使用 mysqldump 实用程序将数据库从源 MySQL 数据库实例传输到外部 MySQL 数据库。

  4. 开始复制到外部 MySQL 数据库。

  5. 导出完毕后,停止复制。

准备外部 MySQL 数据库

执行以下步骤来准备外部 MySQL 数据库。

准备外部 MySQL 数据库
  1. 安装外部 MySQL 数据库。

    以主用户身份连接到外部 MySQL 数据库。然后创建支持访问数据库的管理员、应用程序和服务所需的用户。

    按照 MySQL 文档中的说明以副本的形式准备外部 MySQL 数据库。有关更多信息,请参阅 MySQL 文档

    配置一条传出规则,使外部 MySQL 数据库在导出过程中作为只读副本运行。该传出规则将允许外部 MySQL 数据库在复制期间连接到源 MySQL 数据库实例。指定传出规则以允许通过传输控制协议 (TCP) 连接到源 MySQL 数据库实例的端口和 IP 地址。

    为您的环境指定适当的传出规则:

    如果外部 MySQL 数据库在基于 Amazon VPC 服务的 Virtual Private Cloud (VPC) 中的 Amazon EC2 实例中运行,请在 VPC 安全组中指定传出规则。有关更多信息,请参阅 使用安全组控制访问权限

    如果外部 MySQL 数据库安装在本地,请在防火墙中指定传出规则。

    如果外部 MySQL 数据库在 VPC 中运行,则除了安全组传出规则外,还应配置 VPC 访问控制列表 (ACL) 规则:

    配置允许将 TCP 流量从源 MySQL 数据库实例的 IP 地址传入到端口 1024–65535 的 ACL 传入规则。

    配置允许将 TCP 流量传出到源 MySQL 数据库实例的端口 和 IP 地址的 ACL 传出规则。

    有关 Amazon VPC 网络 ACL 的更多信息,请参阅《Amazon VPC 用户指南》中的 网络 ACL

    (可选)将 max_allowed_packet 参数设置为最大大小,以避免复制错误。建议使用此设置。

    准备源 MySQL 数据库实例

    执行以下步骤以复制源的形式准备源 MySQL 数据库实例。

    准备源 MySQL 数据库实例
    1. 确保设置复制时您的客户端计算机有足够的磁盘空间来保存二进制日志。

      连接到源 MySQL 数据库实例,并按照 MySQL 文档中 创建用于复制的用户 中的说明,创建复制账户。

      在运行源 MySQL 数据库实例的系统上配置传入规则,以允许外部 MySQL 数据库在复制期间连接。指定一条传入规则,以允许从外部 MySQL 数据库的 IP 地址通过 TCP 连接到源 MySQL 数据库实例使用的端口。

      指定传出规则:

      如果源 MySQL 数据库实例在 VPC 中运行,请在 VPC 安全组中指定传入规则。有关更多信息,请参阅 使用安全组控制访问权限

      如果源 MySQL 数据库实例在 VPC 中运行,则除了安全组传入规则外,还要配置 VPC ACL 规则。

      配置 ACL 传入规则,以允许从外部 MySQL 数据库的 IP 地址通过 TCP 连接到 Amazon RDS 实例使用的端口。

      配置 ACL 出口规则,以允许从端口 1024-65535 通过 TCP 连接到外部 MySQL 数据库的 IP 地址。

      有关 Amazon VPC 网络 ACL 的更多信息,请参阅《Amazon VPC 用户指南》中的 网络 ACL

      确保设置的备份保留期足够长,以便在导出期间不会清除任何二进制日志。如果在导出完成前清除了所有日志,您必须从头重新启动复制进程。有关设置备份保留期的更多信息,请参阅 备份简介

      使用 mysql.rds_set_configuration 存储过程将二进制日志文件保留期设置得足够长,以便在导出期间不会清除二进制日志文件。有关更多信息,请参阅 访问 MySQL 二进制日志

      从源 MySQL 数据库实例创建 Amazon RDS 只读副本,以进一步确保不会清除源 MySQL 数据库实例的二进制日志文件。有关更多信息,请参阅 创建只读副本

      在创建 Amazon RDS 只读副本后,调用 mysql.rds_stop_replication 存储过程以停止复制过程。源 MySQL 数据库实例不会再清除其二进制日志文件,以便这些文件可用于复制过程。

      (可选)将 max_allowed_packet slave_max_allowed_packet 参数都设置为最大大小,以避免复制错误。两个参数的最大大小为 1 GB。建议对两个参数都使用此设置。有关设置参数的信息,请参阅 修改数据库参数组中的参数

      复制数据库

      执行以下步骤以复制数据库。

      复制数据库
      1. 连接到源 MySQL 数据库实例的 RDS 只读副本,然后运行 MySQL SHOW REPLICA STATUS\G 语句。请记录下以下值:

        Exec_Master_Log_Pos

        注意

        以前的 MySQL 版本使用的是 SHOW SLAVE STATUS ,而不是 SHOW REPLICA STATUS 。如果您使用的 MySQL 版本低于 8.0.23,那么请使用 SHOW SLAVE STATUS

        使用 mysqldump 实用程序创建快照,此过程会将数据从 Amazon RDS 复制到本地客户端计算机。确保您的客户端计算机有足够的空间容纳要复制的数据库中的 mysqldump 文件。为大量数据库完成此过程可能需要数小时的时间。按照 MySQL 文档中 使用 mysqldump 创建数据快照 中的说明进行操作。

        以下示例在客户端上运行 mysqldump ,并将转储写入文件。

        对于 Linux、macOS 或 Unix:

        mysqldump -h source_MySQL_DB_instance_endpoint \ -u user \ -ppassword \ --port=3306 \ --single-transaction \ --routines \ --triggers \ --databases database database2 > path/rds-dump.sql

        对于 Windows:

        mysqldump -h source_MySQL_DB_instance_endpoint ^ -u user ^ -ppassword ^ --port=3306 ^ --single-transaction ^ --routines ^ --triggers ^ --databases database database2 > path\rds-dump.sql

        您可以将备份文件加载到外部 MySQL 数据库中。有关更多信息,请参阅 MySQL 文档中的 重新加载 SQL 格式备份 。您可以运行另一个实用程序以将数据加载到外部 MySQL 数据库中。

        执行以下步骤以完成导出。

        使用 MySQL CHANGE MASTER 语句配置外部 MySQL 数据库。指定授予 REPLICATION SLAVE 权限的用户的 ID 和密码。指定您对 RDS 只读副本运行的 MySQL SHOW REPLICA STATUS\G 语句所返回的 Master_Host Master_Port Relay_Master_Log_File Exec_Master_Log_Pos 值。有关更多信息,请参阅 MySQL 文档

        注意

        以前的 MySQL 版本使用的是 SHOW SLAVE STATUS ,而不是 SHOW REPLICA STATUS 。如果您使用的 MySQL 版本低于 8.0.23,那么请使用 SHOW SLAVE STATUS

        使用 MySQL START REPLICA 命令启动从源 MySQL 数据库实例到外部 MySQL 数据库的复制。

        执行此操作将启动从源 MySQL 数据库实例进行复制的过程,并会导出在停止从 Amazon RDS 只读副本进行复制后发生的所有源更改。

        注意

        以前的 MySQL 版本使用的是 START SLAVE ,而不是 START REPLICA 。如果您使用的 MySQL 版本低于 8.0.23,那么请使用 START SLAVE

        对外部 MySQL 数据库运行 MySQL SHOW REPLICA STATUS\G 命令,以验证它是否作为只读副本运行。有关解释结果的更多信息,请参阅 MySQL 文档