【脚本】使用脚本备份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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/628208.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

交换机组网最常见的8大故障及解决方式

有朋友多次提到网络故障,其中在交换机组网时常见的故障比较多,为了便于大家排除这些故障,在此介绍一些常见的典型故障案例及处理思路。 故障1:交换机刚加电时网络无法通信 【故障现象】 交换机刚刚开启的时候无法连接至其他网络…

摸鱼大数据——Linux搭建大数据环境(安装zooKeeper和zookeeper shell命令)五

安装zookeeper软件 1.上传软件 使用CRT等客户端远程上传 zookeeper-3.4.6.tar.gz 文件到/export/software目录下 2.解压软件 [rootnode1 ~]# cd /export/software/ [rootnode1 software]# tar -xzvf zookeeper-3.4.6.tar.gz -C /export/server/ [rootnode1 software]# cd /ex…

用友GRP-U8 userInfoWeb SQL注入致RCE漏洞复现 (XVE-2024-10539)

0x01 产品简介 用友GRP-U8R10行政事业内控管理软件是用友公司专注于国家电子政务事业,基于云计算技术所推出的新一代产品,是我国行政事业财务领域最专业的政府财务管理软件。 0x02 漏洞概述 用友GRP-U8R10行政事业内控管理软件 userInfoWeb接口处存在SQL注入漏洞,未授权的…

自由职业是种怎样的体验?普通人如何成为一名自由职业者?

自由职业在哪都能办公自由职业在哪都要办公。 放弃幻想,没有不辛苦的工作,5年经验后端开发程序员,已经从事自由职业1年半,今天就来客观分享一下自由职业的利与弊。 时间自由,减少中间商赚差价 自由职业最让人羡慕的就…

电机完美控制的感觉如何【应用案例】

当电机控制技术成为人体的一部分时,对控制系统的组件尺寸和可靠性要求将极大提高。得益于集成式FOC控制系统组件,第一款具有两个活动关节的义肢得以在短时间内完成—— 赶上在苏黎世举办的全球半机械人奥运会(Cybathlon)。 失去肢体显然会对一个人的生活…

GPT4o速测:约0.5秒延迟的多模态能力

文章目录 1. 测评2. IntroReference 没有剪辑,约0.5秒延迟的多模态能力。 1. 测评 推理速度异常快,比之前快了大概两三倍,对产品端来说是个很好的事情,想用gpt4级别性能终于可以少讨论几句时延影响用户体验了模型指令遵从能力变强…

GPT3.5、GPT4、GPT4o的性能对比

理论总结 随着版本的升级,模型在参数数量、语言理解能力、生成文本质量、多模态能力、推理能力等方面均有显著提升。GPT-4.0作为最新改进版,提供了最先进的功能和性能。 实际对比 1.1.GPT3.5 1.2.GPT4 1.3.GPT4o 在语义理解上,无差别。 下面测试下代码能力。 测试问题 我…

电脑的录屏功能在哪?一篇文章教你快速定位

“电脑录屏功能在哪里呀?因为需要录制一些教学视频,急需用到电脑的录屏功能。我已经在电脑上翻箱倒柜地找了好几个小时,可还是没有找到。时间紧迫,这个任务对我来说非常重要,我现在感到非常焦虑,希望大家帮…

YOLOv8独家改进:逐元素乘法(star operation)二次创新 | 微软新作StarNet:超强轻量级Backbone CVPR 2024

💡💡💡创新点:star operation(元素乘法)在无需加宽网络下,将输入映射到高维非线性特征空间的能力,逐元素乘法(star operation)在性能上始终优于求和,基于star operation块做二次创新 💡💡💡如何跟YOLOv8结合:替代YOLOv8的C2f,结构图如下 收录 YOLOv8…

压力给到 Google,OpenAI 发布 GPT-4o 来了

北京时间5月14日凌晨1点,OpenAI 开启了今年的第一次直播,根据官方消息,这次旨在演示 ChatGPT 和 GPT-4 的升级内容。在早些时候 Sam Altman 在 X 上已经明确,「我们一直在努力开发一些我们认为人们会喜欢的新东西,对我…

炫富神器,简单无脑粘贴复制,闷声发财,当天见收益,无上限封顶

项目主打简单、暴力、易操作、可复制,单人可做、不靠关系走门路、不重投资、可复制放大! 今天给大家带来的这个项目,有点暴力,请先做好心理准备!谨慎观看!! 这个项目原理是利用软件生成炫富视频…

数据结构——队列(链表实现)

一、队列的特点 先进先出 二、队列的代码 typedef int QDataType;// 链式结构:表示队列 typedef struct QListNode {struct QListNode* next;QDataType data; }QNode;// 队列的结构 typedef struct Queue {QNode* front; //指向队列的第一个结点QNode* rear;//指…

基于uniapp+vue3+ts开发微信小程序项目实战

🚀 作者 :“二当家-小D” 🚀 博主简介:⭐前荔枝FM架构师、阿里资深工程师||曾任职于阿里巴巴担任多个项目负责人,8年开发架构经验,精通java,擅长分布式高并发架构,自动化压力测试,微服务容器化k…

香港电讯高效网络,助力新消费品牌抓住拓展香港市场新风口

自今年初香港与内地全面恢复通关,两地同胞跨境消费热潮持续升温。港人“北上”消费掀起风潮的同时,香港市场也成为内地新消费品牌拓展的热门目标。从糕点、茶饮、连锁餐饮到服饰,越来越多内地品牌进驻香港。新消费品牌要想在香港开设门店&…

气膜建筑会漏气吗—轻空间

气膜建筑作为一种创新的建筑形式,其主要结构依靠充气系统提供源源不断的风力,以维持内部气压,从而支撑起整个膜体,抵御外部的风雪荷载。然而,气膜建筑能否保持完全的密封性,是否会漏气,是许多用…

python批量生成验证码,python生成验证码

欢迎关注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~ 目录 一.前言 二.代码 三.使用 四.总结 一.前言 验证码(CAPTCHA)是“Completely Automated Public Turing test to tell Computers and Human

国标GB28181协议EasyCVR视频汇聚平台获取设备录像仅展示部分片段的原因排查

国标GB28181协议EasyCVR安防平台可以提供实时远程视频监控、视频录像、录像回放与存储、告警、语音对讲、云台控制、平台级联、磁盘阵列存储、视频集中存储、云存储等丰富的视频能力,平台支持7*24小时实时高清视频监控,能同时播放多路监控视频流&#xf…

抖店曝光率高,转化低,不知道怎么提升转化率?试试这四个方法

大家好,我是醒醒团队电商花花。 我们现在做抖音小店的商家或多或少都会遇到不出单,转化低的各种问题。 明明店铺的曝光不低,访客也不少,就是没转化。 下面我根据我们做店的经验,给大家分享一些问题所在,…

从零开始成为网络安全工程师:提高竞争力的秘诀

在当今数字化和互联网化的时代,网络安全工程师的职责越来越重要。然而,网络安全行业发展迅速,竞争也越来越激烈。要成为一名有竞争力的网络安全工程师,需要有一定的技能和经验,同时要不断提升自己的能力。下面是坤哥结…

全国最新行政区划数据,包括省、市、区、街道四个级别(2024年5月15日-来源与腾讯地图)

本数据集涵盖了中国全国范围内的行政区划信息,包括省、市、区、街道四个级别,共计42387条记录。数据采用Excel格式存储,可轻松导入数据库进行使用。 每条记录包含以下关键信息: 行政区域编码:每个行政区域都有唯一的…