shell脚本备份MySQL数据库和库下表
目录
注意:
一.脚本内容
二.执行效果
三.创建定时任务
注意:
- 以下为对MySQL5.7.42版本数据库备份shell脚本参考
- 运行备份的机器请确认mysqldump版本>5.7,否则备份参数--set-gtid-purged=OFF无效,考虑到一般数据库节点和备份节点不为同一节点,以下链接为mysql5.7.43的rpm安装包,解压后"yum localinstall -y mysql-community* 即可"
通过网盘分享的文件:mysql-5.7.43-1.el7.x86_64.rpm-bundle.tar
链接: https://pan.baidu.com/s/1C1dK_zeS0-p7ePih1ff4tg?pwd=cer9 提取码: cer9
- 该脚本目前是对于整库、库下各表都做了备份,若不需要对各表进行备份,去除关于备表的for循环即可。
一.脚本内容
#!/bin/bash
# 定义连接mysql的用户、密码、地址、端口
mysql_user="root"
mysql_pass="SLBmysql2025"
mysql_host="192.168.2.199"
mysql_port="20307"
# 定义排除数据库变量
exdbname='information_schema|performance_schema|sys|mysql'
date="$(date +"%Y-%m-%d")"
# 定义备份路径变量
bak_path="/data/mysql/back"
# 日志存放位置
log_file="$bak_path/$date/backup.log"
# 定义日志保留天数
retain_days=7
# 定义备份参数
dump_opts='--set-gtid-purged=OFF --single-transaction --no-autocommit'
# 检查备份路径是否存在,不存在则创建
if [ ! -d "$bak_path" ]; thenmkdir -p "$bak_path"
fi
# 获取数据库列表,排除指定数据库
#db_list=$(mysql -u$mysql_user -p$mysql_pass -h$mysql_host -P$mysql_port -e 'SHOW DATABASES;' 2>/dev/null | sed '1d' | grep -Ev "^($exdbname)$")
db_list=$(mysql -u$mysql_user -p$mysql_pass -h$mysql_host -P$mysql_port -Bse 'SHOW DATABASES;' 2>/dev/null | grep -Ev "^($exdbname)$")
# 检查是否获取到数据库列表
if [ -z "$db_list" ]; thenecho "未获取到有效的数据库列表,请检查 MySQL 连接和权限。" > $log_fileexit 1
fi
# 对每个数据库进行操作
for db in $db_list; do# 创建数据库对应的备份目录db_backup_dir="$bak_path/$date/$db"SIZE=$(mysql -u$mysql_user -p$mysql_pass -h$mysql_host -P$mysql_port --silent --skip-column-names -e "SELECT ROUND(SUM(data_length) / 1024 / 1024, 0) FROM information_schema.TABLES WHERE table_schema=\"$db\";")if [ ! -d "$db_backup_dir" ]; thenmkdir -p "$db_backup_dir"fi# 备份整个数据库mysqldump -u$mysql_user -p$mysql_pass -h$mysql_host -P$mysql_port $dump_opts -B "$db" 2>/dev/null | gzip > "$db_backup_dir/${db}_$(date +%F).sql.gz"if [ $? -ne 0 ]; thenecho "备份数据库 $db 失败。" >> $log_fileelseecho "数据库 $db 备份成功,存放路径 $db_backup_dir/${db}_$(date +%F).sql.gz,大小为 $SIZE M" >> $log_filefi# 获取数据库中的表列表tb_list=$(mysql -u$mysql_user -p$mysql_pass -h$mysql_host -P$mysql_port -N -e "SHOW TABLES FROM $db" 2>/dev/null)# 检查是否获取到表列表if [ -z "$tb_list" ]; thenecho "未获取到数据库 $db 中的表列表。" >> $log_filecontinuefi# 对每个表进行操作for tb in $tb_list; do# 备份单个表mysqldump -u$mysql_user -p$mysql_pass -h$mysql_host -P$mysql_port $dump_opts "$db" "$tb" 2>/dev/null | gzip > "$db_backup_dir/${db}_${tb}_$(date +%F).sql.gz"if [ $? -ne 0 ]; thenecho "备份表 $db.$tb 失败。" >> $log_fileelseecho "表 $db.$tb 备份成功,存放路径 $db_backup_dir/${db}_${tb}_$(date +%F).sql.gz" >> $log_filefidone
donefind $bak_path -mtime +$retain_days -exec rm -f {} \;
二.执行效果
[root@master01 mysql]# bash sh/backup.sh
mysql: [Warning] Using a password on the command line interface can be insecure.
mysql: [Warning] Using a password on the command line interface can be insecure.
[root@master01 mysql]# ll
total 12
drwxr-xr-x 3 root root 24 Feb 17 22:19 back
drwxr-xr-x 7 polkitd root 4096 Feb 17 22:15 data
-rw-r--r-- 1 root root 1802 Feb 16 18:18 my.cnf
-rw-r--r-- 1 root root 242 Feb 16 18:18 mysql.txt
drwxr-xr-x 2 root root 23 Feb 17 22:19 sh
[root@master01 mysql]# cd back/2025-02-17/
[root@master01 2025-02-17]# ll
total 4
-rw-r--r-- 1 root root 436 Feb 17 22:19 backup.log
drwxr-xr-x 2 root root 73 Feb 17 22:19 slb
drwxr-xr-x 2 root root 76 Feb 17 22:19 test
[root@master01 2025-02-17]# du -sh ./*
4.0K ./backup.log
24K ./slb
24K ./test
[root@master01 2025-02-17]# cat backup.log
数据库 slb 备份成功,存放路径 /data/mysql/back/2025-02-17/slb/slb_2025-02-17.sql.gz,大小为 0 M
表 slb.students 备份成功,存放路径 /data/mysql/back/2025-02-17/slb/slb_students_2025-02-17.sql.gz
数据库 test 备份成功,存放路径 /data/mysql/back/2025-02-17/test/test_2025-02-17.sql.gz,大小为 0 M
表 test.employees 备份成功,存放路径 /data/mysql/back/2025-02-17/test/test_employees_2025-02-17.sql.gz
[root@master01 2025-02-17]# pwd
/data/mysql/back/2025-02-17
三.创建定时任务
[root@master01 sh]# tail -1 /etc/crontab
0 2 * * * root /usr/bin/bash /data/mysql/sh/mysql_backup.sh相关文章:
shell脚本备份MySQL数据库和库下表
目录 注意: 一.脚本内容 二.执行效果 三.创建定时任务 注意: 以下为对MySQL5.7.42版本数据库备份shell脚本参考运行备份的机器请确认mysqldump版本>5.7,否则备份参数--set-gtid-purgedOFF无效,考虑到一般数据库节点和备份…...
java处理pgsql的text[]类型数据问题
背景 公司要求使用磐维数据库,于是去了解了这个是基于PostgreSQL构建的,在使用时有场景一条图片数据中可以投放到不同的页面,由于简化设计就放在数组中,于是使用了text[]类型存储;表结构 #这是一个简化版表结构&…...
MongoDB 架构设计:深入解析核心组件与工作原理
MongoDB 架构设计:深入解析核心组件与工作原理 MongoDB 作为一个高性能、易扩展的 NoSQL 数据库,其优秀的架构设计是其成功的关键。本文将深入解析 MongoDB 的架构设计,详细讲解其核心组件和工作原理,帮助您更好地理解和使用 Mon…...
【PostgreSQL】PG在windows下的安装
一、准备 通过官网下载安装文件,官方下载路径如下: https://www.postgresql.org/download/windows/ 二、安装 双击postgresql-17.3-1-windows-x64.exe文件,启动安装,进入安装步骤,点击Next 选择PG安装路径ÿ…...
掌握SQL多表连接查询_轻松处理复杂数据关系
1. 引言 1.1 数据库中的多表关系概述 在实际应用中,数据库通常由多个表组成,每个表存储不同类型的数据。例如,在一个电子商务系统中,可能会有用户表、订单表、产品表等。这些表之间存在关联关系,通过多表连接查询可以…...
MVC模式和MVVM模式
目录 一、MVC模式和MVVM模式 1. MVC模式 2. MVVM 模式 3.在Qt中的应用示例 4.总结 二、MVC与MVVM模式的共同点和区别 1.共同点 2.区别 3.交互流程 4.总结 MVC(Model-View-Controller)和MVVM(Model-View-ViewModel)是两种…...
Macos机器hosts文件便捷修改工具——SwitchHosts
文章目录 SwitchHosts软件下载地址操作添加方案切换方案管理方案快捷键 检测 SwitchHosts SwitchHosts 是一款 Mac 平台上的免费软件,它可以方便地管理和切换 hosts 文件,支持多种 hosts 文件格式。 软件下载地址 SwitchHosts 操作 添加方案 添加 …...
mysqld_exporter的搭建
1、创建/data/apps目录,并且下载mysql_exporte mkdir -p /data/apps cd /data/apps wget https://githubfast.com/prometheus/mysqld_exporter/releases/download/v0.12.1/mysqld_exporter-0.12.1.linux-amd64.tar.gz 或者 wget https://github.com/promethe…...
CentOS上安装WordPress
在CentOS上安装WordPress是一个相对直接的过程,可以通过多种方法完成,包括使用LAMP(Linux, Apache, MySQL, PHP)栈或使用更现代的LEMP(Linux, Nginx, MySQL, PHP)栈。 我选择的是(Linux, Nginx…...
【数据结构】 栈和队列
在计算机科学的世界里,数据结构是构建高效算法的基础。栈(Stack)和队列(Queue)作为两种基本且重要的数据结构,在软件开发、算法设计等众多领域都有着广泛的应用。今天,我们就来深入探讨一下栈和…...
微服务限流策略与性能优化全解析
一、服务瓶颈评估实例 1.1 背景介绍 本文我用我工作中实际的一个电商营销中台系统的订单服务来阐述。此微服务数据库采用 MySQL,配置为 8 核 32G。订单服务部署于一组服务器集群,考虑到高可用性,至少配置 3 个节点,每个节点服务…...
Windows环境搭建ES集群
搭建步骤 下载安装包 下载链接:https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.17.27-windows-x86_64.zip 解压 解压并复制出3份 es-node1配置 config/elasticsearch.yml cluster.name: xixi-es-win node.name: node-1 path.data: D:\\wor…...
qt中实现QListWidget列表
FR:徐海涛(hunkxu)...
大模型参数规模解析:32B中的“B“代表什么?如何影响AI性能?
以下是优化后的技术笔记整理,包含关键知识点解析和行业应用案例: 大模型参数规模解析:32B中的"B"代表什么?如何影响AI性能? 一、参数单位解读 B Billion(十亿):在AI模…...
Docker+Ollama+WebUI+AnythingLLM,构建企业本地AI大模型
文章目录 概要Ollama部署WebUI部署AnythingLLM部署Docker-Compose部署管理所有容器小结参考文章 概要 Ollama 是一个强大的大模型提供者,它通过开源的方式,为开发者和企业提供了先进的大型语言模型(LLM)。这些模型拥有处理和生成…...
【大模型】DeepSeek 高级提示词技巧使用详解
目录 一、前言 二、DeepSeek 通用提示词技巧 2.1 DeepSeek 通用提示词技巧总结 三、DeepSeek 进阶使用技巧 3.1 DeepSeek一个特定角色的人设 3.1.1 为DeepSeek设置角色操作案例一 3.1.2 为DeepSeek设置角色操作案例二 3.2 DeepSeek开放人设升级 3.2.1 特殊的人设&#…...
【玩转全栈】----Django基本配置和介绍
目录 Django基本介绍: Django基本配置: 安装Django 创建项目 创建app 注册app Django配置路由URL Django创建视图 启动项目 Django基本介绍: Django是一个开源的、基于Python的高级Web框架,旨在以快速、简洁的方式构建高质量的We…...
[Unity角色控制专题] (借助ai)详细解析官方第三人称控制器
首先模板链接在这里,你可以直接下载并导入unity即可查看官方为开发者写好一套控制器 本文的ai工具用到了豆包,其灵活程度很高,总结能力也强过我太多 因此大量使用,不喜勿喷 Starter Assets - ThirdPerson | Updates in new Charac…...
安装 Docker Desktop 修改默认安装目录到指定目录
Docker Desktop安装目录设置 Docker Desktop 默认安装位置 (C:\Program Files\Docker\Docker) 是这个 ,导致系统盘占用过大,大概2G ; 那么如何安装到其他磁盘呢? 根据docker desktop 官网 Docker Desktop install 我们可以看到&a…...
渗透测试--文件包含漏洞
文件包含漏洞 前言 《Web安全实战》系列集合了WEB类常见的各种漏洞,笔者根据自己在Web安全领域中学习和工作的经验,对漏洞原理和漏洞利用面进行了总结分析,致力于漏洞准确性、丰富性,希望对WEB安全工作者、WEB安全学习者能有所帮助…...
【ISO 14229-1:2023 UDS诊断全量测试用例清单系列:第十一节】
ISO 14229-1:2023 UDS诊断服务测试用例全解析(RequestTransferExit0x37服务) 作者:车端域控测试工程师 更新日期:2025年02月13日 关键词:UDS协议、0x37服务、传输终止、NRC验证、ISO 14229-1:2023 一、服务功能概述 0…...
虚拟环境测试部署应用
一、作用 虚拟环境(env)在计算机领域,特别是在软件开发和测试中扮演着重要角色。它主要用于创建一个隔离的环境,使得开发者可以在不影响系统其余部分的情况下安装、配置和运行软件项目。以下是虚拟环境的一些主要作用: 1、依赖管理 不同的项目可能需要不同版本的库或框…...
【线性代数】2矩阵
1.矩阵的运算 1.1.定义 矩阵行列式数表数行数和列数可以不相等行数和列数必须相等1.2.加法与数乘 矩阵的数乘:所有元素都乘这个数 矩阵的加法:对应位置处元素相加 🦊已知,求 1.3.乘法 矩阵乘法三步法 ①能不能乘:内定乘 ②乘完是何类型:外定型 ③中的元素是什么:左…...
前端为什么要使用new Promise包裹一个函数
在前端开发中,使用 new Promise 包裹一个函数主要是为了将原本不支持 Promise 规范的操作转化为支持 Promise 规范的操作,从而可以更好地处理异步操作,提升代码的可读性和可维护性。下面详细介绍这么做的常见原因和应用场景: 1. …...
深度学习在天文观测中的应用:解锁宇宙的奥秘
深度学习在天文观测中的应用:解锁宇宙的奥秘 引言 宇宙是无尽的,天文学家通过观测天体来揭示宇宙的奥秘。随着现代天文设备技术的进步,我们现在可以通过 射电望远镜、空间望远镜 和 地面望远镜 获取大量的天文数据。然而,这些数据的规模和复杂性让传统的手工分析方法变得…...
SaaS 平台开发要点
如何在 SaaS 平台的前端开发中,编写高性能、高质量且高度通用化的 Vue 组件 一、组件设计原则 单一职责原则:每个组件只负责一个核心功能受控/非受控模式:同时支持 v-model 和自主状态管理组合式 API:使用 Composition API 提升逻辑复用性可访问性:遵循 WAI-ARIA 规范Typ…...
python从入门到进去
python从入门到进去 第一章、软件和工具的安装一、安装 python 解释器二、安装 pycharm 第二章、初识 python一、注释可分三种二、打印输入语句三、变量1、基本数据类型1.1、整数数据类型 int1.2、浮点数数据类型 float1.3、布尔数据类型 boolean1.4、字符串数据类型 string 2、…...
DeepSeek与医院电子病历的深度融合路径:本地化和上云差异化分析
一、引言 1.1 研究背景与意义 在医疗信息化快速发展的当下,电子病历系统已成为医院信息管理的核心构成。电子病历(EMR)系统,是指医务人员在医疗活动过程中,使用医疗机构信息系统生成的文字、符号、图标、图形、数据、影像等数字化信息,并能实现存储、管理、传输和重现的…...
苍穹外卖day4 redis相关简单知识 店铺营业状态设置
内存存储 键值对 key-value 一般用于处理突发性大量请求数据操作(暂时浅显理解) 读写速度极快,常用于缓存数据,减少对数据库的访问压力,提高系统性能。例如,可以缓存用户会话、商品信息、页面数据 设置默…...
pycharm社区版有个window和arm64版本,到底下载哪一个?还有pycharm官网
首先pycharm官网是这一个。我是在2025年2月16日9:57进入的网站。如果网站还没有更新的话,那么就往下滑一下找到 community Edition,这个就是社区版了免费的。PyCharm:适用于数据科学和 Web 开发的 Python IDE 适用于数据科学和 Web 开发的 Python IDE&am…...
