前言
相信很多老站长将自己的网站从旧服务器迁移到云服务器上的时候最头疼的就是数据库的备份和还原了吧。一些有年头的地方门户可能数据库文件即便是压缩后都会有几个G那么大,用 phpMyAdmin 根本不可能完全导出,就算用其他工具导出了备份文件上传下载传输又要浪费不知道多少时间,要知道国内服务器基本上都没大多带宽。
其实阿里云一直都有为大家上云迁移数据库准备一个很干货的产品,那就是 数据传输(DTS),可以方便的实现 MySQL、SQLServer、PostgreSQL、MongoDB 等多种数据源到 RDS、ECS甚至非阿里云服务器的迁移。
这里以 MySQL 服务器为例向大家介绍操作教程,其实还支持 SQLServer、PostgreSQL、MongoDB、Redis 等常见数据库。
要求 & 收获
需要使用到的产品:
- 任意(包括非阿里云)服务器/ECS/轻量应用服务器(安装任意 Linux 发行版镜像)
- MySQL 数据库
- 云数据库 MySQL 版(或者其他接受迁移的数据库)
- 数据传输产品
通过本文你将讲学到:
- 使用 DTS
- 数据库的快速迁移和恢复
教程
被迁移数据库可访问设置
传统网站架构一般来说为了安全起见,数据库的设置默认都是只接受本机(localhost)访问的,而 DTS 的迁移必须依赖公网,所以我们需要为 DTS 开放连接支持。
服务器防火墙
一般来说服务器会有一个防火墙,CentOS 7 是 FireWall、CentOS 6 、 Debian 是 iptables 以及 Ubuntu Server 是 UFW。
FireWall 开放数据库端口:
systemctl start firewalld.service #开启防火墙
#开放 http 80 和 https 443 和 SSH 22 端口
firewall-cmd --zone=public --add-port=3306/tcp --permanent
#生效规则
firewall-cmd --reload
iptables 开放数据库端口:
修改 /etc/sysconfig/iptables
文件
适当位置加入:
-A INPUT -m state –state NEW -m tcp -p tcp –dport 3306 -j ACCEPT
然后重启 iptables
/etc/init.d/iptables restart
ufw 开放数据库端口
ufw allow mysql
开放账户的远程连接
首先,我们要通过命令行登录操作一下 数据库:
mysql -u root -p
然后会需要输入一下 root 密码,输入的时候是隐藏的并不是说没有输入进去。
然后运行:
GRANT ALL PRIVILEGES ON *.* TO '数据库账号'@'%' IDENTIFIED BY '对应账号的密码' WITH GRANT OPTION;
FLUSH PRIVILEGES;
如果有安装 phpMyAdmin 就更简单了:
在 用户
- 登录信息
中将 Host
改成 任意主机 就行
数据库的设置
修改 my.cnf
文件,一般来说该文件会位于: /etc/my.cnf
/etc/mysql/my.cnf
/usr/local/mysql/etc/my.cnf
这几个位置,如果不知道就翻阅一下服务器环境的手册。
找到 bind-address = 127.0.0.1
修改为:
bind-address = 0.0.0.0
一些交旧的 MySQL 版本,可能用的使用 skip-networking
命令来关闭网络,将其删掉即可。
然后重启 MySQL。
service mysql restart
ok,被迁移数据库的设置到此结束。这是一个大难点,因为不同的环境差异性太大。
迁移
设置被迁移数据库是唯一的难点,不过掌握了以后就可以通吃所有数据库了。如果目标迁移数据库是 云数据库 就不需要额外的设置了,创建好迁移数据库和账号就行。如果是迁移至自建的数据库,那么就需要再重复一次第一步了。
一、进入 DTS 创建迁移任务 填写好 被迁移数据库
和 目标数据库
,然后点击 测试
,提示 测试通过
就ok了。
二、选择迁移对象,一般来说就是整个数据库都迁移。 如果有特殊的需求,比如说一个论坛的数据库肯定是不断增长的,如果要迁移就可能需要关站,但是通过增量迁移帖子对应的表就可以实现不关站的平滑迁移了,当然这对操作者的技能要求比较高,但是已经极大的降低了难度了。
三、然后就是预检查的如果都是绿勾就是一点事情都没有,如果有不对的地方就需要改正。
四、然后选择链路规格:
不同规格价格不同,不过貌似迁移到阿里云是不用钱的还是因为演示数据量太小我也是傻傻分不清楚。
五、然后等两个绿条都 100% 了就可以了,我们就可以修改数据库配置文件将数据库改成 RDS 或者其他被迁移的数据库即可。