linux每天定时备份数据库并删除十天前数据详细步骤
每天定时备份数据库需要用到Linux的定时任务,利用Linux的crondtab 命令。下面通过本文给大家带来了linux每天定时备份数据库并删除十天前数据详细步骤,感兴趣的朋友一起看看吧
每天定时备份数据库需要用到Linux的定时任务,利用Linux的crondtab 命令。下面我们来看详细步骤:
一、写好shell脚本 mysqlbak.sh
!/bin/sh
mysqldump -uroot -pmysqlroot xhblt | gzip > /mysqlbak/date '+%Y-%m-%d_%H:%M:%S'
.sql.gz
find /mysqlbak/ -mtime +10 -name ".sql.gz" -exec rm -rf {} ;
脚本解析:
mysqldump -uroot -pmysqlroot xhblt | gzip > /mysqlbak/date '+%Y-%m-%d_%H:%M:%S'
.sql.gz
此举含义为下载数据库文件,将数据库文件以”年-月-日-时-分-秒.sql.gz”的名称存在根目录下的mysqlbak文件夹中,数据库的登录备份信息为:(用户名:root 密码:mysqlroot 需要备份数据库名称为:xhblt)
find /mysqlbak/ -mtime +10 -name ".sql.gz" -exec rm -rf {} ;
含义为:找到根目录下mysqlbak文件夹中的数据然后删除10天前的数据
二、目录创建以及文件上传
1、在根目录下创建文件夹 mysqlbak作为备份目录,目录权为777
mkdir /mysqlbak;
chmod 777 /mysqlbak;
2、文件上传
将写好的shell脚本放在 /etc 目录下,并且赋予权限 777
chmod 777 /etc/mysqlbak.sh
三、加入定时任务
1、输入 crontab –e 命令加入
0 3 * * * /etc/mysqlbak.sh //每天凌晨三点执行shell文件
然后”:wq!”保存退出
2、输入 service crond restart 重启定时服务
MySQL备份并压缩生成.sql文件,删除30天之前的备份
!/bin/sh
Database info
用户名
DB_USER="lims"
密码
DB_PASS="lims"
数据库地址
DB_HOST="localhost"
数据库名称
DB_NAME="lims"
Others vars
BIN_DIR="/usr/bin" #the mysql bin path
BCK_DIR="/AppHome/BAK/mysql/" #the backup file directory
DATE=date +%Y-%m-%d-%H%M%S
TODO
/usr/bin/mysqldump --opt -ubatsing -pbatsingpw -hlocalhost timepusher > /mnt/mysqlBackup/db_date +%F
.sql
$BIN_DIR/mysqldump --opt -u$DB_USER -p$DB_PASS -h$DB_HOST $DB_NAME > $BCK_DIR/db_$DATE.sql
备份数据库并压缩
$BIN_DIR/mysqldump --opt -u$DB_USER -p$DB_PASS $DB_NAME > $BCK_DIR/lims_$DATE.sql
$BIN_DIR/mysqldump --opt -u$DB_USER -p$DB_PASS $DB_NAME | gzip > $BCK_DIR/lims_$DATE.sql.zip
删除30天之前的备份
find $BCK_DIR -mtime +30 -name "." -exec rm -Rf {} ;
alpine-java.jdk8-full.tar
alpine.latest.tar
CentOS-7-x86_64-Everything.iso
gitlab_gitlab-runner.latest.tar
gradle.latest.tar
java.8-jdk-alpine.tar
library_alpine.tar
mysql-5.7.25-1.el7.x86_64.rpm-bundle.tar
mysql.5.7.26.tar
mysql-community-client-5.7.25-1.el7.x86_64.rpm
mysql-community-common-5.7.25-1.el7.x86_64.rpm
mysql-community-devel-5.7.25-1.el7.x86_64.rpm
mysql-community-embedded-5.7.25-1.el7.x86_64.rpm
mysql-community-embedded-compat-5.7.25-1.el7.x86_64.rpm
mysql-community-embedded-devel-5.7.25-1.el7.x86_64.rpm
mysql-community-libs-5.7.25-1.el7.x86_64.rpm
mysql-community-libs-compat-5.7.25-1.el7.x86_64.rpm
mysql-community-server-5.7.25-1.el7.x86_64.rpm
mysql-community-test-5.7.25-1.el7.x86_64.rpm
redis-3.2.9
redis-3.2.9.tar.gz
sameersbn_gitlab.11.11.2.tar
sameersbn.redis.tar
sebp_elk.701.tar
######################TY50备份用###########################
!/bin/sh
Database info
用户名
DB_USER="lims"
密码
DB_PASS="lims"
数据库地址
DB_HOST="localhost"
数据库名称
DB_NAME="btlclims"
Others vars
BIN_DIR="/usr/bin" #the mysql bin path
BCK_DIR="/LimsHome/BAK/mysql/" #the backup file directory
DATE=date +%Y-%m-%d-%H%M%S
TODO
/usr/bin/mysqldump --opt -ubatsing -pbatsingpw -hlocalhost timepusher > /mnt/mysqlBackup/db_date +%F
.sql
$BIN_DIR/mysqldump --opt -u$DB_USER -p$DB_PASS -h$DB_HOST $DB_NAME > $BCK_DIR/db_$DATE.sql
备份数据库并压缩
$BIN_DIR/mysqldump --opt -u$DB_USER -p$DB_PASS $DB_NAME > $BCK_DIR/lims_$DATE.sql
$BIN_DIR/mysqldump --opt -u$DB_USER -p$DB_PASS $DB_NAME | gzip > $BCK_DIR/btlclims_$DATE.sql.zip
删除30天之前的备份
find $BCK_DIR -mtime +30 -name "." -exec rm -Rf {} ;
报错:报错:报错:报错:
mysqldump: Got error: 1449: The user specified as a definer ('user'@'%') does not exist when using LOCK TABLES
一个库用mysqldump -u -p --opt --force -e --max_allowed_packet= --net_buffer_length= --databases备份时报错如下:mysqldump: Got error: 1449: The user specified as a definer ('user'@'%') does not exist when using LOCK TABLES
解决:在网上查找别人的解决方法,大意是说数据库是从别的实例复制过来的,而复制时记录了原实例的用户,但是目前实例上并没有该用户,所以导致报错,我这个库确实是从别的实例复制过来的,网上的解决方法比较复杂,后面搜到一个英文网站的解决方法https://help.directadmin.com/item.php?id=453,在备份时加上--single-transaction参数即可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了