服务器的热备份
120061. 介绍
在上一课里,我们学习了如何进行服务器数据的迁移。在这一课将介绍如何通过备用服务器,实时同步服务器数据,以便主服务器出现故障时快速在备用服务器上恢复服务。
2. 服务器的预备
预备服务器环境:
- 预备两台同样的虚拟机,具有相同的硬件、软件配置,并分别配置好网络环境
- 服务器数据初始同步:在主服务器上生成迁移包,在备用服务器上进行恢复
- 生成数据同步所需的SSH密钥
- 在主服务器上,运行江湖面板脚本工具,依次选择 “2. 生成SSH密钥” --> “2. 生成服务器同步SSH密钥”,生成文件同步所需的密钥
standby_sync
,存放在/root/.ssh
目录下。 - 密钥生成后,公钥
standby_sync.pub
会通过rsync
被传输到备用服务器,并被添加到备用服务器/root/.ssh
目录下的authorized_key
中。这样,在之后的数据同步的过程中就不需要再输入密码了。
- 在主服务器上,运行江湖面板脚本工具,依次选择 “2. 生成SSH密钥” --> “2. 生成服务器同步SSH密钥”,生成文件同步所需的密钥
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文件同步了。
- 备用服务器的上线脚本中,从