双机备份

来自Shiyin's note
Shen讨论 | 贡献2017年2月10日 (五) 02:31的版本
跳到导航 跳到搜索

pdumpfs

  • linux最好用的备份软件,结合crontab实现每日定时增量备份

rdiff-backup

rdiff-backup使用简介

  1. 备份到远程主机
    rdiff-backup /some/local-dir hostname.net::/whatever/remote-dir
  2. 恢复数据到最新
    rdiff-backup -r now host.net::/remote-dir/file local-dir/file
  3. 恢复到数据到10天以前
    rdiff-backup -r 10D host.net::/remote-dir/file /tmp/file
  4. 查看5天以前的目录树
rdiff-backup --list-at-time 5D out-dir/subdir
  1. 看目录和文件的修改记录
    rdiff-backup --list-increments out-dir/file,显示文件的修改记录
    rdiff-backup --list-changed-since 5D out-dir/subdir,显示5天以来目录的修改记录

rsync

双机定时备份资料整理 运行ntsysv,确保crond服务和rsync服务都自动运行

chkconfig --list检查服务列表,rsync服务基于xinetd服务,首先保证xinetd已启动

service crond start
service rsync start

用ssh的公私钥的方法将两台机器用不输入密码的方法就可以访问,在主服务器终端:

cd /root
mkdir .ssh
ssh-keygen -t dsa

提示输入密码时不输入密码 将生成的 id_dsa.pub文件拷贝到备份服务器上,文件在你登陆用户目录的.ssh下 在备份服务器上将id_dsa.pub文件放到本机帐号的.ssh下,改名为authorized_keys

chmod 700 .ssh
chmod 600 .ssh/authorized_keys

在主服务器上编辑备份脚本

cd /usr/sbin/
vi backup.sh
#!/bin/sh
# 将所有错误信息重定向到文件/tmp/error.txt中
exec 2>/tmp/error.txt
  1. 停止mysql&PHP
/sbin/service httpd stop
/sbin/service mysql stop
  1. 双机备份:用rsync备份数据库nbw1和论坛数据库vbb_db到备份服务器目标目录,生成以当前备份日期和时间命名的目录
date='date +%F-%H-%M'
rsync -za -e ssh --delete --progress /usr/local/mysql/data/nbw1 root@backserverIP:/DESTdir/$date
rsync -za -e ssh --delete --progress /usr/local/mysql/data/vbb_db root@backserverIP:/DESTdir/$date
  1. 双机备份:用rsync异地同步备份htdocs目录,这样只拷贝不一样的内容并删除目标目录冗余内容
rsync -za -e ssh --delete --progress /usr/local/apache/htdocs root@DESTserverIP:/DESTdir
  1. 本地备份:用rsync备份数据库nbw1和论坛数据库vbb_db到本机备份目录,生成以当前备份日期和时间命名的目录
rsync -ruv --delete --progress /usr/local/mysql/data/nbw1 /DESTdir/$date
rsync -ruv --delete --progress /usr/local/mysql/data/vbb_db /DESTdir/$date
  1. 本地备份:用rsync本地同步备份htdocs目录,这样只拷贝不一样的内容并删除目标目录冗余内容
rsync -ruv --delete --progress /usr/local/apache/htdocs /localbackdir
  1. 再次启动mysql&PHP
/sbin/service mysql start
/sbin/service httpd start

完成后,chmod +x backup.sh,将权限改为可执行 然后crontab -e编辑定时触发事件,每天凌晨3点执行backup.sh

01 3 * * * /usr/sbin/backup.sh