【脚本】使用脚本备份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[@]}"
dobackup_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 ]; thenecho "数据库 ${db_name} 备份成功!备份文件路径:${backup_file}"elseecho "数据库 ${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[@]}"
dobackup_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 ]; thenecho "数据库 ${db_name} 备份成功!备份文件路径:${backup_file}"elseecho "数据库 ${db_name} 备份失败!"fi
done

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Outlook的IMAP服务器怎么填写?填写步骤?

Outlook的IMAP服务器如何使用?服务器地址怎么查找? 当我们在Outlook中设置新的电子邮件账户时,经常会遇到一个问题:Outlook的IMAP服务器怎么填写呢?接下来,AokSend将详细解答这个问题,并帮助大…

400元已到账,成交从认真开始

昨天发了一个值班的需求,收到了很多好友的响应,这里非常感谢关注创业程序员卡酷的老朋友、新朋友。今天分享一下:拓展、合作、成交 现在不管是IT行业还是其他行业,大环境可谓一片惨淡,35乃至30找不到工作的失业人员一抓…

深度论证-高速走线控制100欧姆阻抗一定是最好的选择吗?

高速先生成员--黄刚 对于高速差分信号到底需要控制多少欧姆的阻抗,高速先生相信大部分工程师首先都会看下例如信号的协议文档或者芯片的文档,看看里面有没有推荐的控制阻抗值。例如像PCIE信号,在4.0之后的阻抗会明确要求按照85欧姆来控制&…

4.Jmeter阶梯加压Stepping Thread Group

1. 先去Jmeter下载地址下载PluginsManager,放置在Jmeter的lib/ext 目录下 ,重启Jmeter 2. 在插件管理器查找并安装jpgc - Standard Set,重启Jmeter 3.右键测试计划->添加->Threads(Users)->jpgc - Stepping Thread Group 然后设置阶梯加压参数…

贷款没有逾期,征信没问题,为什么大数据信用评分低呢?

大数据信用在金融贷前风控越来越重要,这让不少人开始关心自己的大数据信用了,其中就有不少人有疑问,那就是自己网贷没有逾期,征信记录也还可以,为什么大数据信用评分低呢?这个问题也是不少人都想知道的,小…

鸿蒙开发之跨设备文件访问

分布式文件系统为应用提供了跨设备文件访问的能力,开发者在多个设备安装同一应用时,通过基础文件接口,可跨设备读写其他设备该应用分布式文件路径(/data/storage/el2/distributedfiles/)下的文件。 例如:多…

软件测试之【软件测试初级工程师技能点全解】

读者大大们好呀!!!☀️☀️☀️ 🔥 欢迎来到我的博客 👀期待大大的关注哦❗️❗️❗️ 🚀欢迎收看我的主页文章➡️寻至善的主页 文章目录 🔥前言🚀初级测试工程师技能点👉测试理论基…

Shell脚本之数组

数组 数组中可以存放多个值(bash 只支持一维数组)数组元素的索引从0开始数组在括号内指定数组的值,每个值仅能用空格分割 其中:30为索引0 20为索引1 10为索引2 60为索引3 以此类推,不过注意索引是从0开始的 如果数组中…

vue布局设置——使用 el-drawer 打造个性化 Admin 后台布局设置

在前端开发中,我们常常需要为 admin 后台构建灵活且个性化的布局设置。今天,我要分享的是如何利用 el-drawer 来实现这样一个有趣的功能。 首先,我们来看一下主要的设置参数: 1. theme: 用于定义主题,可以根据需求切换…

【已解决】attributeerror: ‘FreeTypeFont‘ object has no attribute ‘getsize‘

😎 作者介绍:我是程序员行者孙,一个热爱分享技术的制能工人。计算机本硕,人工制能研究生。公众号:AI Sun,视频号:AI-行者Sun 🎈 本文专栏:本文收录于《AI实战中的各种bug…

ctfshow web入门 phpCVE web312web314

web311 web312 IMAP协议(因特网消息访问协议)它的主要作用是邮件客户端可以通过这种协议从邮件服务器上获取邮件的信息,下载邮件等。它运行在TCP/IP协议之上,使用的端口是143,在php中调用的是imap_open函数来实现功能…

学习java

在实验室看见这本书,无聊看了下,写出了第一个java代码 成功下载了eclipse并且汉化。 写了自己的第一个java程序: package ttttt;public class ttttt {public static void main(String[] args) {System.out.println("hello world")…

Unreal自定义字体中,缺少字怎么办,有没有字表?

关键词:自定义字体,字表,编码,UTF-8,4E00-9FFF,4E00-9FA5,字符查重,字符唯一, 问题: 游戏中经常要自定义字体, 自定义字体往往要做离线字库 offline fonts 离线字库 离不开字符表。…

调味品企业的销量增长秘诀:五丰黎红引领大厨革新之路

随着时代的发展和消费升级,调味品行业的竞争愈发激烈,在此大环境之下,企业需要不断寻找创新的突破点来实现销量的增长。众所周知,调味品行业的销售渠道主要有餐饮、家庭消费和食品加工,按销售额的占比约为6&#xff1a…

[JAVASE] 类和对象(二)(续篇)

目录 一. static 修饰成员方法 1.1 基本使用 1.2 注意事项 (重点) 1.2.1 1.2.1 二. 代码块 2.1 代码块的分类及使用 2.1.1 静态代码块 2.1.2 实例代码块 2.1.3 普通代码块 2.2 代码块的执行顺序 三. 对象的打印 3.1 打印对象的引用 3.2 重写 toString 方法 四. 总结 一…

idea上如何新建git分支

当前项目在dev分支,如果想在新分支上开发代码,如何新建一个分支呢?5秒搞定~ 1、工具类选择git,点击New Branch 或者右下角点击git分支,再点击New Branch 2、在弹出的Create New Branch弹窗中,输入你的新分支…

el-table组件选中后使用toggleRowSelection无法取消已选中的数据——bug记录-骚操作解决

先说本文重点解决的问题: 存在的问题:当右侧已选中的数据中,删除了左侧其他页面的数据,但是左侧数据切换到其他页面后,左侧还保留选中的状态。 最近在写后台管理系统的时候,遇到一个需求: 左…

linux性能监控之lsof

lsof:list open files,显示所有打开的文件以及进程信息,我们通常用来检查特定的文件被哪些进程打开 [rootk8s-master ~]# lsof --help lsof: illegal option character: - lsof: -e not followed by a file system path: "lp" lso…

网络工程师----第二十七天

计算机基 第四章:网络层 网络层提供服务的特点:网络层向上只提供简单的、无连接的、尽最大努力交付的数据报服务,不保证可靠通信。 网际协议IP: *地址解析协议ARP(Address Resolution Protocol) *网际控制报文协议ICMP(Inter…

长图拼接技巧大揭秘:轻松实现横向拼接,一键批量处理方法

在数字化时代,我们经常会遇到需要将多张图片拼接成一张长图的情况,无论是用于制作海报、展示报告,还是制作社交媒体上的长图故事,掌握长图拼接的技巧都显得尤为重要。本文将为大家揭秘长图拼接的实用技巧,并介绍办公提…