一直用的vps好好的,上面搭建了梯子,便于查阅一些疑难杂症。前两天听同事反馈说翻墙用不了了,于是ssh到vps检查问题,一时半会并未发现问题在哪,于是想着400多天没重启了,就先重启下的,谁知道一重启mysql服务就起不来了,查看报错信息,大概意思是mysql里面的host表不存在,启动失败,于是去datadir看了下,傻眼了,数据都没了。不知道是被黑了还是误删了,总之不管了,犹豫之前偷懒没有做备份,导致本站数据丢失了近一年半的文章,哎....心碎一地
果断放弃了之前的vps,重启购买了一台,重新搭建环境。一切部署完毕,这次要进行数据备份,以防万一。
1.数据库备份
以下是mysql备份脚本:
import os
from datetime import datetime as dt
DB_HOST='127.0.0.1'
MYSQL_DUMP_DIR='/data/backup/db'
DB_PASSWD='123456'
def data_dump():
now_str = dt.now().strftime("%Y-%m-%d_%H%M%S")
db_name = 'typecho'
# cmd = "mysqldump %s>%s" % (db_name, os.path.join(MYSQL_DUMP_DIR, db_name + '_' + now_str + '.sql'))
# don't need :-u root -p
fname = os.path.join(MYSQL_DUMP_DIR, db_name + '_' + now_str + '.sql')
cmd = "mysqldump -h %s -p%s -P 3306 " \
"%s>%s" % (DB_HOST, DB_PASSWD, db_name, fname)
print 'running:', cmd
try:
os.system(cmd)
except Exception, e:
print 'error: %s' % str(e)
print 'end, generated file:', fname
data_dump()
执行脚本结果如下:
# python mysql_back.py
running: mysqldump -h 127.0.0.1 -p123456 -P 3306 typecho>/data/backup/db/typecho_2018-02-28_144428.sql
end, generated file: /data/backup/db/typecho_2018-02-28_144428.sql
2.网站数据备份
#!/bin/bash
backupdir='/data/backup/webdata'
dbbak_dir='/data/backup/db'
webdir='/data/www/'
filename=build_`date +%y%m%d%H%M`.tar.gz
cd $webdir
tar -zcf $filename build
mv $filename $backupdir
echo "`date +%F` backup finished " >> /data/backup/bakup.log
find $backupdir -type f -mtime +15|xargs rm -f
find $dbbak_dir -type f -mtime +30|xargs rm -f
3.添加计划任务
[root@blog scripts]# crontab -l
1 2 * * * /bin/bash /data/scripts/back_web.sh
2 2 * * * /usr/bin/python /data/scripts/mysql_back.py
4.异地备份(rsync)
配置rsync守护进程
[root@blog scripts]# cat /etc/rsyncd.conf
uid=root
gid=root
list = no
strict modes = false
max connections=3600
use chroot=no
log file=/var/log/rsyncd.log
pid file=/var/run/rsyncd.pid
lock file=/var/run/rsyncd.lock
ignore errors = yes
read only = yes
[DBBACK]
path = /data/backup
hosts allow = * ##建议设置成你需要存放备份数据的IP
在异地服务器添加同步命令(配置计划任务自定义执行时间):
# cat rsync.sh
if [ `ps -ef|grep "HostIP::DBBACK"|grep -v grep|wc -l` -eq 0 ];then
nohup rsync -avP --exclude='.[a-zA-Z0-9]*' --port=19873 HostIP::DBBACK /home/databakup&
fi
本文由 Mr Gu 创作,采用 知识共享署名4.0 国际许可协议进行许可
本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名
最后编辑时间为: Feb 28, 2018 at 03:47 pm