服务器的热备份

12006

1. 介绍

在上一课里,我们学习了如何进行服务器数据的迁移。在这一课将介绍如何通过备用服务器,实时同步服务器数据,以便主服务器出现故障时快速在备用服务器上恢复服务。

2. 服务器的预备

预备服务器环境:

  • 预备两台同样的虚拟机,具有相同的硬件、软件配置,并分别配置好网络环境
  • 服务器数据初始同步:在主服务器上生成迁移包,在备用服务器上进行恢复
  • 生成数据同步所需的SSH密钥
    • 在主服务器上,运行江湖面板脚本工具,依次选择 “2. 生成SSH密钥” --> “2. 生成服务器同步SSH密钥”,生成文件同步所需的密钥standby_sync,存放在/root/.ssh目录下。
    • 密钥生成后,公钥standby_sync.pub会通过rsync被传输到备用服务器,并被添加到备用服务器/root/.ssh目录下的authorized_key中。这样,在之后的数据同步的过程中就不需要再输入密码了。

3. 日常备份

主服务器上的数据和文件,需要被实时同步到备份服务器上。在本课的备份方案中,我们会将数据库的备份文件以及用户上传的数据,通过江湖面板的rsyncd插件,同步到备用服务器中,以备切换服务器时进行恢复。

日常备份的主要操作包括:

设置数据库备份: 在主服务器上,需要开启以下数据库的备份:

  • Xtrabackup增量版插件的全量、增量备份:全量备份一天一次,增量备份每半小时一次。
  • Xtrabackup备份:一天一次
  • 数据库mysqldump备份:备份全部数据库,每2小时一次

配置数据与文件实时同步:

  • 在rsync插件中创建以下这些目录的实时同步任务:
    • /www/backup
    • /www/wwwstorage
  • 以上的目录会被同步到备份服务器下的同名目录。
  • 在配置时,Rsyncd插件会自动选择使用standby_sync作为SSH密钥。

更新服务器、网站与项目设置:

  • 网站、JianghuJS管理器配置:使用迁移包工具进行同步与恢复
  • 项目目录:同步/www/wwwroot目录到备用服务器

日常检查: 每天检查服务器报告中的备份与同步情况,确保日常备份与同步能够正常进行

4. 切换流程

当需要启用备用服务器、停用主服务器时,需要执行以下的操作:

同步备份状态检查:

  • 在主服务器上,查看/www/server/rsyncd/logs目录下的lsyncd.status日志,确保日志中显示所有的同步任务都没有任何延迟。这说明当前的最新文件已经被同步到了备用服务器中。

恢复数据库:

  • 在备用服务器上,执行Xtrabackup增量版的增量恢复任务,来恢复数据库。
  • 恢复完成后,可以获取主服务器和备用服务器的数据库Checksum报告,确保两边的数据库没有显著差别。

恢复网站数据、插件数据:

  • 如果网站数据、JianghuJS插件数据需要更新,可以使用江湖面板脚本工具,生成迁移数据包,其中只选择网站数据与JianghuJS插件数据,然后在备份服务器上进行恢复。
  • 注意: JianghuJS插件数据将会覆盖掉备份服务器上原来的数据,请谨慎操作。

切换服务器状态:

  • 在主服务器和备用服务器上,通过江湖面板脚本工具,分别生成下线和上线脚本,确认内容后运行,就可以切换服务器状态了。
  • 切换之后,修改网站的DNS解析记录,就可以通过备用服务器访问网站和服务了。

在备用服务器中设置到主服务器的备份任务:

  • 服务器状态切换之后,备用服务器就成了新的主服务器,它里面的数据和文件,同样需要进行备份。
  • 我们需要启动一个服务器作为新的备用服务器。通常,如果主服务器的功能正常,我们就会以原来的主服务器作为备用服务器。
  • 预备好新的备用服务器后,你需要按照第3节里的日常备份任务,在新的主服务器上进行同样的操作。

保证数据单向同步的机制

  • 在日常备份中,主服务器上生成的公钥standby_sync.pub会被发送并被添加到备用服务器的/root/.ssh/authorized_keys中,以保证日常的文件同步能够正常进行。
  • 切换服务器状态时,
    • 备用服务器的上线脚本中,从authorized_keys中删除了standby_sync.pub的记录,这样主服务器上的Rsyncd同步将不能再发送到备用服务器。
    • 主服务器的下线脚本中,向authorized_keys中添加standby_sync.pub的记录,这样备用服务器就可以向主服务器进行Rsyncd文件同步了。