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 协议》,转载必须注明作者和本文链接