MySQL全库备份策略
1、 创建文件夹用于存放备份的数据库文件
语句:mkdir /home/dbback
2、 创建脚本文件bkDatabaseName.sh
语句:touch bkDatabaseName.sh
3、 在脚本文件中输入所要执行的语句
语句:vim bkDatabaseName.sh
脚本内容:
db_user=“root”
db_passwd=“new-password”
db_name=“sudipc”
backup_dir="/home/dbback"
time="
(
d
a
t
e
+
"
m
y
s
q
l
d
u
m
p
−
u
(date +"%Y%m%d%H%M%S")" mysqldump -u
(date+"mysqldump−udb_user -p$db_passwd
d
b
n
a
m
e
>
"
db_name > "
dbname>"backup_dir/
d
b
n
a
m
e
"
"
db_name"_"
dbname""time.sql "
注释:
db_user:MySQL的用户名
db_passwd:MySQL的密码
db_name:所要备份的数据库名称
backup_dir:备份文件存放的物理路径
注意:
注意 -p 和
d
b
p
a
s
s
w
d
之
间
没
有
空
格
,
不
然
db_passwd之间没有空格,不然
dbpasswd之间没有空格,不然db_passwd会被当做参数[数据库名]来解析
4、 运行脚本
语句:./bkDatabaseName.sh
若不能运行,需要先给脚本文件增加执行权限
定时备份策略
1、 更改备份策略的执行权限
语句:chmod 777 /home/dbback/bkDatabaseName.sh
2、 创建定时任务
语句:crontab -e
语句:00 11 * * * /home/dbback/bkDatabaseName.sh
表示在每天的11点自动运行bkDatabaseName.sh脚本
3、 重启定时任务
使用 service crond restart 或者/etc/init.d/crond restart(Centos7下为systemctl restart crond)
service crond start //启动服务
service crond stop //关闭服务
service crond restart //重启服务
service crond reload //重新载入配置
service crond status //查看服务状态
4、 定时删除
在bkDatabaseName.sh中增加定时删除命令
语句:find $backup_dir -name $db_name"*.sql" -type f - mtime +7 -exec rm -rf {} ; > /dev/null 2>&1
注释:
-type f 表示查找普通类型的文件,f 表示普通文件,可不写
-mtime +7 按照文件的更改时间来查找文件,+7表示文件更改时间距现在7天以前;如果是-mmin +7表示文件更改时间距现在7分钟以前
-exec rm {} ; 表示执行一段shell命令,exec选项后面跟随着所要执行的命令或脚本,然后是一对{ },一个空格和一个\,最后是一个分号;
/dev/null 2>&1 把标准出错重定向到标准输出,然后扔到/DEV/NULL下面去。通俗的说,就是把所有标准输出和标准出错都扔到垃圾桶里面;其中的& 表示让该命令在后台执行
还原数据库
语句:mysql -u root -p sudipc < /home/dbback/sudipc_20190606114314.sql