举例说明

由于服主部署习惯差异,以下数据路径需要根据实际情况进行替换

需要将旧机器数据迁移至新机器,以下是机器相关信息:

旧机器(old):42.186.8.108
新机器(new):42.186.89.208

前提:
1.需要在停服维护期间进行,否则会导致文件传输异常
2.新机器32200端口对旧机器开放,具体检查方式如下,旧机器使用nc探测新机器32200端口,出现open表示OK;
若不通,则在新机器宝塔面板对旧机器开放32200端口,具体请参考 https://g.126.fm/02S1gJK

wdsj@old:~$ nc -zv 42.186.89.208 32200
new [42.186.89.208] 32200 (?) open

3.新旧机器当前登入shell为项目代号用户,此处代号为wdsj

wdsj@old:~$ 表示旧机器的shell终端
wdsj@new:~$ 表示新机器的shell终端

一、使用rsync迁移

1.新机器配置 旧机器免密ssh登入

# 旧机器生成秘钥,输入以下指令,按三次enter即可
wdsj@old:~$ ssh-keygen

# 查看旧机器生成的公钥
wdsj@old:~$ cd .ssh/ && cat id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCmjKNhxTUxA.................... wdsj@old

# 将旧机器的公钥添加到新机器项目代号用户下的authorized_keys文件中,注意此处是在新机器执行
wdsj@new:~$ cd .ssh/
wdsj@new:~/.ssh$ echo "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCmjKNhxTUxA.................... wdsj@old" >> authorized_keys

# 测试是否免密连接
wdsj@old:~/.ssh$ ssh -p32200 42.186.89.208
输入yes,按enetr,登入成功则表示免密连接完成

2.开始同步文件

# 在旧机器上执行以下命令,具体同步目录和ip需要根据实际替换,等待传输完成即可
wdsj@old:~$ rsync -e "ssh -p32200" -avu /home/wdsj  42.186.89.208:/home/

上述命令中:
-e   表示使用ssh协议传文件
-a   表示传输过程保留文件原有的属性和权限
-v   显示传输的详细过程
-u   不覆盖新机器中已经存在的文件
/home/wdsj   表示旧机器文件所在目录,即旧机器需要同步到新机器的目录文件
42.186.89.208   表示新机器ip
/home  表示新机器接收旧机器文件

二、使用机器python模块迁移

说明:这种迁移方式只适用于迁移文件,如果是目录需要先进行打包压缩,再进行传输

1.迁移文件

# 旧机器在需要传输的文件所在路径下执行
wdsj@old:~$ python -m SimpleHTTPServer 25565
Serving HTTP on 0.0.0.0 port 25565 ...

# 新机器需要接收文件的路径下,执行以下指令接收文件,等待接收完成
wdsj@new:~$ wget http://42.186.8.108:25565/wdsj.tar.gz

2.迁移目录,需要打包,使用df -h 查看/home分区的大小,确定剩余磁盘空间大于80%

# 旧机器上执行
wdsj@old:~$ pwd      # 查看当前路径
/home/wdsj

# 在/home下执行,确保空间充足,以下命令会将/home/wdsj目录下的所有文件打包成wdsj.tar.gz压缩文件
wdsj@new:~$ cd /home/wdsj
wdsj@old:~$ tar -zcvf wdsj.tar.gz *

上述命令中:
tar   为打包命令
wdsj.tar.gz   为压缩包名称(使用tar.gz结尾)
/home/wdsj    表示需要打包的目录

# 打包完成后,在旧机器需要传输的打包文件所在路径,开启python文件传输模块,执行25565端口
wdsj@old:~$ python -m SimpleHTTPServer 25565
Serving HTTP on 0.0.0.0 port 25565 ...

# 新机器家目录下,执行以下指令接收文件,等待接收完成
wdsj@new:~$ wget http://42.186.8.108:25565/wdsj.tar.gz

# 新机器进入需要代号家目录,将文件解压
wdsj@new:~$ cd /home/wdsj
wdsj@new:~$ tar -xvzf wdsj.tar.gz

三、mysql数据迁移

前提:

  1. 停止新旧机器数据库进程,/etc/init.d/mysqld stop ,防止数据写入
  2. 新旧机器数据库至少大版本相同,可通过mysql -V 查询版本信息
  3. 新旧机器使用同一份配置文件启动,可以通过上面提到的方式,将旧机器的配置文件发送到新机器,然后重启数据

1.方式一:直接打包data目录

# 例如旧机器data目录为/home/data
(1)先使用上面的数据迁移方式迁移到新机器
(2)修改新机器mysql配置文件data目录为新机器存放迁移数据的目录,并重启mysql

2.方式二:mysqldump

mysqldump属于逻辑备份,适用于小数据库备份(容量小于50G),输出为sql文件

# 旧机器上备份数据,根据实际需要选择  
(1)备份整个库  
wdsj@old:~$ mysqldump -uroot -p --single-transaction --all-databases > mysqldump.sql  
(2)只备份项目库
wdsj@old:~$ mysqldump -uroot -p --single-transaction --databases minecraft > minecraft.sql  

# 通过上述数据迁移方式,将备份的数据迁移到新机器  

# 在新机器恢复数据  
(1)导入数据库  
wdsj@new:~$ mysql -uroot -p < minecraft.sql

FAQ

问:迁移后数据库无法远程连接?
答:首先进行湍口探测,看数据库端口是否对远程连接机器开放,若无则在 宝塔面板---系统防火墙 处新增白名单;如过端口通,请在新机器数据库检查是否远程连接用户和授权,具体请参考 https://g.126.fm/04xGkRS

results matching ""

    No results matching ""