MySQL 定时备份策略
备份数据库
1、定时备份脚本 /usr/local/mysql/bakmysql.sh
plaintext
1 | #!/bin/bash |
脚本说明
- $BIN_DIR mysql 备份地址
- $DB_USER 数据库用户名
- $DB_PASS 数据库密码
- $DB_HOST 数据库地址(IP 或者是 localhost 之类的)
- $DB_ZFBM 字符集编码设置(这个很关键,解决导出文件中中文乱码)
- $DB_NAME 数据库名称
- $DB_TABLE 要备份的表名(如果只对单一表进行备份,可以加此字段,全库备份的可以省略掉)
- $BCK_DIR/db_$DATE.sql 备份的地址和备份文件名称
2、脚本附加权限
plaintext
1 | chmod +x bakmysql.sh |
3、验证脚本是否正确
如果脚本没问题,会在
/home/mysql_backup
生成备份文件。
plaintext
1 | ./bakmysql.sh |
4、定时删除备份数据库
plaintext
1 | find $BCK_DIR -name "db_*.sql" -type f -mtime +7 -exec rm {} \; > /dev/null 2>&1 |
脚本说明
-type f
表示查找普通类型的文件,f 表示普通文件。-mtime +7
按照文件的更改时间来查找文件,+3 表示文件更改时间距现在 3 天以前;如果是 -mmin +5 表示文件更改时间距现在 5 分钟以前。-exec rm {} \;
表示执行一段 shell 命令,exec 选项后面跟随着所要执行的命令或脚本,然后是一对儿{},一个空格和一个,最后是一个分号。/dev/null 2>&1
把标准出错重定向到标准输出,然后扔到 /DEV/NULL 下面去。通俗的说,就是把所有标准输出和标准出错都扔到垃圾桶里面;其中的 & 表示让该命令在后台执行。
5、编辑定时任务列表
plaintext
1 | crontab -e |
plaintext
1 | # 每天早上 4:00:00 执行 |
crontab 配置文件格式如下
plaintext
1 | 分 时 日 月 周 命令 |
6、查看设置的定时任务是否成功
plaintext
1 | crontab -l |
7、crontab 基本命令
plaintext
1 | # 重启 |
备份 FastDFS
1、备份脚本/usr/local/mysql/bakstorage.sh
plaintext
1 | #!/bin/bash |
2、脚本附加权限
plaintext
1 | chmod +x bakstorage.sh |
3、验证脚本是否正确
如果脚本没问题,会在
/home/fdfs_storage_backup
生成备份文件。
plaintext
1 | ./bakstorage.sh |
4、添加定时任务同上步骤。
整机备份
目的备份所有的目录。以 root 权限在”/“目录执行备份命令。
1、备份命令,打包一个备份文件centos7_backup.tgz
plaintext
1 | # tar cvpzf centos7_backup.tgz / --exclude=/proc --exclude=/centos7_backup.tgz --exclude=/mnt --exclude=/sys |
2、恢复命令,把备份文件拷贝到根分区, 然后执行命令。
警告:这会把你分区里所有文件替换成压缩文档里的文件!
plaintext
1 | # tar xvpfz centos7_backup.tgz -C / |
3、重新创建你剔除的目录
plaintext
1 | # mkdir proc |
4、执行以下命令再重启
plaintext
1 | # restorecon -Rv / |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 颜不喜!