Setup MariaDB as a source database - AWS Database Migration Service
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

如果我们为英文版本指南提供翻译,那么如果存在任何冲突,将以英文版本指南为准。在提供翻译时使用机器翻译。

Setup MariaDB as a source database

要将MariAdB配置为源数据库,请下载 Mariadb_cf.yaml模板. 这个 AWS CloudFormation 模板创建 Amazon RDS 对于具有所需参数的MariADB实例。

  1. 在 AWS 管理控制台,下方 Services,选择 Cloudformation.

  2. 选择 Create Stack.

  3. 对于 Specify template,选择 Upload a template file.

  4. 选择 Choose File.

  5. 选择 MariaDB.yaml 文件。

  6. 选择 Next.

  7. 指定堆栈详细信息 页面,根据需要编辑预定义值,然后选择 Next:

    • Stack name – Enter a name for the stack.

    • CIDR – Enter the CIDR IP range to access the instance.

    • DBAllocated Storage – Enter the database storage size in GB. The default is 20 GB.

    • DBBackupRetentionPeriod – The number of days to retain backups.

    • DBInstanceClass – Enter the instance type of the database server.

    • DBMonitoringInterval – Interval to publish database logs to Amazon CloudWatch.

    • DBSubnetGroup – Enter the DB subnet group.

    • MariaDBEngine – Enter the MariaDB engine version.

    • RDSDBName – Enter the name of the database.

    • VPCID – Enter the VPC to launch your DB instance.

  8. 配置堆栈选项 页面, 标签,指定任何可选标签,然后选择 下一步.

  9. 审核 页面,选择 我确认AWSCloudFormation可能会创建IAM资源.

  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;

在这个步骤中,我们创建了一个名为 migration 还有几个样本表以及已存储的程序、触发器、功能等。以下查询提供表格列表 migration 数据库:

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 备份数据库元数据。TheThethe 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

TheThethe mysqldump 实用程序不提供删除A的选项 DEFINER 声明。某些Mysql客户端提供在创建逻辑备份时忽略定义器的选项,但这并不是默认行为。在UNIX或Linux环境中使用以下命令删除 DEFINER 从起 routines.sql:

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

我们现在有两个马里亚B .sql 文件(mysql_tables_indexes.sqlroutines.sql)。我们将使用这些文件将表定义加载到 Aurora MySQL 数据库。

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