mysql自动备份

为了避免服务挂掉,数据库无法恢复,搞个脚本做数据库备份。核心的东西就是一个命令:mysqldump

为了避免服务挂掉,数据库无法恢复,搞个脚本做数据库备份。核心的东西就是一个命令: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

 

Intoep小程序

微信扫一扫,打开小程序浏览更便捷

转载作品,原作者:bettermann,文章来源:https://www.toutiao.com/i7065192846382809614

发表回复

登录后才能评论