Mysql 数据库迁移至 Amazon RDS 最佳实践

数据库
0
0
<!--StartFragment--> 在本章节中主要描述,如何使用源MySQL数据库执行数据库迁移到MySQL数据库的目标Amazon RDS的最佳实践。同时由于(源和目标数据库引擎是相同的)——模式结构、数据类型和数据库代码在源和目标数据库之间是兼容的,这意味着这种迁移不需要任何模式转换。 <!--EndFragment--> <!--StartFragment--> ![](https://s3.cn-north-1.amazonaws.com.cn/awschinablog/mysql-database-migration-to-amazon-rds-best-practices1.png) <!--EndFragment--> ![image.png](https://dev-media.amazoncloud.cn/d36127e7cf1d477982464e72c182aca4_image.png "image.png") <!--StartFragment--> 数据库迁移可以通过多种方式执行,可以通过迁移实例的方式,也可以通过DMS进行迁移;这里我们将使用AWS数据库迁移服务(DMS)执行连续的数据复制迁移,迁移思路如下: * 创建目标数据库 * 设置网络 * 创建复制实例 * 创建源和目标段节点 * 配置数据库 * 创建和运行复制任务 * 小结   ## []()1.1创建目标数据库 在配置AWS DMS之前,需要在提供的AWS帐户中创建目标数据库。使用AWS关系数据库服务(RDS)来执行此活动,使得在云中轻松地设置、操作和扩展关系数据库。 1.进入 AWS 管理控制台, 从 服务 中选择 RDS 然后点击 创建数据库 2.在 引擎选项 中,选择 MySQL,版本选择 MySQL 5.6.44   <!--EndFragment--> <!--StartFragment--> ![](https://s3.cn-north-1.amazonaws.com.cn/awschinablog/mysql-database-migration-to-amazon-rds-best-practices2.png) <!--EndFragment--> ![image.png](https://dev-media.amazoncloud.cn/5597d600a0044f6fa7ed30a1c935cd5a_image.png "image.png") <!--StartFragment--> 在 **设置** 部分,为您的新数据库实例配置数据库实例标识符(比如 database-1)、主用户名(比如 admin)和主密码。这里密码设置为“passwr0d” <!--EndFragment--> <!--StartFragment--> ![](https://s3.cn-north-1.amazonaws.com.cn/awschinablog/mysql-database-migration-to-amazon-rds-best-practices3.png) <!--EndFragment--> ![image.png](https://dev-media.amazoncloud.cn/5d1565faa3f24719815c550db6c5d2d4_image.png "image.png") <!--StartFragment--> 数据库选择 db.m5.large来自标准DB实例类,并保留存储参数的默认值。 <!--EndFragment--> <!--StartFragment--> ![](https://s3.cn-north-1.amazonaws.com.cn/awschinablog/mysql-database-migration-to-amazon-rds-best-practices4.png) <!--EndFragment--> ![image.png](https://dev-media.amazoncloud.cn/d6b76c9cf7e34a3496c71db7f8650137_image.png "image.png") <!--StartFragment--> 3.在 可用性与持久性 部分,选用缺省值,创建备用实例(使用多AZ部署更加安全) <!--EndFragment--> <!--StartFragment--> ![](https://s3.cn-north-1.amazonaws.com.cn/awschinablog/mysql-database-migration-to-amazon-rds-best-practices5.png) <!--EndFragment--> ![image.png](https://dev-media.amazoncloud.cn/22ddf9ea836a41729411b8fa7a0e2561_image.png "image.png") <!--StartFragment--> 4.在 **连接** 部分: * 在**Virtual Private Cloud (VPC)**,选择 **Generated VPC**。 * 在**其它连接配置**** -> VPC 安全组**,选择 **新建** VPC 安全组,输入名称(比如 “DB-SG”)   <!--EndFragment--> <!--StartFragment--> ![](https://s3.cn-north-1.amazonaws.com.cn/awschinablog/mysql-database-migration-to-amazon-rds-best-practices6.png) <!--EndFragment--> ![image.png](https://dev-media.amazoncloud.cn/3560a96e749d47e1b767a73abdf853db_image.png "image.png") <!--StartFragment--> 5.对于 **数据库身份验证**,选择 **密码身份验证**。 6.在 **其它配置** 部分,确保 **监控** 下面的 **启用增强监测** 不被选中,如下图所示: <!--EndFragment--> <!--StartFragment--> ![](https://s3.cn-north-1.amazonaws.com.cn/awschinablog/mysql-database-migration-to-amazon-rds-best-practices7.png) <!--EndFragment--> ![image.png](https://dev-media.amazoncloud.cn/988249e2b1394699809b963a5a4e9a88_image.png "image.png") <!--StartFragment--> ![](https://s3.cn-north-1.amazonaws.com.cn/awschinablog/mysql-database-migration-to-amazon-rds-best-practices9.png) <!--EndFragment--> ![image.png](https://dev-media.amazoncloud.cn/a97549082cea45858d11b17fc417cb28_image.png "image.png") <!--StartFragment--> 7.最后,点击创建数据库按钮。 <!--EndFragment--> <!--StartFragment--> ![](https://s3.cn-north-1.amazonaws.com.cn/awschinablog/mysql-database-migration-to-amazon-rds-best-practices10.png) <!--EndFragment--> ![image.png](https://dev-media.amazoncloud.cn/10a20353703a44129f60da699421824e_image.png "image.png") <!--StartFragment--> ## 1.2设置网络 由于在迁移的过程中,不使用VPN或AWS直接连接,因此DMS复制实例将需要通过公共internet连接到源数据库,而通过专用网络连接到目标数据库 <!--EndFragment--> <!--StartFragment--> ![](https://s3.cn-north-1.amazonaws.com.cn/awschinablog/mysql-database-migration-to-amazon-rds-best-practices11.png) <!--EndFragment--> ![image.png](https://dev-media.amazoncloud.cn/65d29d07b2cd4cbbaabbb06c71b2aa31_image.png "image.png") <!--StartFragment--> ### 1.2.1 创建复制子网组 使用AWS DMS的先决条件之一是配置一个子网组,该子网组是将由DMS复制实例使用的子网集合。 1.进入AWS控制台>服务>**Database Migration Service**>子网组,点击创建子网组按钮。 2.在创建复制子网组中输入以下参数值: | **参数** | **值** | | ------ | -------------------------------------------------------- | | 名称 | dms-subnet-group | | 说明 | Default VPC subnet group | | VPC | Generated VPC | | 添加子网 | 选择**Generated VPC-public-a**, **Generated VPC-public-b** | \ <!--EndFragment--> <!--StartFragment--> ![](https://s3.cn-north-1.amazonaws.com.cn/awschinablog/mysql-database-migration-to-amazon-rds-best-practices12.png) <!--EndFragment--> ![image.png](https://dev-media.amazoncloud.cn/8a86329a60974d7dbe9ec7015a9fa3cb_image.png "image.png") <!--StartFragment--> 点击创建子网   ### []()1.2.2 配置安全组 在进行数据库迁移的时候,VPC安全组必须允许从DMS复制实例到目标RDS数据库的入站流量。 * 为DMS复制实例创建一个安全组 1. 进入AWS控制台>服务> EC2 >安全组,点击创建安全组按钮。 2. 输入安全组名称(例如RI-SG),给它一个描述并为VPC字段选择生成的VPC。 <!--EndFragment--> <!--StartFragment--> ![](https://s3.cn-north-1.amazonaws.com.cn/awschinablog/mysql-database-migration-to-amazon-rds-best-practices13.png) <!--EndFragment--> ![image.png](https://dev-media.amazoncloud.cn/ab9635011b7b42e3bcaeafd6cd2916e3_image.png "image.png") <!--StartFragment--> 2\)更新数据库安全组 1. a) 仍然在**AWS 管理控制台 > 服务 > EC2 > 安全组**屏幕中选择之前创建的数据库安全组 **DB-SG** 2. b) 编辑和更新数据库安全组,以允许来自端口3306上的DMS复制实例安全组的入站流量 <!--EndFragment--> <!--StartFragment--> ![](https://s3.cn-north-1.amazonaws.com.cn/awschinablog/mysql-database-migration-to-amazon-rds-best-practices14.png) <!--EndFragment--> ![image.png](https://dev-media.amazoncloud.cn/8b99a03efd5047e9960b1777592edb5e_image.png "image.png") <!--StartFragment--> ## 1.3创建DMS Replication实例 ### []()1.3.1 创建AWS DMS Replication实例 在此步骤中,您将创建一个AWS数据库迁移服务复制实例,该实例启动源数据库和目标数据库之间的连接,传输数据,并缓存在初始数据加载期间源数据库上发生的任何更改。 (1)在AWS控制台内部,进入服务->数据库迁移服务。 (2)点击复制实例中的创建复制实例按钮。 <!--EndFragment--> <!--StartFragment--> ![](https://s3.cn-north-1.amazonaws.com.cn/awschinablog/mysql-database-migration-to-amazon-rds-best-practices15.png) <!--EndFragment--> ![image.png](https://dev-media.amazoncloud.cn/83acca02df504be4878daa6752cc994b_image.png "image.png") <!--StartFragment--> (3)在“创建复制实例”屏幕上,使用以下参数值配置一个新的复制实例: | | | | ------------ | ------------------------ | | **参数** | **值** | | 名称 | replication-instance | | 描述 | DMS replication instance | | 实例类 | dms.t2.medium | | 引擎版本 | 3.1.4 | | 分配的存储空间 (GB) | 50 | | VPC | Generated VPC | | 多可用区 | Unchecked | | 公开访问 | Checked | 如下图所示: <!--EndFragment--> <!--StartFragment--> ![](https://s3.cn-north-1.amazonaws.com.cn/awschinablog/mysql-database-migration-to-amazon-rds-best-practices16.png) <!--EndFragment--> ![image.png](https://dev-media.amazoncloud.cn/ccf5c498c6334d8d925fa6c9db684d8d_image.png "image.png") <!--StartFragment--> 在高级安全性和网络配置中,请确保选择前面创建的复制子网组和复制实例安全组。 <!--EndFragment--> <!--StartFragment--> ![](https://s3.cn-north-1.amazonaws.com.cn/awschinablog/mysql-database-migration-to-amazon-rds-best-practices17.png) <!--EndFragment--> ![image.png](https://dev-media.amazoncloud.cn/8ffd384e6db7408ea31502052cc06e1e_image.png "image.png") <!--StartFragment--> (4)点击创建按钮。 创建复制实例需要花几分钟时间, 确保状态变为可用,再执行下面的步骤。   ## []()1.4创建源环境和目标环境Endpoints 仍旧在 AWS DMS 界面里,进入 终端节点,然后点击 创建终端节点 按钮。   ### []()1.4.1创建源环境endpoint 使用下面的参数去配置endpoint | | | | ------------- | ---------------------------------------------------------------------------------- | | **参数** | **值** | | 终端节点类型 | Source endpoint | | 终端节点标识符 | source-endpoint | | 源引擎 | mysql | | 服务器名称 | Source Environment – **Database Server IP** from the Event Engine – Team Dashboard | | 端口 | 3306 | | 安全套接字层(SSL)模式 | none | | 用户名 | wordpress-user | | 密码 | AWSRocksSince2006 | \ <!--EndFragment--> <!--StartFragment--> ![](https://s3.cn-north-1.amazonaws.com.cn/awschinablog/mysql-database-migration-to-amazon-rds-best-practices18.png) <!--EndFragment--> ![image.png](https://dev-media.amazoncloud.cn/1373490a7b014f3db5b1537d82445b85_image.png "image.png") <!--StartFragment--> 打开测试端点连接(可选)部分,然后在VPC下拉菜单中选择生成的VPC并单击Run Test按钮来验证端点配置是否有效。 <!--EndFragment--> <!--StartFragment--> ![](https://s3.cn-north-1.amazonaws.com.cn/awschinablog/mysql-database-migration-to-amazon-rds-best-practices19.png) <!--EndFragment--> ![image.png](https://dev-media.amazoncloud.cn/2e6cbebb5f154ec7bccda06aa8e66ef0_image.png "image.png") <!--StartFragment--> 测试将运行一分钟,您应该会在Status列中看到成功消息。单击Create endpoint按钮创建端点。 在出现任何错误的情况下—确保您正确配置了端点参数,并且复制实例是在检查了可公开访问的参数后创建的。   ### []()1.4.2 创建目标endpoint 重复所有步骤,以创建具有以下参数值的目标端点: | | | | ------------- | ---------------------------------------------------------- | | **参数** | **值** | | 终端节点类型 | Target endpoint | | 选择RDS数据库实例 | checked | | RDS 实例 | Select your RDS instance from the drop-down | | 终端节点标识符 | target-endpoint | | 目标引擎 | mysql (will be pre-populated) | | 服务器名称 | (leave the the pre-populated value) | | 端口 | 3306 (will be pre-populated) | | 安全套接字层(SSL)模式 | none | | 用户名 | (leave the pre-populated value) | | 密码 | Enter password you used when you creating the RDS database |   ### []()1.4.3 调整参数 在特定于终端的设置->额外连接属性复制-粘贴以下连接参数 | | | -------------------------------------------------------- | | parallelLoadThreads=1; initstmt=SET FOREIGN_KEY_CHECKS=0 | 1.4.4在“测试端点连接”(可选)下拉菜单中选择生成的VPC,然后单击“运行测试”按钮,以验证您的端点是否有效。 如果出现任何错误,请确保RDS数据库的VPC安全组允许来自AWS DMS复制实例安全组(或例如来自整个生成的VPC(10.0.0.0/16))的端口3306上的入站流量。   ## []()1.5配置源数据库 ### []()1.5.1使用更改数据捕获(CDC)运行DMS复制任务 为了确保数据库迁移的停机时间最小化,我们将使用从源数据库到目标数据库的更改的连续复制(也称为更改数据捕获(Change Data Capture, CDC))。有关CDC和AWS DMS的本机CDC支持的更多信息,请参阅 <https://aws.amazon.com/blogs/database/aws-dms-now-supports-native-cdc-support/>。   ### []()1.5.2 在源数据库上启用二进制日志 未了实现从MySQL数据库持续复制AWS DMS,您需要启用二进制日志并对源数据库进行配置更改。 修改“wordpress-user”的权限 (1)登录到源环境数据库服务器 通过Database SSH key(这是个私有.pem密钥),并使用它连接到数据库服务器(用户是centos)。 Microsoft Windows用户可以参考下面的链接。 <https://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/putty.html> Mac OS用户可以参考下面的链接 <https://docs.aws.amazon.com/quickstarts/latest/vmlaunch/step-2-connect-to-instance.html#sshclient> <!--EndFragment--> <!--StartFragment--> (2)为 wordpress-user数据库用户授予额外的特权 在数据库服务器上运行以下命令: | | | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | sudo mysql -u root -pAWSRocksSince2006 GRANT REPLICATION CLIENT ON \*.\* to ‘wordpress-user’;GRANT REPLICATION SLAVE ON \*.\* to ‘wordpress-user’;GRANT SUPER ON \*.\* to ‘wordpress-user’;exit |   (3)创建一个bin logs目录, 在数据库服务器上运行以下命令: | | | ----------------------------------------------- | | sudo su – mysqlmkdir /var/lib/mysql/binlogsexit | 有关二进制日志的更多信息可以在MySQL文档中找到(<https://dev.mysql.com/doc/refman/8.0/en/binary-log.html>)   (4)修改/etc/my.cnf 文件, 运行以下程序来编辑文件: | | | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | sudo vi /etc/my.cnf 然后在\[mysqld]部分添加以下信息: server_id=1log-bin=/var/lib/mysql/binlogs/logbinlog_format=ROWexpire_logs_days=1binlog_checksum=NONEbinlog_row_image=FULLlog_slave_updates=TRUE |   (5)重启Mysql服务, 运行以下命令来应用更改: | | | -------------------------- | | sudo service mysql restart |   (6)测试,运行以下命令来应用更改: | | | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | sudo mysql -u root -pAWSRocksSince2006 select variable_value as “BINARY LOGGING STATUS (log-bin) :: “from information_schema.global_variables where variable_name=’log_bin’; select variable_value as “BINARY LOG FORMAT (binlog_format) :: “from information_schema.global_variables where variable_name=’binlog_format’; exit | 输出必须显示设置为ON的二进制日志状态,如下面的屏幕截图所示: [![](https://s3.cn-north-1.amazonaws.com.cn/awschinablog/mysql-database-migration-to-amazon-rds-best-practices21.png)](https://s3.cn-north-1.amazonaws.com.cn/awschinablog/mysql-database-migration-to-amazon-rds-best-practices21.jpg) 如果确实如此 – 您可以 退出 SSH 了。如果出现任何问题 – 请检查 /var/log/mysqld.log 文件中的错误信息。 ## []()1.6 创建和运行复制任务 回到AWS DMS控制台,进入数据库迁移任务,并单击Create Task按钮。 1)在创建数据库迁移任务屏幕中输入以下参数值: | **参数** | **值** | | -------- | --------------------------------------------------- | | 任务标识符 | replication-cdc | | 复制实例 | replication-instance | | 源终端节点 | source-endpoint | | 目标终端节点 | target-endpoint | | 迁移类型 | Migrate existing data and replicate ongoing changes | | 在创建时启动任务 | Checked | [![](https://s3.cn-north-1.amazonaws.com.cn/awschinablog/mysql-database-migration-to-amazon-rds-best-practices22.png)](https://s3.cn-north-1.amazonaws.com.cn/awschinablog/mysql-database-migration-to-amazon-rds-best-practices22.jpg)   2)在任务设置面板中输入以下值(保持其他值为默认值): | **参数** | **值** | | --------------- | ---------- | | 目标表准备模式 | Do nothing | | 启用CloudWatch 日志 | Checked | | 启用验证 | Checked | <!--StartFragment--> <!--StartFragment--> <!--EndFragment--> ![image.png](https://dev-media.amazoncloud.cn/dae07c6ef98e47699dccea90c65cdf06_image.png "image.png") <!--EndFragment--> ![image.png](https://dev-media.amazoncloud.cn/e21d89a4d8c445c2a061844bccb5de02_image.png "image.png") 3)在表映射面板的 选择向导 UI模式中,点击添加新选择规则按钮,在架构下拉列表中选择wordpress-db。 <!--StartFragment--> ![](https://s3.cn-north-1.amazonaws.com.cn/awschinablog/mysql-database-migration-to-amazon-rds-best-practices24.png) <!--EndFragment--> ![image.png](https://dev-media.amazoncloud.cn/ca2824ef1aab41178c5a632387f4d4a6_image.png "image.png") 4)滚动到屏幕底部,单击创建任务按钮创建任务并开始数据复制即可。 <!--StartFragment--> ![](https://s3.cn-north-1.amazonaws.com.cn/awschinablog/mysql-database-migration-to-amazon-rds-best-practices25.png) <!--EndFragment--> ![image.png](https://dev-media.amazoncloud.cn/96cdfe8f760d46ffbe64ea97143e6302_image.png "image.png") []()       ## 1.7 小结 本篇主要介绍如何将源mysql数据库迁移至Amazon RDS的最佳实践方法,通过上面的步骤可以完整实现数据库的迁移。这里面除了上面的操作步骤的细节,还有目标环境的网络构建,确保目标网络至少2个以上的网络,且有必备的公有子网和私有子网,公有子网能与源环境互通即可。 <!--EndFragment-->
目录
亚马逊云科技解决方案 基于行业客户应用场景及技术领域的解决方案
联系亚马逊云科技专家
亚马逊云科技解决方案
基于行业客户应用场景及技术领域的解决方案
联系专家
0
目录
关闭
contact-us