取消mysql自动备份文件_MySQL自动备份并清算多少天前的备份文件_mysql

本文介绍了如何使用mysqldump创建MySQL数据库的自动备份,并通过shell脚本实现每天早上5点的定时任务。同时,展示了如何配置脚本删除超过2天的备份文件,以保持备份目录整洁。
摘要由CSDN通过智能技术生成

mysql自动备份并清理多少天前的备份文件

自动备份

一、利用mysql提供的mysqldump工具进行数据库的导入导出

二、使用shell命令执行mysqldump

/usr/local/mysql/bin/mysqldump --opt -ubatsing -pbatsingpw -hlocalhost timepusher > /usr/local/sql/back/mcpsms_titan_date +%F.sql

注解:

1、执行/usr/local/mysql/bin/mysqldump  mysql安装目录bin目录下的可执行文件;

2、--opt是quick,add-drop-table,add-locks,extended-insert,lock-tables几个参数的名称,一般都要使用,具体意思自行搜索;

3、-u数据库用户名 -p数据库密码 -h数据库地址 数据库名 > 导出的文件路径

4、date+%F是shell中生成当前日期,格式如2018-05-30,所以成功导出的文件名为mcpsms_titan_2015-05-30.sql;

5、检查生成的sql文件是否有问题

三、整理shell脚本,方便重用

#!/bin/sh

# tabase info

DB_USER="root"

DB_PASS="root"

DB_HOST="localhost"

DB_NAME="mcpsms-titan"

# Others vars

BIN_DIR="/usr/local/mysql/bin"            #the mysql bin path

BCK_DIR="/usr/local/sql/back"    #the backup file directory

DATE=date +%F

# TODO

# /usr/local/mysql/bin/mysqldump --opt -ubatsing -pbatsingpw -hlocalhost timepusher > /usr/local/sql/back/mcpsms_titan_date +%F.sql

$BIN_DIR/mysqldump --opt -u$DB_USER -p$DB_PASS -h$DB_HOST $DB_NAME  > $BCK_DIR/mcpsms_titan_$DATE.sql

四、测试shell脚本

1、进入脚本文件目录chmod +x sqlAutoBak.sh添加执行权限

2、./sqlAutoBak.sh

如果mysql包含多个实例,需要指定sock文件,修改脚本为:

#!/bin/sh

# tabase info

DB_USER="root"

DB_PASS="root"

DB_HOST="localhost"

DB_NAME="mcpsms-titan"

# Others vars

BIN_DIR="/usr/local/mysql/bin"            #the mysql bin path

BCK_DIR="/usr/local/sql/back"    #the backup file directory

DATE=date +%F

# TODO

# /usr/local/mysql/bin/mysqldump --opt -ubatsing -pbatsingpw -hlocalhost timepusher > /usr/local/sql/back/mcpsms_titan_date +%F.sql

$BIN_DIR/mysqldump --opt -u$DB_USER -p$DB_PASS -S /data/3306/mysql.sock  -h$DB_HOST $DB_NAME > $BCK_DIR/mcpsms_titan_$DATE.sql

五、压缩mysql备份数据

sqlAutoBak.sh修改如下:

#!/bin/sh

# tabase info

DB_USER="root"

DB_PASS="root"

DB_HOST="localhost"

DB_NAME="mcpsms-titan"

# Others vars

BIN_DIR="/usr/local/mysql/bin"            #the mysql bin path

BCK_DIR="/usr/local/sql/back"    #the backup file directory

DATE=date +%F

# TODO

# /usr/local/mysql/bin/mysqldump --opt -ubatsing -pbatsingpw -hlocalhost timepusher > /usr/local/sql/back/mcpsms_titan_date +%F.sql

$BIN_DIR/mysqldump --opt -u$DB_USER -p$DB_PASS -S /data/3306/mysql.sock  -h$DB_HOST $DB_NAME | gzip > $BCK_DIR/mcpsms_titan_$DATE.sql.gz

压缩一定要写在后面,不然会报错

如果该数据库的用户没有分配锁表的权限,则备份会报错when using LOCK TABLES。那是因为mysqldump命令默认在导出时是要锁定表的,所以解决方式有两个。一个是给用户开放锁表的权限;另一个是在命令中加上--skip-lock-tables这个参数。即是:

#!/bin/sh

# tabase info

DB_USER="root"

DB_PASS="root"

DB_HOST="localhost"

DB_NAME="mcpsms-titan"

# Others vars

BIN_DIR="/usr/local/mysql/bin"            #the mysql bin path

BCK_DIR="/usr/local/sql/back"    #the backup file directory

DATE=date +%F

# TODO

# /usr/local/mysql/bin/mysqldump --opt -ubatsing -pbatsingpw -hlocalhost timepusher > /usr/local/sql/back/mcpsms_titan_date +%F.sql

$BIN_DIR/mysqldump --opt -u$DB_USER -p$DB_PASS -S /data/3306/mysql.sock  -h$DB_HOST $DB_NAME --skip-lock-tables | gzip > $BCK_DIR/mcpsms_titan_$DATE.sql.gz

六、设置linux定时任务执行脚本

1、编辑定时任务列表

crontab -e

2、插入下面这一行

00 05 * * * /bin/sh /usr/local/sql/sqlAutoBak.sh

#每天早上5:00执行

3、查看任务是否创建成功

crontab -l

七、第二天检查自动生成的sql文件是否符合要求

自动删除N天前备份的数据文件

一、删除文件命令

find 对应目录 -mtime +天数 -name "文件名" -exec rm -rf {} /;

二、计划任务

1、创建shell脚本

touch /usr/local/sql/sqlAutoDel.sh

chmod +x sqlAutoDel.sh

新建一个执行文件,并且分配权限

2、编辑shell脚本

#!/bin/sh

find /usr/local/sql/back/ -mtime +2 -name '*.gz' -exec rm -rf {} /;

保存退出

3、计划任务

crontab -e

将sqlAutoDel.sh加入到计划任务中

10 05 * * * /bin/sh /usr/local/sql/sqlAutoDel.sh >/dev/null 2>&1

#每天早上5:10执行清理任务

欢迎大家阅读《MySQL自动备份并清算多少天前的备份文件_mysql》,跪求各位点评,by 搞代码

e7ce419cf2d6ad34d01da2ceb8829eed.png

微信 赏一包辣条吧~

023a57327877fb4402bcc76911ec18ea.png

支付宝 赏一听可乐吧~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值