mariadb备份恢复

前置条件:已安装docker,mariadb

命令

使用方法:将下面命令中的 $… 按照以下说明替换
$username:用户名
$password:密码
$databsename:数据库名称
$path:备份文件路径(包含文件名)
(例如: /home/test-backup/backup/20231122/CasualInspectionModule.sql)

1 备份单个数据库
docker exec -i 014 mysqldump -u$username -p$password --databases $databsename > $path
2 备份全部数据库至一个文件
docker exec -i 014 mysqldump -u$username -p$password --all-databases> $path

区别在于 --databases $databsename 替换为 --all-databases

3 还原备份

单个数据库:

docker exec -i 014 mariadb -u$username -p$password $databsename < $path

整体还原:

docker exec -i 014 mariadb -u$username -p$password < $path
4 定时备份

mariadb_backup.sh

#!bin/bash

# 最多备份数量
MAX_COUNT=31

# 数据库docker容器id
DOCKER_ID=$1

# 定义备份文件名
BACKUP_NAME="mariadb_backup_$(date +%Y%m%d_%H%M%S).sql"

# 定义备份路径
BACKUP_DIR="/home/backup"

# sql文件存储路径
BACKUP_SAVE="$BACKUP_DIR/timing"

if [ -z $DOCKER_ID ]; then

echo '缺少 docker id'
echo '缺少 docker id' >> $BACKUP_DIR/log.txt

else

# 没有文件夹就创建
if [ ! -d $BACKUP_SAVE ]; then
 mkdir -p $BACKUP_SAVE
fi

# 定义Mariadb登录信息
DB_USER="root"
DB_PASS="123456"

# 控制台输出信息
echo "[info][$(date +'%Y-%m-%d %H:%M:%S')] 开始备份,请稍等..."

# 写日志
echo "[info][$(date +'%Y-%m-%d %H:%M:%S')] docker exec -i $DOCKER_ID mysqldump -u$DB_USER -p$DB_PASS --all-databases > $BACKUP_SAVE/$BACKUP_NAME" >> $BACKUP_DIR/log.txt
# 备份Mariadb数据库
docker exec -i "$DOCKER_ID" mysqldump -u$DB_USER -p$DB_PASS --all-databases > $BACKUP_SAVE/$BACKUP_NAME

# 找出需要删除的备份
DEL_FILE=`ls -l -crt $BACKUP_SAVE/*.sql | awk '{print $9 }' | head -1`

# 判断现在的备份数量是否大于MAX_COUNT
SQL_COUNT=`ls -l -crt $BACKUP_SAVE/*.sql | awk '{print $9 }' | wc -l`

if [ $SQL_COUNT -gt $MAX_COUNT ]; then

# 控制台输出信息
echo "[info][$(date +'%Y-%m-%d %H:%M:%S')] 当前备份数量已大于$MAX_COUNT,正在删除[$DEL_FILE]"

# 删除最早生成的备份
rm $DEL_FILE
echo "[info][$(date +'%Y-%m-%d %H:%M:%S')] rm $DEL_FILE" >> $BACKUP_DIR/log.txt

fi

fi
5 定时任务

查看

crontab -l

编辑

crontab -e

编辑文档
每周一凌晨0:05进行备份(014是mariadb数据库的docker容器id前三位)

0 0 * * 1 sudo sh /home/backup/mariadb_backup.sh 014

编辑完成后wq保存退出即可

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值