Linux计划任务定时备份数据
最近有项目需要定期备份mysql数据的需求,通过linux系统的crontab计划任务实现了一个简单demo,通过mysqldump命令对mysql数据进行备份。
首先新建一个脚本文件:mysqlbak.sh(我这里的目录是 /data/mysqlbak/ )
#!/bin/bash #备份文件存放路径 backupdir=/data/mysqlbak time=` date +%Y%m%d%H%M ` echo -e `date '+%F %T %A'` " Crontab Start \n" >> $backupdir/crontab_mysqlbak_log_`date +'%Y'`.log #备份所有数据库并打包 mysqldump -h192.168.2.150 -uxxh -p"xxh密码" --all-databases --single-transaction --default-character-set=utf8 |gzip > $backupdir/mysql$time.sql.gz #删除7天之外的备份文件 find $backupdir -name "mysql*.sql.gz" -type f -mtime +7 -exec rm {} \; > /dev/null 2>&1 echo -e `date '+%F %T %A'` " Crontab End \n" >> $backupdir/crontab_mysqlbak_log_`date +'%Y'`.log
保存成 mysqlbak.sh,然后执行 sudo chmod +x mysqlbak.sh 给脚本添加可执行权限。
然后把这个脚本添加到任务计划中:
sudo crontab -u root -e 或者 sudo crontab -e 即可进入任务计划。
#计划任务每天3:00执行脚本 00 03 * * * /bin/bash /data/mysqlbak/mysqlbak.sh
到这里就完成了。然后过了几天再来查看效果如下:
通过命令 tail -f crontab_log_2020.log 查看输出的日志:
这个案例实现了基本功能,如果要其他功能请自行修改。
【mysql备份全部全部数据库示例】
1,备份数据库,排除mysql本身的库以及被锁定的表。
2,备份数据库,排除mysql本身的库以及被锁定的表,同时压缩备份。
#备份数据库,排除mysql本身的库以及被锁定的表。 mysql -h10.90.2.189 -u用户名 -p"密码" -P3306 -e 'show databases;'|grep -Ev "Database|information_schema|mysql|performance_schema|testxxx" |xargs mysqldump -h10.90.2.189 -u用户名 -p"密码" -P3306 --databases > 333.sql #备份数据库,排除mysql本身的库以及被锁定的表。同时压缩备份。 mysql -h10.90.2.189 -u用户名 -p"密码" -P3306 -e 'show databases;'|grep -Ev "Database|information_schema|mysql|performance_schema|testxxx" |xargs mysqldump -h10.90.2.189 -u用户名 -p"密码" -P3306 --databases --single-transaction --default-character-set=utf8 |gzip > 344.sql.gz
#备份数据库,排除mysql本身的库以及被锁定的表。
mysql -h10.90.2.189 -u用户名 -p"密码" -P3306 -e 'show databases;'|grep -Ev "Database|information_schema|mysql|performance_schema|testxxx" |xargs mysqldump -h10.90.2.189 -u用户名 -p"密码" -P3306 --databases > 333.sql
#备份数据库,排除mysql本身的库以及被锁定的表。同时压缩备份。
mysql -h10.90.2.189 -u用户名 -p"密码" -P3306 -e 'show databases;'|grep -Ev "Database|information_schema|mysql|performance_schema|testxxx" |xargs mysqldump -h10.90.2.189 -u用户名 -p"密码" -P3306 --databases --single-transaction --default-character-set=utf8 |gzip > 344.sql.gz
【mysql恢复备份】
下面示例常见的根据备份恢复mysql数据的方法:
解压:
gzip -d mysql2020703.sql.gz
非压缩备份文件恢复:
mysql -uxxh -p < mysql2020703.sql
从压缩文件直接恢复:
gzip < mysql22020703.sql.gz | mysql -h 192.168.10.125 -P3306 -u xxh -p"mysql密码"
【完】
【shell脚本按当前日期输出日志】https://www.cnblogs.com/xiongzaiqiren/p/11413242.html
【Linux计划任务,定时清空日志】https://www.cnblogs.com/xiongzaiqiren/p/11190371.html