1.
环境准备与前提清单
在香港主机/VPS上使用原生IP,先确认:1) SSH密钥登录并禁用密码;2) 控制面板或API可创建快照;3) 有第二台或多台香港或邻近地区节点作为冗余;4) 准备一个异地对象存储(S3/兼容或第三方机房)。记录IP、用户名、端口与防火墙规则。
2.
文件级备份:使用rsync与增量策略
在主WEB节点安装rsync并建立SSH免密认证。示例命令:rsync -az --delete --exclude='cache/' -e "ssh -p 22" /var/www/ user@backup:/backups/site/YYYYMMDD/. 将此命令写入脚本 /usr/local/bin/backup_files.sh 并用cron每天夜间执行(0 3 * * * /usr/local/bin/backup_files.sh)。保留最近7天,使用find /backups -type d -mtime +7 -exec rm -rf {} \; 清理旧备份。
3.
数据库备份:MySQL/MariaDB 实操
推荐使用mysqldump做逻辑备份或MySQL热备工具做物理备份。mysqldump命令示例:mysqldump -u backup -p'密码' --single-transaction --quick --routines --triggers --databases dbname > /backups/db/dbname_$(date +%F).sql.gz 并上传到异地:gzip后用rsync或rclone上传到S3。若为大库,使用Percona XtraBackup做增量物理备份并定期合并。
4.
快照与镜像:快速恢复操作系统与环境
若宿主支持快照(KVM/OpenStack/VMware),在做重要变更前创建快照。快照结合文件+数据库备份可实现分钟级回滚。保持快照命名规范:snap-YYYYMMDD-说明,并记录关联IP与配置。
5.
异地备份与加密传输
强烈建议备份异地化。使用rclone或awscli上传到S3兼容存储:rclone copy /backups remote:bucket/site/$(date +%F)。上传前用gpg对敏感sql进行加密:gpg --symmetric --cipher-algo AES256 file.sql.gz,确保传输与存储加密。
6.
备份验证与自动化校验
每次备份后自动化校验:1)校验压缩包返回码;2)计算sha256sum并保存;3)定期(每周)在恢复测试环境做一次实际还原验证。示例校验脚本:sha256sum file | tee file.sha256 && tar -tzf file.tar.gz >/dev/null。
7.
恢复演练:文件与数据库还原步骤
文件恢复:rsync -az -e "ssh" user@backup:/backups/site/YYYYMMDD/ /var/www/ 并检查权限与SELinux上下文。数据库恢复:停止应用写入,mysql -u root -p < dbname_YYYYMMDD.sql,然后启动服务,校验表与业务连通性。建议在恢复后运行完整功能测试。
8.
减小RTO/RPO的高可用设计:负载均衡层
部署两台或多台Web节点,前端用HAProxy或Nginx作为反向代理负载均衡,配置健康检查(option httpchk)并去掉故障节点。示例HAProxy段:server web1 10.0.0.1:80 check inter 2000 rise 2 fall 3。将HAProxy部署为冗余(两台)以避免单点。
9.
漂移IP与Keepalived实现主备切换
在两台负载均衡机器上安装keepalived,通过VRRP分配浮动IP。配置简单:vrrp_instance VI { state MASTER/BACKUP interface eth0 virtual_router_id 51 priority 101/100 advert_int 1 virtual_ipaddress { 1.2.3.4 } }。当MASTER宕机,BACKUP自动接管IP,RTO通常在数秒级。
10.
数据库高可用:主从复制和故障切换
建立MySQL主从(或Galera多主)复制。主库开启binary log,创建复制账号:CHANGE MASTER TO MASTER_HOST='主IP', MASTER_USER='repl', MASTER_PASSWORD='pw', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=123; START SLAVE;。监控延迟并用MHA或Orchestrator自动切换主库,切换后更新应用DB连接配置或使用VIP。
11.
共享会话与缓存一致性
避免会话粘性依赖单台。使用Redis(主从+Sentinel)或Memcached集群,应用把session存到Redis,配置Sentinel自动选主。示例sentinel.conf设置和client配置超时及重试策略,保证切换时最小影响。
12.
DNS与TTL策略、以及故障演练流程
DNS切换慢,因此不要依赖短期DNS故障转移。对外使用CDN或Anycast可以更快切换。将重要域名TTL设为低值(60-300秒)仅在演练或切换窗口使用。制定SOP:检测→切换负载层→切换数据库→验证→通知客户。
13.
安全与合规:备份权限与审计
备份文件夹与脚本要最小权限,备份账号只授予SELECT/REPLICATION SLAVE权限。开启备份操作日志并发送到集中日志系统,确保在恢复时能审计谁做了何种操作。
14.
成本优化与保留策略
根据业务级别划分备份策略:关键业务做实时复制与短RTO,普通业务每日备份并保留30天。使用对象存储分层(热/冷)降低长期存储成本并启用生命周期规则自动归档。
15.
常见故障处理要点
节点网络不可达:检查安全组、路由与防火墙;备份上传失败:检查SSH密钥、磁盘空间与rclone配置;数据库恢复后数据不一致:回滚并用binlog补数据,优先在灰度环境演练。
16.
问:香港原生IP部署网站,为什么要做异地备份?
做异地备份可以防止单机房或同城灾难(断电、网络中断、机房故障)造成数据永久丢失。异地备份保证RPO更短,且当主节点无法恢复时能快速在异地重建服务,保持业务连续性。
17.
答:如何验证备份可用性与完整性?
定期做恢复演练是关键:每周在隔离环境执行文件还原与数据库导入,运行完整业务回归测试并对比校验和(sha256)。同时应自动化校验脚本检查备份是否成功并报警。
18.
问:高可用方案成本与复杂度如何平衡?
答:按业务重要性分层对待。对关键服务投资负载均衡、数据库复制与漂移IP;对次要服务采用每日备份与定期快照。通过自动化与SOP降低运维复杂度,使用管理型数据库或托管对象存储可减少自建成本。
来源:香港原生ip搭建网站的备份恢复方案和高可用设计要点