mysql /mariaDB自动备份保留天数

1、docker安装 mysql /mariaDB
[root@localhost]# vim /home/volume/mariaDB/docker_start.sh
#/bin/bash
docker run -d -p 3306:3306 \
--name mariadb \
-m 1024M --memory-swap 2048M \
-e MYSQL_ROOT_PASSWORD=password \
-v /home/volume/mariaDB/data:/var/lib/mysql \
-v /home/volume/mariaDB/backup:/opt/backup \
mariadb:10.2

tips: 如果本地已安装数据库则忽略第一步,注意把password改成你的密码

2、创建自动备份脚本
[root@localhost]# vim /home/volume/mariaDB/backup.sh
#!/bin/bash
dateBackup=$(date +%Y-%m-%d_%H:%M:%S)
base="/home/volume/mariaDB/backup/"
dir="${base}${dateBackup}"
# 宿主机新建目录,通过挂载会自动添加到容器
if [ ! -d "${dir}" ];then
                mkdir ${dir}
                echo "创建文件夹 ${dir} 成功" >> ${dir}/access.log
else
                echo "创建文件夹 ${dir} 失败,文件夹已存在" >> ${dir}/error.log
fi

# 需要备份的数据库名,创建只读用户:backup,并设置好密码。
# 注意: 服务器权限需要打开: Select、Process、Lock Tables,如果有视图的话,还需要勾选:Show View
dbNames=(dbname)
password=123456
host=数据库IP地址
for dbName in ${dbNames[@]}
do
                echo "-----------------> 备份 ${dbName} 数据库 <-----------------" >> ${dir}/access.log
        docker exec -i mariadb sh -c "mysqldump -ubackup -p${password} -h${host} -P3306 ${dbName} 1>> /opt/backup/${dateBackup}/${dbName}.sql 2>> /opt/backup/${dateBackup}/error.log"
        gzip ${dir}/${dbName}.sql
done

# 判断文件夹数量是否大于7,防止程序意外停止,删除所有备份
dirCount=`ls -l $base|grep "^d"|wc -l`
if [ ${dirCount} -gt 7 ];then
        # 删除超过七天的带"_"的目录
        find $base -mtime +6 -type d -exec rm -rf {} \;
        echo -e " 删除过期文件成功" >> ${dir}/delete.log
else
        echo "删除过期文件失败,文件数量小于 7 " >> ${dir}/error.log
fi

如果使用本地数据备份,则把备份命令改为:

mysqldump -ubackup -p$password -h$host -P3306 ${dbName} 1>> ${dir}/${dbName}.sql 2>> ${dir}/error.log;
3、设置计划任务
[root@localhost]# crontab -e

# 每日6点备份数据库
0 6 * * * cd /home/volume/mariaDB && ./backup.sh

数据库的重要性就不多说了,做好数据库的日常备份,有备无患。

本作品采用《CC 协议》,转载必须注明作者和本文链接
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!