将 MariaDB 设置为源数据库 - AWS Database Migration Service
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

将 MariaDB 设置为源数据库

要将 MariaDB 配置为源数据库,请下载 Mariadb_CF.yaml 模板。此 AWS CloudFormation 模板使用所需参数为 Amazon RDS 实例创建 MariaDB。

  1. 在 AWS 管理控制台 上的 Services (服务) 下,选择 CloudFormation

  2. 选择创建堆栈

  3. 对于 Specify template (指定模板),选择 Upload a template file (上传模板文件)

  4. 选择 Choose File (选择文件)

  5. 选择 MariaDB.yaml 文件。

  6. 选择下一步

  7. Specify Stack Details (指定堆栈详细信息) 页面上,根据需要编辑预定义的值,然后选择 Next (下一步):

    • 堆栈名称 为堆栈输入名称。–

    • CIDR – 输入 CIDR IP 范围以访问实例。

    • DBAllocated 存储 输入数据库存储大小 (GB)。–默认值为 20 GB。

    • DBBackupRetentionPeriod – 保留备份的天数。

    • DBInstanceClass – 输入数据库服务器的实例类型。

    • DBMonitoringInterval – 将数据库日志发布到 Amazon CloudWatch 的时间间隔。

    • DBSubnetGroup – 输入数据库子网组。

    • MariaDBEngine – 输入 MariaDB 引擎版本。

    • RDSDBName – 输入数据库的名称。

    • VPCID 输入 VPC 以启动数据库实例。–

  8. Configure stack options (配置堆栈选项) 页面上,对于 Tags (标签),指定任何可选标签,然后选择 Next (下一步)

  9. Review 页面上,选择 I acknowledge that AWS CloudFormation might create IAM resources

  10. 选择创建堆栈

在创建适用于 Amazon RDS 的 MariaDB 实例后,请登录 MariaDB 并运行以下语句,以创建 webdb_user —,这是连接到 DMS 实例以进行迁移的超级用户,并授予所需的权限。

CREATE USER 'webdb_user'@'%' IDENTIFIED BY '******'; GRANT ALL ON migrate.* TO 'webdb_user'@'%' with grant option; grant REPLICATION SLAVE ON *.* TO webdb_user; grant REPLICATION CLIENT ON *.* TO webdb_user;

在本演练中,我们创建了一个名为迁移 的数据库和几个示例表,以及存储过程、触发器、函数等。以下查询提供了迁移数据库中的表列表:

MariaDB [(none)]> use migration Database changed MariaDB [migration]> show tables; +---------------------+ | Tables_in_migration | +---------------------+ | animal_count | | animals | | contacts | | seat_type | | sport_location | | sport_team | | sport_type | +---------------------+ 7 rows in set (0.000 sec)

以下查询返回二级索引列表。

MariaDB [migration]> SELECT DISTINCT TABLE_NAME, INDEX_NAME,NON_UNIQUE -> FROM INFORMATION_SCHEMA.STATISTICS -> WHERE TABLE_SCHEMA = 'migration' and INDEX_NAME <> 'PRIMARY'; +----------------+-------------------+------------+ | TABLE_NAME | INDEX_NAME | NON_UNIQUE | +----------------+-------------------+------------+ | sport_location | city_id_sport_loc | 1 | | sport_team | sport_team_u | 0 | | sport_team | home_field_fk | 1 | +----------------+-------------------+------------+ 3 rows in set (0.000 sec)

以下查询返回触发器列表。

MariaDB [migration]> select TRIGGER_SCHEMA,TRIGGER_NAME -> from information_schema.triggers -> where TRIGGER_SCHEMA='migration'; +----------------+-----------------------+ | TRIGGER_SCHEMA | TRIGGER_NAME | +----------------+-----------------------+ | migration | increment_animal | | migration | contacts_after_update | +----------------+-----------------------+ 2 rows in set (0.001 sec)

以下查询返回过程和函数的列表。

MariaDB [(none)]> select routine_schema as database_name, -> routine_name, -> routine_type as type, -> data_type as return_type -> from information_schema.routines -> where routine_schema not in ('sys', 'information_schema', -> 'mysql', 'performance_schema'); +---------------+----------------+-----------+-------------+ | database_name | routine_name | type | return_type | +---------------+----------------+-----------+-------------+ | migration | CalcValue | FUNCTION | int | | migration | loadMLBPlayers | PROCEDURE | | | migration | loadNFLPlayers | PROCEDURE | | +---------------+----------------+-----------+-------------+ 3 rows in set (0.000 sec)

加载所有数据后,使用 mysqldump 备份数据库元数据。用于转储一个或多个数据库以进行备份或传输到其他数据库服务器的 mysqldump 实用程序。转储通常包含 SQL 语句,用于创建表和/或填充表。您还可以使用 mysqldump 生成逗号分隔值 (CSV)、其他分隔文本或 XML 格式的文件。

使用以下命令导出表和索引定义:

$ mysqldump --no-data --no-create-db --single_transaction -u root -p migration --skip-triggers > mysql_tables_indexes.sql

使用以下命令将例程(存储过程、函数和触发器)导出到文件 routines.sql 中:

$ mysqldump -u root --routines --no-create-info --no-data --no-create-db --skip-opt -p migration > routines.sql

实用程序不提供删除 mysqldump 语句的选项。DEFINER有些 MySQL 客户端提供在创建逻辑备份时忽略定义程序的选项,但这不是默认行为。在 UNIX 或 Linux 环境中使用以下命令可从 DEFINER 中删除 routines.sql:

$ sed -i -e 's/DEFINER=`root`@`localhost`/DEFINER=`master`@`%`/g' routines.sql

我们现在有两个 MariaDB 文件(.sqlmysql_tables_indexes.sql)中的 routines.sql 备份。我们将使用这些文件将表定义加载到 Aurora MySQL 数据库中。

在备份完成到两个 .sql 文件(mysql_tables_indexes.sqlroutines.sql)中后,请使用这些文件将表定义加载到 Aurora MySQL 数据库中。