“哎呦,今天天气真好!”他推开办公室的落地窗,阳光在镜片上跳舞,“兄弟们,咱们聊点硬核又开心的——双服务器如何同步备份信息!”他笑得像刚抢到最后一碗热干面。
“先别皱眉头,”他拍了拍空气,“同步备份就像给数据找了两个贴身保镖,一个累了,另一个立刻顶班,绝不让业务掉链子。”他掰着手指:“第一,得挑对工具。Rsync、Syncthing、DRBD,仨兄弟性格不同:Rsync稳、Syncthing灵、DRBD狠。想省钱?Rsync!想实时?Syncthing!想块级秒切?DRBD!别纠结,先跑起来再说。”
“第二,链路得靠谱。”他随手抓起两根网线比划,“主备之间最好双线+VPN,公网断了走专线,专线断了走5G,别心疼那点流量,数据丢了哭都来不及。”
“第三,校验!校验!校验!”他连拍三下桌子,“Md5、sha256,跑一遍才安心。每周随机抽10%文件做深度对比,发现一只坏苹果,立刻整箱翻。”
“第四,演练别偷懒。”他眯起眼,“凌晨三点拉起容灾库,让业务跑半小时,再切回去。别怕吵醒运维,真故障时可没人替你扛。”
“最后,留一份冷备份。”他神秘兮兮地压低声音,“把每月全量刻进移动硬盘,锁进银行保险箱。真到那一天,它就是时光机。”
他伸个懒腰,笑得像刚收工的小米粥:“记住啊,备份不是成本,是给未来的自己发红包!”
—————————教程分割线—————————
双服务器如何同步备份信息·一步一图实践版
一、准备阶段
选系统:两台CentOS 7/8或Ubuntu 20.04,内核≥4.9。
规划目录:
/data/active —— 主服务器生产数据
/data/backup —— 备服务器接收目录
网络:两端固定内网IP,例 192.168.10.1(主) ↔ 192.168.10.2(备)。
二、方案A:Rsync+SSH(定时增量)
主服务器安装:
yum install rsync openssh-clients -y
生成免密钥匙:
ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa
ssh-copy-id root@192.168.10.2
创建排除文件 /etc/rsyncd.exclude(日志、缓存不备份)。
编辑定时任务:
crontab -e
0 * /2 * * * /usr/bin/rsync -az --delete --exclude-from=/etc/rsyncd.exclude /data/active/ root@192.168.10.2:/data/backup/ ] /var/log/rsync.log 2>&1
校验脚本(每晚跑):
find /data/active -type f -exec md5sum {} + > /tmp/src.md5
ssh root@192.168.10.2 "find /data/backup -type f -exec md5sum {} + > /tmp/dst.md5"
diff /tmp/src.md5 <(ssh root@192.168.10.2 "cat /tmp/dst.md5")
三、方案B:Syncthing(实时双向)
解压并创建系统服务:
./syncthing -generate=/opt/syncthing
useradd -r syncthing -d /opt/syncthing
chown -R syncthing:syncthing /opt/syncthing
cp /opt/syncthing/etc/linux-systemd/system/syncthing.service /etc/systemd/system/
systemctl enable --now syncthing
在“高级设置”里把“文件拉取顺序”设为“alphabetic”,确保一致性。
启用“版本控制”→“简易保留30天”,防误删。
四、方案C:DRBD(块级镜像)
两台加载模块:
modprobe drbd
安装:
yum install kmod-drbd90 drbd90-utils -y
配置 /etc/drbd.d/r0.res
resource r0 {
protocol C;
on 192.168.10.1 { device /dev/drbd0; disk /dev/sdb1; address 192.168.10.1:7788; meta-disk internal; }
on 192.168.10.2 { device /dev/drbd0; disk /dev/sdb1; address 192.168.10.2:7788; meta-disk internal; }
}
初始化:
drbdadm create-md r0
drbdadm up r0
主节点执行:
drbdadm primary --force r0
mkfs.ext4 /dev/drbd0
mount /dev/drbd0 /data/active
心跳+Pacemaker做自动切换(略)。
五、容灾演练
每月1日00:30,备服务器拉起Nginx+MySQL容器,指向/data/backup。
用curl循环访问业务接口200次,成功率≥99%算通过。
若失败,立即回滚主库,并记录原因。
六、冷备份补充
每季度dd全盘:
dd if=/dev/sdb of=/mnt/usb/date +%Y%m%d_full.img bs=4M status=progress
异地存放:移动硬盘贴标签,存银行保险箱,登记借出表。
七、常见坑
· SSH端口被改:rsync需加 -e "ssh -p 2222"。
· Syncthing被防火墙拦:firewall-cmd --add-port=22000/tcp --permanent。
· DRBD脑裂:出现Split-Brain时,先在备节点执行 drbdadm secondary r0 && drbdadm connect --discard-my-data r0,再主节点 drbdadm connect r0。
照着做,你的数据就能像那位老总一样,每天咧嘴大笑:“稳!”