为啥要迁移数据库
数据库中保留了大量用户信息,虽然运行环境可以重新搭建,但是数据库是无法手动恢复的,所以当服务器迁移的时候,数据库的安全迁移便很重要了。
目标
将源服务器的MySQL数据库迁移到目标服务器,这里源服务器可以是需要被替换掉的服务器,也可以是测试环境等。
前提
源服务器要有一个管理员权限的有密码的用户且允许该用户远程登陆。
源服务器设置
GCP之类的vps服务器默认是不允许远程使用密码登录的,那么需要为源服务器设置root用户的密码以及允许远程登录。
切换到root用户使用ssh登录到
使用ssh登录到服务器,然后允许命令:
1 | sudo -i |
修改SSH配置文件
1 | vi /etc/ssh/sshd_config |
- 使用/PermitRootLogin查找到PermitRootLogin,可以看到该行被注释掉了,取消改行的注释并将值改为yes;
- 使用/PasswordAuthentication查找到PasswordAuthentication,将其值改为yes。
为root用户设置密码
1 | passwd root |
重启SSH
1 | /etc/init.d/ssh restart |
迁移
迁移工作在目标服务器进行,直接使用rsync即可,命令如下:
1 | rsync -avz root@old.com:/var/lib/mysql/* /var/lib/mysql/ |
其中old.com可以是源服务器的域名或者IP地址。文件迁移完成之后需要检查两台服务器上文件是否相同。
1 | ls -l /var/lib/mysql/ |
赋予MySQL用户权限
如果目标服务器尚未安装MySQL,那么先安装MySQL:
1 | apt install mariadb-server |
如果上面的命令报错,那么需要先更新一下源才可以:
1 | apt update |
安装完MySQL之后可以将/var/lib/mysql权限赋予MySQL: 1
chown mysql:mysql -R /var/lib/mysql/
再次确认数据库正确迁移
1 | mysql -u root -p |