服务器的备份与恢复

12006

学习目标

  • 理解服务器备份的重要性
  • 学习用mysqldump定时备份数据库
  • 学习用xtrabackup定时备份数据库
  • 学习使用rsyncd插件定时备份文件

服务器备份的重要性

在服务器运行过程中,我们可能会遇到各种各样的问题,如硬件故障、系统崩溃、数据丢失或者被恶意攻击等。这些问题都可能导致我们的数据丢失,对我们的业务造成严重的影响。因此,定期备份服务器数据是非常重要的。

通过备份,我们可以在数据丢失后迅速恢复数据,减少数据丢失带来的损失。同时,备份也可以帮助我们在系统崩溃后迅速恢复系统,减少系统停机时间。

因此,学习如何在江湖面板中进行服务器备份和恢复,以及如何设置定时备份任务,是每个服务器管理员必备的技能。

一般来说,服务器上需要备份的内容包括数据库和文件,这两类内容都有各自的备份工具。接下来,我们就来学习如何在江湖面板中进行服务器备份和恢复,主要包括:

  • 数据库备份:
    • mysqldump备份
    • xtrabackup备份,包括全量备份和增量备份两种不同方式。
  • 文件备份:
    • 使用rsyncd插件进行文件同步。

以上这些备份任务,都可以设置为定时自动执行。

1. 数据库mysqldump备份与恢复

mysqldump 是 MySQL 数据库管理系统中的一个工具,用于创建数据库或数据库表的备份。它生成的是 SQL 脚本,这个脚本可以在稍后的时间点被用来恢复原来的数据库结构和数据。

手动进行mysqldump备份:

江湖面板提供了为指定数据库生成mysqldump备份的功能:

江湖面板-mysqldump备份.png

  1. 在江湖面板页面左侧,点击“MySQL”,打开MySQL管理界面
  2. 在“管理列表”中,找到对应的数据库,点击“备份”。
  3. 在弹出的数据库备份详情弹窗中,点击“备份”。
  4. 生成的 SQL 脚本会被自动压缩为.gz文件,存放在/www/backup/database目录下

设置mysqldump备份的计划任务:

手动进行mysqldump备份显然不能满足我们及时备份数据的需要。江湖面板提供了设置计划任务的功能,可以定时自动执行mysqldump备份:

  1. 在江湖面板中,点击左侧栏目「计划任务」
  2. 在「添加计划任务」中选择任务类型「备份数据库」
  3. 设置执行周期、备份数据库以及备份清理规则。一般来说,
    • “执行周期”设置为“每120分钟”
    • “备份数据库”建议选择“所有”
    • “备份清理规则”可以使用默认的设置
  4. 点击「添加任务」,定时备份任务就创建成功了,系统将定时执行指定数据库的备份操作
  5. 备份的数据库文件存放在/www/backup/database目录下

用mysqldump备份恢复指定数据库的数据:

如果需要恢复备份,可以在MySQL插件-管理列表中,找到对应的数据库,点击“备份”,在弹出的数据库备份详情弹框中,点击备份文件对应的“恢复”按钮进行恢复。

2. 数据库Xtrabackup备份

Xtrabackup是一个开源的MySQL数据库备份软件,它可以对InnoDB和XtraDB存储引擎的数据库进行热备份。Xtrabackup是对MySQL数据库mysqldump备份的一个重要补充。在MySQL数据库出现问题,特别是整体损坏的情况下,Xtrabackup能够帮助我们快速地恢复整个数据库。Xtrabackup可以通过全量备份和增量备份两种方式来对数据库进行备份。

Xtrabackup备份与恢复:

  1. 在江湖面板中,点击「软件管理」,在右上角的搜索框中输入Xtrabackup搜索并安装插件
  2. 打开Xtrabackup插件,点击左侧栏的「mysql备份」,在右侧栏上面输入定时执行备份的时间和清理规则,点击创建即可创建Xtrabackup定时备份任务。一般设置为一天进行一次Xtrabackup备份。
  3. 点击下方的“备份”按钮可以手动进行一次数据库的备份
  4. 需要恢复时,点击下方备份文件对应的“恢复”按钮进行恢复。

注意: 使用Xtrabackup插件恢复数据库时,MySQL服务器上的全部数据库、用户与密码、函数与事件等配置都会被替换为Xtrabackup备份中的内容。所以一定要谨慎操作!

Xtrabackup增量备份:

全量备份和增量备份是两种不同的数据备份策略:

  • 全量备份指的是备份系统中所有选定的数据。无论之前是否已进行过备份,它都会复制所有指定的文件和信息。
  • 增量备份仅备份自上次备份(无论是全量还是增量)之后发生变化的数据。这意味着它只复制上次备份后新改变或新增的文件。

与全量备份相比,增量备份的备份速度更快、更为高效。使用增量备份可以更完整的保存两次全量备份之间的数据变化。

江湖面板提供了一个插件“Xtrabackup增量版”来对数据库进行增量备份:

  1. 在江湖面板中,点击「软件管理」,在右上角的搜索框中输入Xtrabackup增量版搜索并安装插件
  2. 打开Xtrabackup增量版插件,点击左侧的“增量备份”。在这里点击“配置频率”可以进行全量备份和增量备份的定时任务设置:
  • 全量备份:配置为“每天”
  • 增量备份:配置为“N分钟”,数值设置为30分钟。
  1. 点击“执行全量备份”和“执行增量备份”可以手动进行一次数据库备份
  2. 备份文件保存在/www/backup目录下:
  • 全量备份:/www/backup/xtrabackup_data_base
  • 增量备份:/www/backup/xtrabackup_data_incremental
  1. 需要恢复室,点击左侧栏的“增量恢复” - “执行增量恢复”按钮,进行恢复。

江湖面板-xtrabackup增量版.png

3. 不同数据库备份方式的关系

以上三种不同的备份方式共同构成了一个完整的数据库备份方案:

  • Xtrabackup备份:每天进行一次数据库的全量备份,作为兜底的备份机制
  • Xtrabackup增量备份:通过增量的方式可以提升备份效率,以追踪一天之内的数据变化。
  • mysqldump备份:使用Xtrabackup只能备份或恢复全部数据库,当我们只需要对一个或部分数据库进行恢复时,就可以使用对应的mysqldump备份。

4. 使用rsyncd插件进行文件同步和备份

在服务器上进行文件备份的方式,通常是将用户的数据文件或者项目文件复制同步到另一目录下存储。江湖面板使用插件“rsyncd”来进行文件的同步和备份。

rsyncd是一个用于文件同步和备份的开源工具,它可以在本地或者不同的机器之间进行文件的复制和同步。rsyncd使用一种名为"增量复制"的技术,只复制文件中改变的部分,而不是整个文件。这使得rsyncd在处理大文件或大量文件时非常高效。我们经常会使用rsyncd来备份服务器上的重要文件,以防止数据丢失。

  1. 在江湖面板中,点击「软件管理」,在右上角的搜索框中输入rsyncd搜索并安装插件
  2. 打开rsyncd插件,点击左侧栏的「发送配置」->「创建发送任务」,输入以下信息,点击提交,即可建立定时同步任务:
  • 服务器IP:目标服务器的IP,如果是同步到同一个服务器下的目录,可以输入127.0.0.1
  • 同步目录:需要被同步的目录,注意保留目录结尾的/符号
  • 同步周期:可根据待同步的目录的功能与特性,选择“定时同步”或“实时同步”。详见下一节“rsyncd定时同步VS实时同步”。
  • 定时周期:如果选择了“定时同步”,则需要设置定时周期
  • 限速:可以设置为1000000KB/s
  • 连接方式:一般选择“SSH”
  • SSH端口:目标服务器的SSH端口
  • 密钥文件:SSH连接所需要用的密钥文件,配置方式见本课的第6节“”。
  • 目标目录:注意保留目录结尾的/符号
  1. 添加完成后,可以点击操作列的“过滤器”,设置同步时需要过滤的文件或文件夹,默认会过滤掉node_modules、logs、run等目录
  2. 可以点击“同步”进行一次手动同步,然后点击“日志”查看日志文件,确保同步任务正常工作。(正常同步日志中应该会出现“sending incremental file list”等内容)

5. rsyncd定时同步VS实时同步

江湖面板的rsyncd插件内置了lsyncd工具来实现目录与文件的实时同步。lsyncd(Live Syncing Daemon)是一个实时同步工具,它使用 Linux 的 inotify 机制来监视指定目录下的文件变化,并使用 rsync 来进行数据同步。

一般来说,对于变化不大的目录与文件,我们通常会使用定时同步的方式进行备份,从而减少对系统资源的占用。但变化较为频繁的目录和文件,则更适用实时同步的方式,以确保每一个文件变化都能被及时备份。

在我们的服务器系统中,有以下几类目录与文件需要备份:

  • /www/wwwroot:储存了服务器上网站与项目的代码与配置文件,通常不会有太大变化,因此可以采用“定时同步”。
  • /www/backup:主要保存了数据库的备份文件,变化较为频繁,因此可采用“实时同步”。
  • /www/wwwstorage:在用户上传数据较多的应用项目中,通常我们会把保存用户上传数据的目录upload集中迁移到/www/wwwstorage目录下。因此/www/wwwstorage目录的变化也会较为频繁,适合采用“实时同步”。

6. 使用江湖面板脚本工具配置rsyncd同步的SSH密钥

rsyncd插件通过SSH连接的方式来连接到目标服务器进行文件同步。通常,连接到目标服务器时,我们会使用root用户登录。这就需要我们提供目标服务器的root用户身份证明。如果采用密码登录,那每次建立连接都需要手动输入密码,这显然是不现实的。因此,我们需要使用SSH密钥连接到目标服务器,只要初始配置过之后,以后的连接就可以自动登录了。

江湖面板提供了一个脚本工具,来生成专门供rsyncd同步所需的SSH密钥:

江湖面板-生成服务器同步SSH密钥.png

  1. 点击江湖面板页面左侧的“文件”,进入文件管理界面。点击“终端”图标来打开本地终端。
  2. 在命令行里输入jh 22,点击回车
  3. 根据提示,依次输入对应的数字,选择“2. 生成SSH密钥” -> “2. 生成服务器同步SSH密钥”,开始生成SSH密钥。
  4. 依次输入邮箱(使用默认邮箱即可)、目标服务器的IP、SSH端口、root用户密码,就可以生成SSH密钥,并将生成的密钥添加到目标服务器的/root/.ssh/authorized_keys中了。

江湖面板-发送同步SSH密钥.png

配置成功后,你会看到以下的成功信息:

  1. sending incremental file list
  2. standby_sync
  3. 2,622 100% 0.00kB/s 0:00:00 (xfr#1, to-chk=1/2)
  4. standby_sync.pub
  5. 588 100% 574.22kB/s 0:00:00 (xfr#2, to-chk=0/2)
  6. sent 3,382 bytes received 84 bytes 239.03 bytes/sec
  7. total size is 3,210 speedup is 0.93
  8. ================ 密钥信息 ================
  9. 邮箱: <之前输入的默认邮箱>
  10. 密钥文件位置: /root/.ssh/standby_sync
  11. - 已将证书文件同步到以下服务器:
  12. - 服务器IP
  13. - 目标服务器SSH端口:
  14. =========================================
  15. <<<<<<<<<<<<<<<<<<< Run index__ssh_keygen.sh success✔!

上面这个通过脚本工具生成的密钥会自动被命名为standby_sync,并存放在/root/.ssh目录下。在rsyncd插件中配置SSH连接时,插件会自动检查有没有这个密钥文件,如果有的话,则会自动配置使用这个密钥,否则的话,用户就需要指定使用哪个密钥,并确保该密钥已经被添加到了目标服务器中。

7. 保存备份文件的原则

  • 用户数据(用户上传的文件等)与备份数据(数据库备份文件等)会不断增加,因此建议可以将这两类文件单独存放在指定目录下,以便及时备份或清理
  • 异地备份:最好将备份文件存储到另一台服务器或者存储设备(如NAS、移动硬盘)上,以免当前虚拟机损坏后无法取出备份内容。
  • 版本控制:如果需要留存历史版本,可以将需要保留的目录进行压缩打包,但需注意设置定时清理的任务。

作业

请根据本文的内容,设置以下三个定时备份任务:

  • 创建一个备份”所有“数据库的定时任务
  • 安装xtrabackup插件,手动进行一次备份恢复,并创建定时备份任务
  • 使用rsyncd插件同步/www/wwwroot/的文件到/backup/wwwroot/