mysql 每日自动备份数据库
在 MySQL 中,你可以使用定时任务来每日自动备份数据库。通常,最常用的方法是使用操作系统的定时任务工具(如cron)来调度备份操作。以下是一些步骤来设置每日定时备份MySQL数据库:
-
创建备份脚本:首先,创建一个备份脚本,该脚本将执行MySQL备份操作。你可以使用mysqldump命令来执行备份。以下是一个简单的备份脚本示例(假设你已经设置了MySQL用户名和密码的环境变量):
#!/bin/bash# 定义 MySQL 用户名和密码 MYSQL_USER="your_username" MYSQL_PASSWORD="your_password"# 定义备份目录和文件名 backup_dir="/path/to/backup/directory" backup_file="$backup_dir/backup-$(date +\%Y\%m\%d).sql"# 使用 mysqldump 备份数据库 mysqldump --user=$MYSQL_USER --password=$MYSQL_PASSWORD --all-databases > $backup_file# 压缩备份文件 gzip $backup_file在这种情况下,你需要将 your_username 和 your_password 替换为实际的 MySQL 用户名和密码,并确保脚本文件中的用户名和密码是安全的(不要将它们硬编码在脚本中,或者确保脚本文件有适当的权限来保护这些敏感信息)。
无论你选择哪种方式,都要确保用户名和密码的安全性,以防止未经授权的访问。
-
设置脚本权限:在终端中运行以下命令,以确保备份脚本具有执行权限:
chmod +x your_backup_script.sh -
设置定时任务:使用操作系统的定时任务工具来创建一个每日备份任务。对于Linux系统,通常使用cron来实现。运行以下命令来编辑当前用户的cron表:
crontab -e然后,添加以下行来每天执行备份脚本(假设备份脚本叫做your_backup_script.sh,并且每天备份在凌晨2点进行):
0 2 * * * /path/to/your_backup_script.sh -
保存并退出:保存cron表达式的修改并退出编辑器。
现在,你已经设置了一个每日定时任务,它会在指定时间自动运行备份脚本,将MySQL数据库备份到指定目录。确保定期检查备份文件,以确保备份正在按计划运行并且没有问题。
注意:mysqldump 命令中的 --user 和 --password 参数只需要提供数据库的用户名和密码,而不需要指定数据库的地址。这是因为在大多数情况下,mysqldump 命令会默认连接到本地 MySQL 服务器(即 localhost)。
如果你的 MySQL 数据库位于不同的主机上,或者你希望备份不同主机上的数据库,那么你需要通过 --host 参数来指定数据库的地址。例如:
mysqldump --host=your_database_host --user=your_username --password=your_password --all-databases > $backup_file
又或者你的端口不是默认的3306,可以通过–port来制定端口。例如:
mysqldump --host=your_database_host --port=your_database_port --user=your_username --password=your_password --all-databases > $backup_file
完整脚本如下:
#!/bin/bash# MySQL数据库连接参数
DB_HOST="your_database_host"
DB_PORT="your_database_port"
DB_USER="your_username"
DB_PASSWORD="your_password"# 备份目录和文件名
backup_dir="/path/to/backup/directory"
backup_file="$backup_dir/backup-$(date +\%Y\%m\%d).sql"# 使用mysqldump备份数据库
mysqldump --host=$DB_HOST --port=$DB_PORT --user=$DB_USER --password=$DB_PASSWORD --all-databases > $backup_file# 检查备份是否成功
if [ $? -eq 0 ]; thenecho "数据库备份成功,文件保存在: $backup_file"
elseecho "数据库备份失败"
fi# 可选:压缩备份文件
gzip $backup_file
但还有种情况,如果你的 MySQL 服务器是运行在 Docker 容器中,备份操作会有一些差异。你需要在 Docker 环境中执行备份命令,以确保能够连接到容器内的 MySQL 服务器。以下是在 Docker 中备份 MySQL 数据库的一般步骤:
-
查找 MySQL 容器的名称或 ID:首先,你需要查找正在运行的 MySQL 容器的名称或 ID。你可以使用以下命令来列出正在运行的容器并查找 MySQL 容器:
docker ps查找包含 MySQL 服务的容器并记下其名称或 ID。
-
执行备份操作:使用以下命令在 MySQL 容器中执行备份操作。假设容器名称为 mysql-container:
docker exec mysql-container mysqldump -u your_username -pYourPassword --all-databases > /path/to/backup/directory/backup-$(date +\%Y\%m\%d).sql
完整脚本如下:
#!/bin/bash# 定义MySQL容器名称或ID
MYSQL_CONTAINER="mysql-container"# 定义MySQL数据库连接参数
MYSQL_USER="your_username"
MYSQL_PASSWORD="YourPassword"
MYSQL_HOST="localhost" # 如果MySQL容器在同一主机上,可以使用localhost# 定义备份目录
BACKUP_DIR="/path/to/backup/directory"# 获取当前日期作为备份文件名的一部分
CURRENT_DATE=$(date +\%Y\%m\%d)# 要备份的数据库列表,用空格分隔
DATABASES="database1 database2 database3"# 创建备份目录
mkdir -p $BACKUP_DIR# 循环备份每个数据库
for DB_NAME in $DATABASES
do# 生成备份文件名BACKUP_FILE="$BACKUP_DIR/${DB_NAME}_${CURRENT_DATE}.sql"# 使用mysqldump备份数据库到指定文件docker exec $MYSQL_CONTAINER mysqldump -h $MYSQL_HOST -u $MYSQL_USER -p$MYSQL_PASSWORD $DB_NAME > $BACKUP_FILE# 检查备份是否成功if [ $? -eq 0 ]; thenecho "数据库 $DB_NAME 备份成功,文件保存在: $BACKUP_FILE"# 压缩备份文件为ZIP格式zip "$BACKUP_FILE.zip" $BACKUP_FILErm $BACKUP_FILE # 删除原始SQL备份文件echo "备份文件已压缩为 $BACKUP_FILE.zip"elseecho "数据库 $DB_NAME 备份失败"fi
done
注意机器上有没有安装zip命令,没有的话需要安装下
yum install zip
大致步骤就这些,可能运行的时候会报mysqldump 访问权限不足,或者用户操作数据库的权限不足等问题,这个自行解决哈
相关文章:
mysql 每日自动备份数据库
在 MySQL 中,你可以使用定时任务来每日自动备份数据库。通常,最常用的方法是使用操作系统的定时任务工具(如cron)来调度备份操作。以下是一些步骤来设置每日定时备份MySQL数据库: 创建备份脚本:首先&#x…...
【计算机网络】图解路由器(二)
本系列包含: 图解路由器(一)图解路由器(二) 图解路由器(二) 21、什么是静态路由?22、什么是动态路由?23、动态路由有哪些类型?24、什么是 RIP ?2…...
流媒体及直播相关知识
文章目录 前言一、流媒体1、基本概念2、流式传输3、流媒体技术原理4、流媒体传输模式5、H.264 流媒体传输系统框架 二、直播1、直播中使用的流媒体协议2、直播的模块划分3、视频直播流程①、推流到服务器②、服务器流分发 前言 本文主要讲解流媒体及其直播相关知识,…...
数据治理-数据资产估值
数据生命周期大多数阶段涉及成本。数据只有使用时才有价值,使用时数据还产生与风险相关的成本。因此,当使用数据的经济效益超过了上述成本时,就会显现其价值。 其他的度量价值的方式包括: 替换成本。数据替换或恢复的成本。包括组…...
点云从入门到精通技术详解100篇-机载 LiDAR 点云滤波及分类
目录 前言 国内外研究现状 点云滤波研究现状 点云分类研究现状...
【SLAM】 前端-视觉里程计之相对位姿估计
【SLAM】 前端-视觉里程计之相对位姿估计 1.相对位姿估计 在前端视觉里程计中,相对位姿估计是指通过视觉传感器(例如相机)捕捉的图像信息,来估计相机相对于先前位置的位姿(位置和姿态)变化。这种估计通常…...
git format-patch打补丁
git format-patch HEAD^ 这个命令会产生从倒数第二个提交 HEAD^ 到最后提交 HEAD 之间所有提交的差异,并生成一个包含这些差异的补丁文件。这是一个包含详细步骤的例子: 第一步,创建一个新的 git 仓库并进行一些提交。这些提交是我们稍后会生…...
大数据Flink(八十三):SQL语法的DML:With、SELECT WHERE、SELECT DISTINCT 子句
文章目录 SQL语法的DML:With、SELECT & WHERE、SELECT DISTINCT 子句 一、DML:With 子句...
C++:list
目录 List的模拟实现 List节点类 List链表结构 List迭代器类 结构 T& operator*(); T& operator->(); Self& operator(); Self operator(int); Self& operator--(); Self& operator--(int); bool operator!(const Self& l); bool oper…...
【C++】搜索二叉树底层实现
目录 一,概念 二,实现分析 1. 插入 (1.)非递归版本 (2.)递归版本 2. 打印搜索二叉树 3.查找函数 (1.)非递归版本 (2.)递归版本 4. 删除函数&#x…...
C8051F020 SMBus一直处于busy状态解决办法
当SMBus总线处于busy状态切且无法自动释放时,SMB0CN寄存器的第7位一直为 1,总线没有释放。 SMBus总线释放超时的一个纠错机制,它允许SMBus状态机在 SDA 和 SCL 信号线同为高电平超过 10个SMBus时钟源周期后判断总线为释放状态。 如果总线释放…...
Activiz 9.2 for Linux Crack
Activiz 9.2 在 C#、.Net 和 Unity 软件中为您的 3D 内容释放可视化工具包的强大功能。 ActiViz 允许您轻松地将 3D 可视化集成到您的应用程序中。 ActiViz 功能 用 C# 封装的 3D 可视化软件系统 允许在 .NET 环境中快速开发可投入生产的交互式3D 应用程序 支持窗口演示基础 (…...
数据结构 - 链表
线性表的链式存储结构 概念 将线性表 L (a0, a1, … , an-1)中各元素分布在存储器的不同存储块,成为结点,通过地址或指针建立元素之间的联系。 结点的 data 域存放数据元素 ai ,而 next 域是一个指针,指向 ai 的直接后继 ai1 …...
Android 12 Bluetooth源码分析蓝牙配对
本文主要是列出一些蓝牙配对重要的类和方法/函数,遇到相关问题时方便查找添加log排查。 蓝牙扫描列表页面:packages/apps/Settings/src/com/android/settings/bluetooth/DeviceListPreferenceFragment.java点击其中一个设备会调用:onPrefere…...
Python异步编程并发执行爬虫任务,用回调函数解析响应
一、问题:当发送API请求,读写数据库任务较重时,程序运行效率急剧下降。 异步技术是Python编程中对提升性能非常重要的一项技术。在实际应用,经常面临对外发送网络请求,调用外部接口,或者不断更新数据库或文…...
React组件化开发
1.组件的定义方式 函数组件Functional Component类组件Class Component 2.类组件 export class Profile extends Component {render() {console.log(this.context);return (<div>Profile</div>)} } 组件的名称是大写字符开头(无论类组件还是函数组件…...
LuatOS-SOC接口文档(air780E)--crypto - 加解密和hash函数
crypto.md5(str) 计算md5值 参数 传入值类型 解释 string 需要计算的字符串 返回值 返回值类型 解释 string 计算得出的md5值的hex字符串 例子 -- 计算字符串"abc"的md5 log.info("md5", crypto.md5("abc"))crypto.hmac_md5(str, k…...
自动化测试的定位及一些思考
大家对自动化的理解,首先是想到Web UI自动化,这就为什么我一说自动化,公司一般就会有很多人反对,因为自动化的成本实在太高了,其实自动化是分为三个层面的(UI层自动化、接口自动化、单元测试)&a…...
展会动态 | 迪捷软件邀您参加2023世界智能网联汽车大会
*9月18日之前注册的观众免收门票费* 由北京市人民政府、工业和信息化部、公安部、交通运输部和中国科学技术协会联合主办的2023世界智能网联汽车大会将于9月21日-24日在北京中国国际展览中心(顺义馆)举行。 论坛背景 本届展会以“聚智成势 协同向新——…...
jenkins自动化部署springboot、gitee项目
服务器需要安装jdk11、maven、gitee 1. jenkins安装 # yum源 sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat/jenkins.repo # 公钥 sudo rpm --import https://pkg.jenkins.io/redhat/jenkins.io-2023.key # 安装 yum install jenkins如果yum源报…...
Python爬虫实战:研究MechanicalSoup库相关技术
一、MechanicalSoup 库概述 1.1 库简介 MechanicalSoup 是一个 Python 库,专为自动化交互网站而设计。它结合了 requests 的 HTTP 请求能力和 BeautifulSoup 的 HTML 解析能力,提供了直观的 API,让我们可以像人类用户一样浏览网页、填写表单和提交请求。 1.2 主要功能特点…...
Linux 文件类型,目录与路径,文件与目录管理
文件类型 后面的字符表示文件类型标志 普通文件:-(纯文本文件,二进制文件,数据格式文件) 如文本文件、图片、程序文件等。 目录文件:d(directory) 用来存放其他文件或子目录。 设备…...
【位运算】消失的两个数字(hard)
消失的两个数字(hard) 题⽬描述:解法(位运算):Java 算法代码:更简便代码 题⽬链接:⾯试题 17.19. 消失的两个数字 题⽬描述: 给定⼀个数组,包含从 1 到 N 所有…...
【android bluetooth 框架分析 04】【bt-framework 层详解 1】【BluetoothProperties介绍】
1. BluetoothProperties介绍 libsysprop/srcs/android/sysprop/BluetoothProperties.sysprop BluetoothProperties.sysprop 是 Android AOSP 中的一种 系统属性定义文件(System Property Definition File),用于声明和管理 Bluetooth 模块相…...
Neo4j 集群管理:原理、技术与最佳实践深度解析
Neo4j 的集群技术是其企业级高可用性、可扩展性和容错能力的核心。通过深入分析官方文档,本文将系统阐述其集群管理的核心原理、关键技术、实用技巧和行业最佳实践。 Neo4j 的 Causal Clustering 架构提供了一个强大而灵活的基石,用于构建高可用、可扩展且一致的图数据库服务…...
LeetCode - 199. 二叉树的右视图
题目 199. 二叉树的右视图 - 力扣(LeetCode) 思路 右视图是指从树的右侧看,对于每一层,只能看到该层最右边的节点。实现思路是: 使用深度优先搜索(DFS)按照"根-右-左"的顺序遍历树记录每个节点的深度对于…...
短视频矩阵系统文案创作功能开发实践,定制化开发
在短视频行业迅猛发展的当下,企业和个人创作者为了扩大影响力、提升传播效果,纷纷采用短视频矩阵运营策略,同时管理多个平台、多个账号的内容发布。然而,频繁的文案创作需求让运营者疲于应对,如何高效产出高质量文案成…...
【Redis】笔记|第8节|大厂高并发缓存架构实战与优化
缓存架构 代码结构 代码详情 功能点: 多级缓存,先查本地缓存,再查Redis,最后才查数据库热点数据重建逻辑使用分布式锁,二次查询更新缓存采用读写锁提升性能采用Redis的发布订阅机制通知所有实例更新本地缓存适用读多…...
作为测试我们应该关注redis哪些方面
1、功能测试 数据结构操作:验证字符串、列表、哈希、集合和有序的基本操作是否正确 持久化:测试aof和aof持久化机制,确保数据在开启后正确恢复。 事务:检查事务的原子性和回滚机制。 发布订阅:确保消息正确传递。 2、性…...
springboot 日志类切面,接口成功记录日志,失败不记录
springboot 日志类切面,接口成功记录日志,失败不记录 自定义一个注解方法 import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target;/***…...
