mysql /mariadb自动备份保留天数 | 数据库论坛-江南app体育官方入口

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
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!
未填写
文章
8
粉丝
3
喜欢
40
收藏
109
排名:985
访问:5737
博客标签
社区赞助商
网站地图