原来使用宝塔建立MySQL数据库。由于占用内存太大,决定更换到阿里云的RDS数据库减轻服务器压力。下面是迁移的过程。
1、在宝塔后台获取数据库信息,并在阿里云RDS进行设置
宝塔后台获取数据库信息:

阿里云RDS设置需要如下操作。完成后进入第二步
- 创建RDS MySQL实例
- 设置白名单
- 申请或释放外网地址
- 创建数据库和账号
2、使用mysqldump将本地数据库数据导出为数据文件
在ssh直接输入下面命令。回车后输入你在第一步获得到的数据库密码,再回车即可。
mysqldump -h localIp -u userName -p --opt --default-character-set=utf8 --hex-blob dbName --skip-triggers --skip-lock-tables > /tmp/dbName.sql
参数说明:
- localIp:本地数据库服务器IP地址。
- userName:本地数据库的用户名。
- dbName:需要迁移的数据库名。
- /tmp/dbName.sql:备份生成的文件名。

3、使用mysqldump导出存储过程、触发器和函数
在ssh直接输入下面命令。回车后输入你在第一步获得到的数据库密码,再回车即可。
mysqldump -h localIp -u userName -p --opt --default-character-set=utf8 --hex-blob dbName -R | sed -e 's/DEFINER[ ]*=[ ]*[^*]*\*/\*/' > /tmp/triggerProcedure.sql
参数说明:
- localIp:本地数据库服务器IP地址。
- userName:本地数据库的迁移账号。
- dbName:需要迁移的数据库名。
- /tmp/triggerProcedure.sql:备份生成的文件名。

4、去除sql文件的DEFINER关键字
在ssh依次输入输入下面命令。
vim /tmp/dbName.sql
:g/^SET/d
:wq
vim /tmp/triggerProcedure.sql
:g/^SET/d
:wq

5、将数据文件和存储过程文件导入到目标RDS中。
在ssh直接输入下面命令。回车后输入你在第一步获得到的数据库密码,再回车即可。
mysql -h intranet4example.mysql.rds.aliyuncs.com -u userName -p dbName < /tmp/dbName.sql
mysql -h intranet4example.mysql.rds.aliyuncs.com -u userName -p dbName < /tmp/triggerProcedure.sql
参数说明:
- intranet4example.mysql.rds.aliyuncs.com:RDS实例连接地址,本例以内网地址为例。
- userName:RDS数据库的高权限账号或具有读写权限的账号。
- dbName:需要导入的数据库名。
- /tmp/dbName.sql:要导入的数据文件名。
- /tmp/triggerProcedure.sql:要导入的存储过程文件名。

也可以使用DTS将业务数据迁移到rds中