为了避免服务挂掉,数据库无法恢复,搞个脚本做数据库备份。核心的东西就是一个命令:mysqldump
首先写一个自动备份的shell脚本:
#!/bin/bash #数据库用户名 db_username="admin" #数据库密码 db_password="pwd" #数据库ip db_host="localhost" #数据库库名 db_name="test_db" #mysqldump命令目录 bin_dir="/usr/bin" #备份数据目录 bck_dir="/home/data/mysqlbackup" #文件名:日期命名,20220126.sql date=`date +%F` #备份命令 $bin_dir/mysqldump --opt -u$db_username -p$db_password -h$db_host $db_name > $bck_dir/$date.sql
升级版本1:压缩文件
$bin_dir/mysqldump --opt -u$db_username -p$db_password -h$db_host $db_name | gzip > $bck_dir/$date.sql.gz
如果gzip未安装需要安装gzip
yum -y install zip gzip
升级版本2:防止锁表
$bin_dir/mysqldump --opt -u$db_username -p$db_password -h$db_host $db_name --skip-lock-tables | gzip > $bck_dir/$date.sql.gz
升级版本3:备份多个库
#数据库库名 db_names=("db-test1" "db-test2") for db in ${db_names[@]};do echo database:$db $bin_dir/mysqldump --opt -u$db_username -p$db_password -h$db_host $db_name --skip-lock-tables | gzip > $bck_dir/$date.sql.gz done
升级版本4:删除过期数据
expire_flag="ON" expire_days=15 if [ "expire_flag" == "ON" -a "$bck_dir" != "" ];then `find $bck_dir/ -type f -mtime +$expire_days | xargs rm -rf` echo "Expired backup data delete complete!" fi
添加系统定时任务:
#打开任务列表 crontab -e #加入定时任务,每天凌晨3点自动执行 00 03 * * * cd /home/script/;sh mysql_dump.sh >> log.txt 2>>log.txt
转载作品,原作者:bettermann,文章来源:https://www.toutiao.com/i7065192846382809614