原来的云服务器到期,想把应用和数据库迁移到一个新的云服务器。应用迁移简单,jar复制过去就完事了,mysql已经跑了不少数据在库了,因此需要数据复制。因为新的云服务器没有开通外网权限,没法ping通ip,所以数据迁移做不到从旧服务器直接复制到新服务器,只能先找个跳板。而这个跳板,自然就是我的windows本机了。
方案很简单,首先在老服务器上把数据库test上的所有数据dump下来,放到本机一个目录上;然后在新服务器上安全好mysql8(老服务器的mysql版本也是8),然后创建同名数据库test;接着把本地dump数据上传到新服务器;最后在新服务器上执行dump命令。
以下是方案实现:
1、老服务器dump数据库test的数据:
[root@centos ~]# mysqldump -uroot -p --databases test > dump.sql
Enter password:
通过scp把放到本地(scp命令参见通过SCP实现Linux服务器和本地Win10机器的文件上传下载):
C:\Users\wulf>D: D:\>cd download D:\download>scp root@100.111.11.10:/home/mysql/dump.sql . root@100.111.11.10‘s password:
2、在等待dump文件下载的时候,去新服务器安装好myslq:
[root@centos ~ home]# yum install mysql-server
接着启动mysql8:
[root@centos ~]# service mysqld start
初始密码为空,直接回车登录mysql后修改密码,创建跟老数据库同名的test:
[root@centos ~]# mysql -uroot -p
mysql> ALTER USER ‘root‘@‘localhost‘ IDENTIFIED BY ‘Root123@‘;
mysql> create database test; Query OK, 1 row affected (0.03 sec)
3、把本地dump.sql文件上传到新服务器:
D:\download>scp ./dump.sql root@100.111.11.10:/home/mysql/ root@100.111.11.10‘s password:
又是漫长的等待。
4、执行新服务器的数据重放:
mysql> use test; Database changed mysql> source /home/mysql/dump.sql Query OK, 3667 rows affected (0.09 sec) Records: 3667 Duplicates: 0 Warnings: 0
mysql执行脚本比ftp的磁盘io快多了,很快数据就迁移结束。
可以查一下确认数据是否都导入了:
mysql> select count(*) from t_mwsorder; +----------+ | count(*) | +----------+ | 629379 | +----------+ 1 row in set (0.00 sec)
数据量对的上就说明迁移完成了。