docker mysql 备份
<p>在Linux创建文件
<code>vim backup.sh</code></p>
<pre><code>#!/bin/bash
#备份存储路径
BACKUP_DIR='/opt/docker-mysql/backups'
#备份时间
BACK_TIME=`date +%Y%m%d%H%M%S`
#文件名
BACKUP_FILE_NAME=${BACK_TIME}.sql.gz
#数据库
MYSQL_DATABASE='investment_project_management'
#用户名
MYSQL_USER='backup'
#密码
MYSQL_PASSWORD='xQ5BWbej686CnBf'
#km-ipm-mysql 是容器名称 echo 输出日志
echo "docker exec km-ipm-mysql sh -c "mysqldump -u${MYSQL_USER} -p${MYSQL_PASSWORD} ${MYSQL_DATABASE} | gzip > ${BACKUP_DIR}/${BACKUP_FILE_NAME}"
docker exec km-ipm-mysql sh -c "mysqldump -u${MYSQL_USER} -p${MYSQL_PASSWORD} ${MYSQL_DATABASE} | gzip > ${BACKUP_DIR}/${BACKUP_FILE_NAME}"</code></pre>
<p>超时自动删除 记录日志方式</p>
<pre><code>#!/bin/bash
#备份存储路径 Linux路径 非docker容器内路径
BACKUP_DIR='/opt/backups'
#日志备份路径
LOG_DIR='/opt/log'
#备份时间
BACK_TIME=`date +%Y%m%d%H%M%S`
#文件名
BACKUP_FILE_NAME=${BACK_TIME}.sql.gz
#需要备份的数据库,多个数据库用空格分开
MYSQL_DATABASE='investment_project_management'
#用户名
MYSQL_USER='backup'
#密码
MYSQL_PASSWORD='xQ5BWbej686CnBf'
#日志记录头部
echo "备份时间为${BACK_TIME},备份数据库表 ${MYSQL_DATABASE} 开始" >> ${LOG_DIR}/log.log
#正式备份数据库
for db in $MYSQL_DATABASE; do
docker exec km-ipm-mysql sh -c "mysqldump -u${MYSQL_USER} -p${MYSQL_PASSWORD} ${db} | gzip > ${BACKUP_DIR}/${BACKUP_FILE_NAME} 2>> ${LOG_DIR}/log.log";
#备份成功以下操作
if [ "$?" == 0 ];then
cd $BACKUP_DIR
#删除30天前备份,也就是只保存30天内的备份
find $BACKUP_DIR -name "*.sql.gz" -type f -mtime +30 -exec rm -rf {} \; > /dev/null 2>&1
echo "数据库表 ${MYSQL_DATABASE} 备份成功!!" >> ${LOG_DIR}/log.log
else
#备份失败则进行以下操作
echo "数据库表 ${MYSQL_DATABASE} 备份失败!!" >> ${LOG_DIR}/log.log
fi
done
</code></pre>