1.备份数据库
1.1sql脚本备份
#导出数据库
#pwd即root的密码 与-p之前不能空格隔开
/usr/bin/mysqldump -u root -ppwd database > database2081218.sql
#导入数据库
/mysql -u root -p database < database20181218.sql
1.2压缩包形式
#导出数据库
/usr/bin/mysqldump -u root -ppwd database | gzip > database20181218.sql.gz
#导入数据库
gzip < database20181218.sql.gz | mysql -u root -p database
2.利用/etc/crontab指定定时备份
2.1创建备份目录
#root 用户创建备份目录
mkdir -p /bak/mysqlbak
cd /bak/mysqlbak
2.2编写备份脚本
vim /usr/sbin/bakmysql.sh
===================================以下为脚本代码==========================
#!/bin/bash
#Name:backmysql.sh
#This is a shell script for auto DB backup and delete old backup
backupdir=/bak/mysqlbak
time=` date +%Y%m%d%H `
mysql_bin_dir/mysqldump -u root -ppwd database | gzip > $backupdir/database$time.sql.gz
# 格式要求:-exec 要执行的命令 空格{}空格\;
find $backupdir -name "databasename_*.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")" | 获取日期格式 |
type f | 表示查找普通类型的文件,f表示普通文件 |
mtime +7 | 按照文件的更改时间来查找文件,+7表示更改时间距离现在7天以前 |
mmin +5 | 文件更改时间距离现在5分钟以前 |
exec rm { } | 表示执行一段shell命令 |
/dev/null 2>&1 | 把标准出错重定向到标准输出,然后扔到/DEV/NULL下面去,&后台运行 |
2.3为sh脚本添加执行权限
chmod +x /usr/sbin/backmysql.sh
2.4在/etc/crontab添加定时任务
vim /etc/crontab
#在最后一行加入
#crontab配置文件格式 分 时 日 月 周 命令
#表示每天3点00分执行备份
00 3 * * * root /user/sbin/backmysql.sh
2.5重启crontab
/etc/rc.d/init.d/crond restart
即可完成定时备份并清理前7天的备份数据
3.同步到其他服务器
使用Linux同步文件工具rsync+inotify来进行文件的同步
rsync
rsync是类unix系统下的数据镜像备份工具——remote sync。一款快速增量备份工具 Remote Sync,远程同步 支持本地复制,或者与其他SSH、rsync主机同步
用法:rsync src dest
## 将本地/bak/mysqlbak/文件同步到 远程服务器 /bak/mysql/bak 目录下面 排除 mysqlbak/index目录 通过ssh端口
rsync -vzacu /bak/mysqlbak/ root@192.168.53.86:/bak/mysqlbak --exclude "mysqlbak/index" -e "ssh -p 22"
# 将远程目录 /bak/mysqlbak下的文件同步到本地 /bak/mysqlbak/目录下
rsync -vzrtopg --progress --delete root@192.168.53.85:/bak/mysqlbak /bak
同步后续补充