+++
title = "配置源数据库"
weight = 30
+++
### 用 Change Data Capture (CDC)模式运行 DMS 复制任务
为了确保数据库迁移的停机时间最少,我们将使用从源数据库到目标数据库的变化数据持续复制模式(**Change Data Capture (CDC)**)。关于 CDC 的更多信息和 **AWS DMS** 原生支持 CDC 细节请参见 这篇文章。
#### 在源数据库中启用 binary log
为了实现 **AWS DMS** 从 MySQL 数据库持续复制,您需要在源数据库中启用 binary log 并进行相应的配置更改。
1. 登录到 **源环境数据库** 服务器
对于 **自行操作的实验** - 访问数据库所需的信息描述在 **ApplicationMigrationWorkshop** CloudFormation 模板 的 **输出** 部分。

对于 **AWS 活动** - 问数据库所需的信息描述见 Event Engine 仪表板 的 **Database IP**, **Database Username** 和 **Database SSH Key**。

如果您不知道如何使用 SSH 访问服务器,请检查以下内容:
- 对于微软 Windows 用户,请查看 这篇文章。
- 对于 Mac OS 用户,请查看 这篇文章。
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 -
mkdir /var/lib/mysql/binlogs
chown -R mysql:mysql /var/lib/mysql/binlogs
exit
```
有关 binary log 的更多信息可以从这里 MySQL 文档 找到。
4. 创建和修改 **/etc/mysql/my.cnf** 文件
运行下面的命令编辑文件:
```
sudo su -
cp /etc/mysql/mysql.conf.d/mysqld.cnf /etc/mysql/my.cnf
chown -R mysql:mysql /etc/mysql/my.cnf
nano /etc/mysql/my.cnf
```
然后将下面的信息加入到 **[mysqld]** 部分,保存文件并退出nano:
```
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
performance_schema=ON
```
5. **重启** MySQL 服务使更改生效
运行下面的命令应用更改:
```
sudo service mysql restart
```
{{% notice warning %}}
应用更改要求 mysql 服务重启。这将会中断源数据库几秒钟。
{{% /notice %}}
6. **测试** 更改是否生效
通过运行下面的命令,确保在 **/etc/mysql/my.cnf** 中的更改生效:
```
sudo mysql -u root -pAWSRocksSince2006
select variable_value as "BINARY LOGGING STATUS (log-bin) :: "
from performance_schema.global_variables where variable_name='log_bin';
select variable_value as "BINARY LOG FORMAT (binlog_format) :: "
from performance_schema.global_variables where variable_name='binlog_format';
exit
```
输出必须显示 **BINARY LOGGIN STATUS** 为 **ON**,如下图所示:

如果确实如此 - 您可以 **退出** SSH 了。如果出现任何问题 - 请检查 **/var/log/mysqld.log** 文件中的错误信息。