如何托管mysql至阿里云RDS?

除自建mysql外,mysql托管方案有两种,一种是托管专业的数据服务器(RDS),一种是自建服务器并安装mysql。

下面介绍的是RDS,具体来说,即把wordpress的mysql数据库转移到阿里云的RDS上。

先贴一个官方教程:

https://help.aliyun.com/zh/dts/user-guide/migrate-data-from-a-self-managed-mysql-database-to-an-apsaradb-rds-for-mysql-instance

教程分为几大部分:

为自建MySQL创建账号并设置binlog

可以参照这个帖子:

https://help.aliyun.com/zh/dts/user-guide/create-an-account-for-a-self-managed-mysql-database-and-configure-binary-logging#concept-1198525

新建一个用以数据迁移的账号:

CREATE USER 'rds'@'%' IDENTIFIED BY 'rds777';
Bash

以上新建一个rds的用户,允许这个用户从任何主机连接(%),密码是rds777

授予用户权限:

GRANT ALL privileges ON wordpress.* TO 'rds'@'%' WITH GRANT OPTION; #给用户wordpress里所有表格的权限
GRANT CREATE ON *.* TO 'rds'@'%' WITH GRANT OPTION; #给用户创造表格的权限
Bash

binlog设置:

找到my.cnf文件。用这个指令:

sudo find / -name my.cnf
Bash

我发现我的my.cnf是空的,include了两个文件,于是看看哪个文件是主设置,看到了这个:

vim /etc/mysql/mysql.conf.d/mysqld.cnf
Bash

注,你的情况可能会不一定,耐心找一找,不是空设置的文件。

添加以下的参数:

log_bin=mysql_bin
binlog_format=row
server_id=2 #建议设置为大于1的整数
binlog_row_image=full #当自建MySQL的版本大于5.6时,则必须设置该项。
Bash

另外,这里还需要修改一个bind-address的参数,原本的值是127.0.01,即只允许本地连接,需要设置成0.0.0.0,允许所有主机连接:

bind-address = 0.0.0.0
Bash

这一步教程没有讲,但是不设置的话,数据迁移测试就过不了。

RDS设置

选择一个RDS配置购买,我选的是1G内存1核的低配版本,每月18元。

进入数据传输控制台

选择“数据迁移”-“创建任务”

到这里,先别急着接下去做,先进入RDS控制台,选“账号管理”,新建一个RDS数据库的账号,设置密码。这里和源数据库的账号密码是不一样的,所以要分别设置。

另外,我在“白名单和安全组”设置了一个“rds”组,里面加上这些地址。

这个部分也不知道为啥,教程上让加的:

112.74.211.0/24
112.74.242.0/24
112.74.245.162
112.74.245.185
112.74.245.37
112.74.246.0/24
112.74.247.0/24
112.74.247.198
112.74.247.208
112.74.250.0/24
112.74.44.0/24
112.74.97.0/24
112.74.98.0/24
118.31.243.0/24
119.23.104.0/24
119.23.186.0/24
119.23.189.0/24
119.23.66.0/24
120.24.160.0/24
120.24.173.0/24
120.24.174.0/24
120.24.177.0/24
120.24.214.0/24
120.24.223.0/24
120.24.40.0/24
120.24.64.0/24
120.24.65.0/24
120.24.67.0/24
120.25.105.0/24
120.25.107.0/24
120.25.123.0/24
120.25.124.0/24
120.25.150.0/24
120.25.215.0/24
120.25.248.0/24
120.25.79.0/24
120.55.129.0/24
120.76.218.0/24
120.76.231.0/24
120.76.91.0/24
120.77.195.128/26
120.77.195.192/26
120.77.234.0/24
120.77.28.0/24
120.77.61.0/24
120.77.68.0/24
120.77.69.0/24
120.77.73.0/24
120.78.179.0/24
120.78.184.0/24
120.78.5.0/24
120.78.6.0/24
120.79.101.0/24
120.79.175.0/24
120.79.188.0/24
120.79.26.0/24
120.79.68.0/24
120.79.71.0/24
120.79.72.0/24
120.79.74.0/24
203.88.163.0/24
39.108.110.0/24
39.108.120.0/24
39.108.66.0/24
47.101.109.0/24
47.102.181.0/24
47.102.234.0/24
47.106.10.0/24
47.106.221.0/24
47.106.37.0/24
47.106.38.0/24
47.106.63.192/26
47.107.101.0/24
47.107.118.0/24
47.107.224.0/24
47.107.29.0/24
47.107.66.0/24
47.107.86.0/24
47.112.103.0/24
47.112.115.0/24
47.112.160.0/24
47.113.76.0/24
47.115.161.0/24
47.115.162.0/24
47.115.165.0/24
47.115.166.0/24
47.243.0.32/28
47.243.9.0/24
47.244.33.0/24
47.244.35.0/24
47.52.111.0/24
47.52.166.0/24
47.52.166.98
47.52.23.0/24
47.52.25.0/24
47.52.25.202
47.89.12.0/24
47.89.39.0/24
47.90.37.0/24
47.90.38.0/24
47.91.155.0/24
47.91.228.0/24
47.91.228.249
Bash

全部完成后,就可以接着“数据传输”了。

因为是阿里云服务器,我的源主机输入的是公网IP。目标库输入的是RDS实例ID。两边各输入自己的账号和密码,选择“非加密连接”,然后就一直点击下一步,完成了。

修改wp-config.php

最后,为了能让wordpress连上RDS数据库,需要更新wp-config.php。我的在/var/www/html下,你的可能会不一样。

文件是这样设置的:

define('DB_NAME', 'wordpress');

/** MySQL数据库用户名 */
define('DB_USER', 'rds');

/** MySQL数据库密码 */
define('DB_PASSWORD', '[rds里设置的密码]');

/** MySQL主机 */
define('DB_HOST', 'rm-wz900c93wo.mysql.rds.aliyuncs.com');

/** 创建数据表时默认的文字编码 */
define('DB_CHARSET', 'utf8');

/** 数据库整理类型。如不确定请勿更改 */
define('DB_COLLATE', '');
Bash

成功,撒花!

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注