【脚本】使用脚本备份docker中部署的mysql数据库

v1版本明文密码方式

#!/bin/bash

# 定义 MySQL 容器名称和数据库信息
container_name="mysql_container"
db_user="root"
db_password="your_password"

# 定义要备份的数据库列表
databases=("database1" "database2" "database3")

# 定义备份文件保存路径
backup_dir="/host/path/to/backup"

# 创建备份文件保存目录
mkdir -p ${backup_dir}

# 获取当前时间作为备份文件名的一部分
timestamp=$(date +"%Y%m%d%H%M%S")

# 循环备份每个数据库
for db_name in "${databases[@]}"
do
    backup_file="${backup_dir}/${timestamp}_backup_${db_name}.sql"

    # 使用 Docker 执行 mysqldump 命令备份数据库
    docker exec ${container_name} mysqldump -u ${db_user} -p${db_password} ${db_name} > ${backup_file}

    if [ $? -eq 0 ]; then
        echo "数据库 ${db_name} 备份成功!备份文件路径:${backup_file}"
    else
        echo "数据库 ${db_name} 备份失败!"
    fi
done
上述方式可优化部分
  1. 使用环境变量来存储敏感信息(如数据库密码),而不是直接在脚本中硬编码。
  2. 添加错误处理,以确保在备份过程中出现任何问题时能够得到通知。
  3. 在执行 mysqldump 命令时,确保密码不会被泄露在命令行历史记录中。

优化后

  1. 将所需参数配置到环境变量中:

使用vi命令编辑文件

vi ~/.bashrc

在文件中插入你的配置信息,保存退出

export CONTAINER_NAME="your_mysql_container"
export DB_USER="root"
export DB_PASSWORD="your_secure_password"
export BACKUP_DIR="/path/to/your/backup/directory"

使更改立即生效,需要重新加载 .bashrc 文件

source ~/.bashrc

通过运行以下命令来验证环境变量是否已正确设置

echo $CONTAINER_NAME
echo $DB_USER
echo $DB_PASSWORD
echo $BACKUP_DIR

v2版本脚本

#!/bin/bash

# 使用环境变量存储敏感信息
container_name="${CONTAINER_NAME:-mysql_container}"
db_user="${DB_USER:-root}"
db_password="${DB_PASSWORD:-your_password}"

# 定义要备份的数据库列表
databases=("database1" "database2" "database3")

# 定义备份文件保存路径
backup_dir="${BACKUP_DIR:-/host/path/to/backup}"

# 创建备份文件保存目录
mkdir -p ${backup_dir}

# 获取当前时间作为备份文件名的一部分
timestamp=$(date +"%Y%m%d%H%M%S")

# 循环备份每个数据库
for db_name in "${databases[@]}"
do
    backup_file="${backup_dir}/${timestamp}_backup_${db_name}.sql"

    # 使用 Docker 执行 mysqldump 命令备份数据库,确保密码不会被泄露
    docker exec ${container_name} sh -c "mysqldump -u ${db_user} -p${db_password} ${db_name}" > ${backup_file}

    if [ $? -eq 0 ]; then
        echo "数据库 ${db_name} 备份成功!备份文件路径:${backup_file}"
    else
        echo "数据库 ${db_name} 备份失败!"
    fi
done

执行结果如下:
在这里插入图片描述
在这里插入图片描述

相关推荐

  1. 使用脚本定时备份MySql数据库文件

    2024-05-15 15:06:20       33 阅读
  2. xbackup 备份MySQL数据库脚本

    2024-05-15 15:06:20       19 阅读
  3. 导出docker MySQL数据库写一个shell 脚本

    2024-05-15 15:06:20       24 阅读
  4. docker启动mysql并映射数据目录、含备份脚本

    2024-05-15 15:06:20       42 阅读
  5. MySQL、Oracle、PostgreSQL 数据库备份 Shell 脚本

    2024-05-15 15:06:20       26 阅读
  6. MySQL自动备份脚本

    2024-05-15 15:06:20       41 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-05-15 15:06:20       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-05-15 15:06:20       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-05-15 15:06:20       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-05-15 15:06:20       20 阅读

热门阅读

  1. Linux基础知识面试题

    2024-05-15 15:06:20       8 阅读
  2. Auto.js 开发入门

    2024-05-15 15:06:20       12 阅读
  3. 数据库面试题(MySQL、Oracle)

    2024-05-15 15:06:20       10 阅读
  4. C++多态

    C++多态

    2024-05-15 15:06:20      10 阅读
  5. Python自动化测试实战:深入Page Object模式

    2024-05-15 15:06:20       14 阅读
  6. IT行业现状与未来趋势:洞察变革的浪潮

    2024-05-15 15:06:20       10 阅读
  7. 各种距离相似度量及计算

    2024-05-15 15:06:20       11 阅读