服务器搬迁(一)—数据迁移及数据库备份

最近在帮朋友迁移服务器,原先的服务器配置不够用。因为这块确实没搞过,信心不是很足,好在上家公司做过一段时间的服务端的运维开发工作,对服务器的一些基础知识比如数据迁移、环境配置等还算了解。抱着试试的态度,开始了服务器搬迁之旅。过程是坎坷的,当然最终还是顺利的迁移到了新服务器上。这里分几篇博客记录下,一来给新人们参考,二来自己也加深下记忆,把过程记录下来方便以后查阅。

首先我梳理了下需要操作的步骤:1.迁移数据。2.java环境搭建。3.nginx环境搭建。4.mysql环境搭建。5.数据库数据备份和恢复。

备份文件

说下项目,项目后端用的springboot,前端thymeleaf模板引擎。看了下需要费时间迁移的也就历史的图片,大概有18G左右。平时上传jar包啥的我都用的scp,那这次迁移数据很自然我就想到了用scp,但接下来7,8个小时的搬迁经历让我很难忘,也很难受。

执行scp -r file root@ip:/home/backup/ ,然后电脑放那里,晚上就让它跑着,早上一起来发现停住了,没办法再执行相同的命令,中间因为电脑进入屏保等各种原因断了好几次,就这么来来回回折腾了一晚上加一上午硬是没同步完。中午睡了一觉醒来,看着控制台上慢吞吞的同步着文件,开始着急起来了,因为按计划今天要所有数据同步好,环境搭建好,网站跑起来。突然灵光一闪,妈呀,不是有rsync神器吗?而且之前也一直用的这个工具,scp不是增量备份,是覆盖备份,气的直跺脚。翻出之前的知识库,rsync -avzP file root@ip:/home/backup/,飞一样的速度,而且还能看到还剩多少文件需要同步,当前正在同步哪个文件夹里面的文件,最主要是同步速度是真的快。就这样跑了一会,所有文件同步完毕。

备份数据库

接下来开始备份数据库数据了。数据库备份也是历经坎坷,没办法,凡事都有第一次,经历了下次就有经验了。

数据库备份用的是mysqldump 命令。mysqldump -u root -p --databases mydb > /home/backup/mydb.sql。这次搬迁过程让我体会到一件事情,就是每次操作都会整出些幺蛾子。比如后面的nginx安装配置,还有mysql安装配置等,都遇到了不少问题,后面一一说明。

执行mysqldump命令,过了一会就报错了,mysqldump: Error 2013: Lost connection to MySQL server during query when dumping table bg_blog at row: 4008。然后网上也搜了下,说是要改mysql配置,进入mysql中后,运行set global net_read_timeout = 120;set global net_write_timeout = 900;重新跑了下命令,还是报同样的错误。打开bg_blog后发现这张表很大,只能分表导出了。

忽略表导出:mysqldump -u root -p --databases mydb --ignore-table=mydb.bg_blog > /home/mydb.sql 。如果有多张表影响导出,那就在上面命令后面继续追加--ignore-table=mydb.bg_blog2即可。然后单独导出bg_blog表,mysqldump -u root -p --databases mydb --tables bg_blog > /home/bg_blog.sql。整个导出过程也还算顺利。

总结

1.使用rsync来备份大量数据,尤其是图片这种海量小图片,有奇效。

2.备份数据库,使用mysqldump命令,加上–ignore-table参数来过滤不需要导出的表。加上–tables参数来指定要导出的表。

下一篇我将介绍java、nginx、redis的安装和配置,然后单独一篇来介绍mysql的安装配置,因为经验欠缺,被mysql坑坏了。