Amazon Relational Database Service
用户指南 (API 版本 2014-10-31)
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 Amazon AWS 入门

将数据导入到 MariaDB 数据库实例

在下文中,您可以了解有关 将 MariaDB 数据导入到运行 MariaDB 的 Amazon RDS 数据库实例的方法的信息。

要对 MariaDB 数据库实例执行初始数据导入,您可以使用将备份还原到 Amazon RDS MySQL 数据库实例中记录的过程,如下所示:

您还可以使用 AWS Database Migration Service (AWS DMS) 将数据导入到 Amazon RDS 数据库实例。AWS DMS 可以在无停机时间的情况下迁移数据库,对于很多数据库引擎而言,将继续进行持续复制,直到您已准备好切换到目标数据库。您可以使用 AWS DMS 从相同数据库引擎或其他数据库引擎迁移到 MariaDB。如果您正在从其他数据库引擎进行迁移,则可使用 AWS Schema Conversion Tool 迁移未由 AWS DMS 迁移的架构对象。有关 AWS DMS 的更多信息,请参阅什么是 AWS Database Migration Service

当外部实例是 MariaDB 版本 10.0.24 或更高版本时,您可以使用 MariaDB 全局事务标识符 (GTID) 将复制配置到 Amazon RDS MariaDB 数据库实例中,对于 10.0.24 之前的版本,则可以使用 MySQL 实例或 MariaDB 实例的二进制日志坐标来完成该操作。请注意,MariaDB GTID 与 MySQL GTID 的实施不同,后者不受 Amazon RDS 支持。

要将复制配置到 MariaDB 数据库实例中,您可以使用以下过程:

注意

mysql 系统数据库包含登录到数据库实例并访问数据所需的身份验证和授权信息。在数据库实例中删掉、改动、重命名或截取 mysql 数据库中的表、数据或其他内容可能会导致错误,并可能导致无法访问数据库实例和数据。如果发生此情况,您可以使用 AWS CLI restore-db-instance-from-db-snapshot 从快照中还原数据库实例,或使用 restore-db-instance-to-point-in-time 命令恢复数据库实例。

将基于 GTID 的复制配置到 Amazon RDS MariaDB 数据库实例中

您可以将基于 GTID 的复制从版本 10.0.24 或更高版本的外部 MariaDB 实例设置到 Amazon RDS MariaDB 数据库实例中。对 Amazon RDS 设置外部复制主体和副本时,请务必遵循以下准则:

  • 监控作为副本的 Amazon RDS MariaDB 数据库实例的故障转移事件。如果发生故障转移,则可能会在具有不同的网络地址的新主机上重新创建作为副本的数据库实例。有关如何监控故障转移事件的信息,请参阅使用 Amazon RDS 事件通知

  • 在您的主实例上保留二进制日志,直至您确认其已应用于副本。此维护可确保您在发生故障时可还原您的主实例。

  • 在 Amazon RDS 上对 MariaDB 数据库实例启用自动备份。启用自动备份可确保您在需要重新同步主体和副本时能够将副本还原到特定时间点。有关备份和时间点还原的信息,请参阅备份和还原 Amazon RDS 数据库实例

注意

对 Amazon RDS MariaDB 数据库实例启动复制功能所需的权限受到限制,且对 Amazon RDS 主用户不可用。因此,您必须使用 Amazon RDS mysql.rds_set_external_master_gtidmysql.rds_start_replication 命令来设置活动数据库和 Amazon RDS MariaDB 数据库之间的复制。

要启动外部主实例和 Amazon RDS 上的 MariaDB 数据库实例之间的复制,请使用以下步骤。

启动复制

  1. 将源 MariaDB 实例设为只读:

    mysql> FLUSH TABLES WITH READ LOCK; mysql> SET GLOBAL read_only = ON;
  2. 获取外部 MariaDB 实例的当前 GTID。您可以通过使用 mysql 或您选择的查询编辑器运行 SELECT @@gtid_current_pos; 来执行该操作。

    GTID 采用 <domain-id>-<server-id>-<sequence-id> 格式。典型的 GTID 将类似于 0-1234510749-1728。有关 GTID 及其组成部分的更多信息,请参阅 MariaDB 文档中的全局事务 ID

  3. 使用 mysqldump 将数据库从外部 MariaDB 实例复制到 Amazon RDS MariaDB 数据库实例。对于非常大的数据库,您可能需要使用将数据导入到 Amazon RDS MySQL 或 MariaDB 数据库实例中,同时减少停机时间中的过程。

    注意

    确保 -p 选项和输入的密码之间没有空格。

    针对 Linux、OS X 或 Unix:

    mysqldump \ --databases <database_name> \ --single-transaction \ --compress \ --order-by-primary \ -u <local_user> \ -p<local_password> | mysql \ --host=hostname \ --port=3306 \ -u <RDS_user_name> \ -p <RDS_password>

    对于 Windows:

    mysqldump ^ --databases <database_name> ^ --single-transaction ^ --compress ^ --order-by-primary \ -u <local_user> \ -p<local_password> | mysql ^ --host=hostname ^ --port=3306 ^ -u <RDS_user_name> ^ -p <RDS_password>

    mysql 命令中使用 --host--user (-u)--port-p 选项可指定用于连接到 Amazon RDS MariaDB 数据库实例的主机名、用户名、端口和密码。主机名是 Amazon RDS MariaDB 数据库实例终端节点中的 DNS 名称,例如 myinstance.123456789012.us-east-1.rds.amazonaws.com。您可以在 Amazon RDS 管理控制台上的实例详细信息中找到终端节点值。

  4. 再次将源 MariaDB 实例设为可写:

    mysql> SET GLOBAL read_only = OFF; mysql> UNLOCK TABLES;
  5. 在 Amazon RDS 管理控制台中,将承载外部 MariaDB 数据库的服务器的 IP 地址添加到 Amazon RDS MariaDB 数据库实例的 VPC 安全组。有关修改 VPC 安全组的更多信息,请转到 Amazon Virtual Private Cloud 用户指南 中的您的 VPC 的安全组

    您可能还需要配置本地网络,允许来自 Amazon RDS MariaDB 数据库实例 IP 地址的连接,使它能与外部 MariaDB 实例进行通信。要查找 Amazon RDS MariaDB 数据库实例的 IP 地址,请使用 host 命令:

    host <RDS_MariaDB_DB_host_name>

    主机名是 Amazon RDS MariaDB 数据库实例终端节点中的 DNS 名称。

  6. 通过使用所选的客户端,连接到外部 MariaDB 实例并创建将用于复制的 MariaDB 用户。此账户仅用于复制,并且必须仅供您的域使用以增强安全性。以下是示例:

    CREATE USER 'repl_user'@'mydomain.com' IDENTIFIED BY '<password>';
  7. 对于外部 MariaDB 实例,向复制用户授予 REPLICATION CLIENTREPLICATION SLAVE 权限。例如,要为您的域的 repl_user 用户授予所有数据库的 REPLICATION CLIENTREPLICATION SLAVE 权限,请发出以下命令:

    GRANT REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO 'repl_user'@'mydomain.com' IDENTIFIED BY '<password>';
  8. 将 Amazon RDS MariaDB 数据库实例设置为副本。通过使用 mysql.rds_set_external_master_gtid 命令,以主用户身份连接到 Amazon RDS MariaDB 数据库实例,并将外部 MariaDB 数据库标识为复制主体。使用您在步骤 2 中确定的 GTID。以下是示例:

    CALL mysql.rds_set_external_master_gtid ('<master_server_ip_address>', 3306, 'repl_user', '<password>', '<GTID>', 0);

    master_server_ip_address 是主 MariaDB 实例的 IP 地址。当前不支持 EC2 专用 DNS 地址。

  9. 在 Amazon RDS MariaDB 数据库实例上,发出 mysql.rds_start_replication 命令以启动复制:

    CALL mysql.rds_start_replication;

本页内容: