1.
在马来西亚云(或任意公有/私有云)部署服务器前,先明确业务目标、RTO(恢复时间目标)与RPO(恢复点目标)。例如,关键数据库RTO≤1小时、RPO≤15分钟。
准备清单:选择区域、实例规格、镜像(推荐轻量化的Ubuntu LTS)、VPC/子网规划、公网/私网IP、备份存储位置(同区/异区/对象存储)。
2.
步骤1:在云控制台创建VPC与子网,分离管理网与业务网,设置私有子网托管数据库。
步骤2:配置路由表与NAT网关,使私有子网能出网但不可直接入网;配置安全组(Security Group)仅允许必要端口(例:TCP 22 管理、TCP 80/443 公网)。
步骤3:设置网络ACL作为二层防护,限制来源IP段(例如只允许公司办公网/跳板机IP访问管理端口)。
3.
创建非root用户并配置SSH密钥:
sudo adduser deployer
sudo usermod -aG sudo deployer
在本地生成密钥并将公钥加入 /home/deployer/.ssh/authorized_keys;禁止密码登录编辑 /etc/ssh/sshd_config:PermitRootLogin no, PasswordAuthentication no。
安装并配置自动更新与审计:
sudo apt update && sudo apt upgrade -y
sudo apt install unattended-upgrades auditd fail2ban -y;编辑 /etc/apt/apt.conf.d/50unattended-upgrades 启用安全更新。
4.
使用UFW或iptables管理主机防火墙:示例(UFW)
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow from <管理IP>/32 to any port 22 proto tcp
sudo ufw allow 80,443/tcp
sudo ufw enable
部署fail2ban自定义规则防爆破,/etc/fail2ban/jail.local 添加 sshd 规则并重启服务。
5.
选择策略:组合快照(快)+ 文件/数据库增量备份(持久)。RTO短用快照+冗余镜像,RPO短用数据库二进制日志或流复制。
虚拟机快照(控制台操作):定期创建并保留策略(例如7天每日、30天周备、12个月月备)。自动化:使用云API或CLI(如 aws ec2 create-snapshot / gcloud compute snapshots create)。
文件与数据库备份示例(使用borgbackup + mysqldump增量):
安装:sudo apt install borgbackup
初始化仓库并加密:borg init --encryption=repokey /mnt/backup/borgrepo
数据库导出脚本(/usr/local/bin/db_backup.sh):
mysqldump --single-transaction --routines --triggers --events -ubackup -p'密码' mydb | gzip > /var/backups/mydb-$(date +%F-%H%M).sql.gz
打包并推送:borg create /mnt/backup/borgrepo::$(hostname)-{now} /var/www /var/backups
异地复制:borg create 或者使用 rclone 将本地备份同步到马来西亚以外的对象存储(例如 rclone copy /mnt/backup remote:bucket)。
6.
在主库执行:编辑 my.cnf 启用 binary-log、server-id,并重启。
生成用户并获取基线数据:
CREATE USER 'repl'@'%' IDENTIFIED BY 'pwd'; GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%'; FLUSH PRIVILEGES;
执行 mysqldump --master-data=2 --single-transaction,记录 File 与 Position,导入到从库并配置 CHANGE MASTER TO MASTER_HOST='主IP', MASTER_USER='repl', MASTER_PASSWORD='pwd', MASTER_LOG_FILE='xxxx', MASTER_LOG_POS=yyyy;
启动从库:START SLAVE; 并检查 SHOW SLAVE STATUS\G;异地从库可设置为只读并定期做快照用于恢复。
7.
步骤1:将DNS TTL设置为较低值(例如300秒)以便快速切换。
步骤2:预置热备或冷备实例,并保持配置同步(配置管理用Ansible/Terraform自动化)。
步骤3:故障发生时,按顺序:①验证备机健康;②切换数据库读写(若为主备切换需执行主从提升步骤);③更新DNS A/ALIAS记录指向备机IP;④监控流量并回滚或扩容。
8.
定期演练(至少季度):按演练脚本演练全量恢复并记录耗时,验证RTO/RPO是否达标。
部署监控(Prometheus+Grafana 或云原生监控),设置告警策略(CPU、磁盘、备份失败、复制延迟)。
集中化日志(ELK/EFK或云日志服务),确保在主区故障时日志仓库仍可访问或已复制。
9.
敏感数据加密传输(TLS 1.2/1.3)与静态数据加密(使用KMS管理密钥)。
记录访问审计(auditd/CloudTrail)并保留符合合规要求的时间窗;在与第三方存储数据时签署数据处理协议,符合PDPA基本原则。
10.
答:应将备份或备份副本存储在不同可用区或不同区域(异地),并采用对象存储或第三方S3兼容存储。自动化备份同步(如 rclone 或云提供商跨区复制)并定期验证备份可用性,确保备份不依赖单一区域的网络/存储。
11.
答:提前准备热备并启用半自动切换流程:监控触发主库不可用告警→验证从库完整性→执行主从提升(STOP SLAVE; RESET SLAVE ALL; 设置为可写)→修改应用配置或DNS指向新主库。演练并把切换步骤写入Runbook,必要时使用负载均衡器/Proxy(如 HAProxy)简化切换。
12.
答:建立定期恢复演练计划:每月恢复文件备份,每季度做数据库全量恢复并校验数据完整性,每半年做跨区域故障演练;对演练结果记录RTO/RPO并根据结果调整备份频率与架构。同时自动化恢复的部分步骤以减少人为错误。