引入

在工作时没有自动备份 MySql 的习惯,直到有一次 Update 误操作 where 语句的范围写了一个为 True 的值,导致数据错误。还好通过之前的备份恢复,没损失多少数据,这也让我养成经常备份数据的习惯。

备份脚本

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#!/bin/sh
DUMP=/usr/bin/mysqldump
OUT_DIR=/your/backup/dir/
LINUX_USER=root
# 你的数据库信息
DB_NAME=
DB_USER=
DB_PASS=
# 修改保存备份的日期
DAYS=7

cd $OUT_DIR
DATE=`date +%Y_%m_%d_%H_%M_%S`
OUT_SQL="$DATE.sql"

TAR_SQL="xxxx_bak_$DATE.tar.gz"

$DUMP -u$DB_USER -p$DB_PASS $DB_NAME --default-character-set=utf8 --opt -Q -R > $OUT_SQL
tar -zcvf $TAR_SQL  $OUT_SQL
rm $OUT_SQL
chown  $LINUX_USER:$LINUX_USER $OUT_DIR/$TAR_SQL

find $OUT_DIR -name "xxxx_bak*" -type f -mtime +$DAYS -exec rm {} \;