今天,我们讲讲如何使用源MySQL数据库执行数据库迁移到MySQL数据库的目标Amazon RDS的方案,同时由于(源和目标数据库引擎是相同的)——模式结构、数据类型和数据库代码在源和目标数据库之间是兼容的,这意味着这种迁移不需要任何模式转换。
数据库迁移可以通过多种方式执行:可以通过迁移实例的方式,也可以通过DMS进行迁移。这里我们将使用AWS数据库迁移服务(DMS)执行连续的数据复制迁移,迁移思路如下:
创建目标数据库
设置网络
创建复制实例
创建源和目标段节点
配置数据库
创建和运行复制任务
1.1
创建目标数据库
在配置AWS DMS之前,需要在提供的AWS帐户中创建目标数据库。使用AWS关系数据库服务(RDS)来执行此活动,使得在云中轻松地设置、操作和扩展关系数据库。
1. 进入AWS管理控制台, 从服务中选择RDS然后点击创建数据库
2. 在引擎选项中,选择MySQL,版本选择MySQL 5.6.44
在设置部分,为新数据库实例配置数据库实例标识符(比如 database-1)、主用户名(比如 admin)和主密码。这里密码设置为“passwr0d”
数据库选择db.m5.large来自标准DB实例类,并保留存储参数的默认值。
3. 在可用性与持久性部分,选用缺省值,创建备用实例(使用多AZ部署更加安全)
4. 在连接部分:
在Virtual Private Cloud (VPC),选择 Generated VPC。
在其它连接配置 -> VPC 安全组,选择 新建 VPC 安全组,输入名称(比如 “DB-SG”)
5. 对于 数据库身份验证,选择 密码身份验证。
6. 在 其它配置 部分,确保 监控 下面的 启用增强监测 不被选中,如下图所示:
7. 最后,点击创建数据库按钮。
1.2
设置网络
由于在迁移的过程中,不使用VPN或AWS直接连接,因此DMS复制实例将需要通过公共internet连接到源数据库,而通过专用网络连接到目标数据库
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 |
点击创建子网
1.2.2
配置安全组
在进行数据库迁移的时候,VPC安全组必须允许从DMS复制实例到目标RDS数据库的入站流量。
为DMS复制实例创建一个安全组
进入AWS控制台>服务> EC2 >安全组,点击创建安全组按钮。
输入安全组名称(例如RI-SG),给它一个描述并为VPC字段选择生成的VPC。
更新数据库安全组
a) 仍然AWS管理控制台 > 服务 > EC2 > 安全组屏幕中选择之前创建的数据库安全组 DB-SG
b) 编辑和更新数据库安全组,以允许来自端口3306上的DMS复制实例安全组的入站流量
1.3
创建DMS Replication实例
1.3.1
创建AWS DMS Replication实例
在此步骤中,将创建一个AWS数据库迁移服务复制实例,这实例启动源数据库和目标数据库之间的连接,传输数据,并缓存在初始数据加载期间源数据库上发生的任何更改。
(1)在AWS控制台内部,进入服务->数据库迁移服务。
(2)点击复制实例中的创建复制实例按钮。
(3)在“创建复制实例”屏幕上,使用以下参数值配置一个新的复制实例:
参数 | 值 |
名称 | replication-instance |
描述 | DMS replication instance |
实例类 | dms.t2.medium |
引擎版本 | dms.t2.medium |
分配的存储空间 (GB) | 50 |
VPC | Generated VPC |
多可用区 | Unchecked |
公开访问 | Checked |
如下图所示:
在高级安全性和网络配置中,请确保选择前面创建的复制子网组和复制实例安全组。
点击创建按钮。
创建复制实例需要花几分钟时间,确保状态变为可用,再执行下面的步骤。
1.4
创建源环境和目标环境Endpoints
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 |
密码 | wordpress-user |
打开测试端点连接(可选)部分,然后在VPC下拉菜单中选择生成的VPC并单击Run Test按钮来验证端点配置是否有效。
测试将运行一分钟,会在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) |
端口 | 306 (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
如果出现任何错误,请确保RDS数据库的VPC安全组允许来自AWS DMS复制实例安全组(或例如来自整个生成的VPC(10.0.0.0/16))的端口3306上的入站流量。1.4.4在“测试端点连接”(可选)下拉菜单中选择生成的VPC,然后单击“运行测试”按钮,以验证端点是否有效。
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))。
1.5.2
在源数据库上启用二进制日志
未了实现从MySQL数据库持续复制AWS DMS,需要启用二进制日志并对源数据库进行配置更改。
修改“wordpress-user”的权限
(1)登录到源环境数据库服务器
通过Database SSH key(这是个私有.pem密钥),并使用它连接到数据库服务器(用户是centos)。
(2)为 wordpress-user数据库用户授予额外的特权
在数据库服务器上运行以下命令:
sudo mysql -u root -p
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 – mysql
mkdir /var/lib/mysql/binlogs
exit
(4)修改/etc/my.cnf 文件,
运行以下程序来编辑文件:
sudo vi /etc/my.cnf
然后在[mysqld]部分添加以下信息:
server_id=1
log-bin=/var/lib/mysql/binlogs/log
binlog_format=ROW
expire_logs_days=1
binlog_checksum=NONE
binlog_row_image=FULL
log_slave_updates=TRUE
(5)重启Mysql服务,
运行以下命令来应用更改:
sudo service mysql restart
(6)测试,运行以下命令来应用更改:
sudo mysql -u root -p
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的二进制日志状态,如下面的屏幕截图所示:
如果确实如此 – 您可以 退出 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 |
2)在任务设置面板中输入以下值(保持其他值为默认值):
参数 | 值 |
目标表准备模式 | Do nothing |
启用CloudWatch 日志 | Checked |
启用验证 | Checked |
3)在表映射面板的选择向导 UI模式中,点击添加新选择规则按钮,在架构下拉列表中选择wordpress-db。
4)滚动到屏幕底部,单击创建任务按钮创建任务并开始数据复制即可。
以上介绍了如何将源mysql数据库迁移至Amazon RDS的方案,通过上面的步骤可以完整实现数据库的迁移。这里面除了上面的操作步骤的细节,还有目标环境的网络构建,确保目标网络至少2个以上的网络,且有必备的公有子网和私有子网,公有子网能与源环境互通即可。
敏捷云是一家专注为企业客户提供AWS云服务咨询、迁移、托管运维和解决方案的创新公司,我们拥有丰富的数据库迁移经验,不但帮助客户安全高效地把数据迁移上云,还为企业优化成本,降低运维费用,让用户拥有优质云端应用体验。
文章资料来源AWS官方,由敏捷云编写
图片来自网络,版权归原作者所有
侵删致歉
延伸阅读:
【AWS ·创新科技】 关于AWS CDK 构建 EKS 平台
【AWS ·创新科技】当 DR 灾备遇到 KMS( 二)
【AWS ·创新科技】当 DR 灾备遇到 KMS(一)
【AWS ·创新科技】AWS CloudFront 根据客户端IP做302重定向
【AWS ·创新科技】AWS CloudFront + Lambda@Edge 的切图方案
【AWS ·创新科技】使用AWS Lambda和Amazon Cloudwatch定时重启Instance指南
F5的分布式多云活架构
F5 的公有云WEB安全与合规性
Fortinet SD-WAN的优势与应用场景
Prisma Cloud落地中国,为本土云安全保驾护航
Prisma Cloud商业合规版的功能
【云势工具】成本追溯功能OptimizeNow重磅推出2.0版
深圳敏捷云计算科技有限公司是一家专注于公有云增值服务的技术创新型公司,为企业客户提供云迁移,培训,开发,安全合规以及运维服务。