数据在任何一家公司里面都是最核心的资产,定期备份则是为了保证数据库出现问题的时候能够及时回滚到最近的备份点,将损失缩小到最小
这篇文章将会两部分来说明:
1、mysql的定期备份;
2、同步到其它服务器
mysql 备份
备份还原某个数据库
备份还原
# 导出数据库/usr/bin/mysqldump -u root -ppwd database > database20160929.sql# 导入数据库mysql -u root -p database < database20160929.sql
备份到压缩文件从压缩文件导入
#备份到压缩文件/usr/bin/mysqldump -u root -ppwd database | gzip > database20160929.sql.gz#从压缩文件导入gzip < database20160929.sql.gz | mysql -u root -p databasecrontab定时备份
1、创建备份目录
# root 用户,创建备份目录mkdir -p /bak/mysqlbakcd /bak/mysqldata
2、编写运行脚本
vi /usr/sbin/bakmysql.sh
脚本代码:
#!/bin/bash# Name:bakmysql.sh# This is a ShellScript For Auto DB Backup and Delete old Backup#backupdir=/bak/mysqlbaktime=` date +%Y%m%d%H `mysql_bin_dir/mysqldump -u root -ppwd database | gzip > $backupdir/database$time.sql.gz#find $backupdir -name "name_*.sql.gz" -type f -mtime +7 -exec rm {} ; > /dev/null 2>&1#
脚本说明:
backupdir mysql备份地址
root mysql用户名
pwd mysql密码
database 数据库名
mysql_bin_dir mysql的bin路径;
time=` date +%Y%m%d%H `也可以写为time="$(date +"%Y%m%d$H")"其中`符号是TAB键上面的符号,不是ENTER左边的'符号,还有date后要有一个空格。
type f 表示查找普通类型的文件,f表示普通文件。
mtime +7 按照文件的更改时间来查找文件,+5表示文件更改时间距现在7天以前;如果是 -mmin +5 表示文件更改时间距现在5分钟以前。
exec rm {} / 表示执行一段shell命令,exec选项后面跟随着所要执行的命令或脚本,然后是一对儿{},一个空格和一个/,最后是一个分号。
/dev/null 2>&1 把标准出错重定向到标准输出,然后扔到/DEV/NULL下面去。通俗的说,就是把所有标准输出和标准出错都扔到垃圾桶里面;其中的& 表示让该命令在后台执行。
3、为脚本添加执行权限
# chmod +x /usr/sbin/bakmysql.sh
4、设置crontab定时执行
vi /etc/crontab #在最后一行中加入: 00 3 * * * root /usr/sbin/bakmysql.sh#表示每天3点00分执行备份注:crontab配置文件格式如下:分 时 日 月 周 命令
5、重启crontab
/etc/rc.d/init.d/crond restart
这样就完了定时备份并清理前7天的备份数据
同步到其它服务器
这里使用Linux同步文件工具rsync+inotify来进行文件的同步
rsync
rsync是类unix系统下的数据镜像备份工具――remote sync。一款快速增量备份工具 Remote Sync,远程同步 支持本地复制,或者与其他SSH、rsync主机同步
用法
rsync src dest
这是最简单的用法,表示同步src,dest文件。(即,执行之后,dest的文件与src的相同,以src的为准)
常用选项
-a: 等价于-rlptgoD,归档式
-r: 递归
-l: 复制软件链接
-p: 保留权限信息
-t: 将src的修改时间,同步到dest
-g: 同步组信息(group)
-o: 同步拥有者信息(own)
-D: 保持字符与块设备文件
-z: 启用压缩传输