Mysql数据备份 — mysqldump
一 备份类型
- 逻辑备份(mysqldump):
- 优点:
- 恢复简单,可以使用管道将他们输入到mysql。
- 与存储引擎无关,因为是从MySQL服务器中提取数据而生成的,所以消除了底层数据存储的不同。
- 有助于避免数据损坏。若磁盘驱动器有故障而要复制原始文件时,此时将得到一个损坏的备份。
- 缺点:
- 必须有数据库服务器完成逻辑工作,需要更多地cpu周期。
- 逻辑备份还原速度慢:需要MySQL加载和解释语句、转化存储格式、重建引擎。
- 物理备份(xtrabackup):
- 优点:
- 基于文件的物理备份。
- 容易跨平台、跨操作系统和MySQL版本。
- 恢复起来会更快(不需要执行任何的mysql语句,不需要构建索引,innoDB表无需完全缓存到内存)。
- 缺点:
- 文件大。
- 不总是可以跨平台、操作系统和MySQL版本。
- 其他备份方法:
- cp:直接复制数据库文件,备份速度快,恢复速度快,但功能较弱,适用于少量数据备份。
- lvm2快照:基于文件系统管理工具进行备份,备份速度快,恢复速度快,支持几乎热备,适用于中小型数据量的备份。
每种备份方法都有其适用的场景,选择哪种备份方法取决于你的具体需求和环境。
二 逻辑备份 - mysqldump
mysqldump命令及其参数:
- 基本语法:mysqldump -u username -p dbname table1 table2 … > BackupName.sql
- username:MySQL用户名
- dbname:数据库名称
- table1、table2:表名称,如果没有这些参数,将备份整个数据库
- BackupName.sql:备份文件的名称,文件名前面可以加上一个绝对路径- 恢复数据:mysql -u username -p dbname < /path/to/backup.sql
- username:MySQL用户名
- dbname:数据库名称
- /path/to/backup.sql:备份文件的路径
2.1 插入数据
-- 创建数据库 CREATE DATABASE db_default;-- 使用数据库 USE db_default;-- 创建表 CREATE TABLE db_one (姓名 VARCHAR(255),地址 VARCHAR(255) );-- 插入数据 INSERT INTO db_one (姓名, 地址) VALUES ('小明', '美国'), ('小美', '中国');
2.2 备份数据表
mysqldump -u root -p db_default db_one > /tmp/db_one_backup.sql
2.3 表级别恢复
mysql -u root -p db_default < /tmp/db_one_backup.sql
或则 进入数据库
use db_default; source /tmp/db_one_backup.sql;
2.4 库级别备份和还原
mysqldump -u root --databases db_default > /tmp/db_one_backup.sql -p
MariaDB [db_default]> DROP DATABASE db_default;
Query OK, 1 row affected (0.00 sec)mysql < ./db_one_backup.sql -p ##在shell 还原 数据库
MariaDB [(none)]> select * from db_default.db_one
-> ;
+--------+--------+
| 姓名 | 地址 |
+--------+--------+
| 小明 | 美国 |
| 小美 | 中国 |
2.5 全库备份
在MySQL中,如果想使用mysqldump使用全库级别备份,必须开启二进制日志!
常用选项:
-h, --host=主机: 指定连接到的MySQL服务器的主机名。
--databases 数据库1 [数据库2 ...]: 指定要备份的一个或多个数据库。
--all-databases: 备份MySQL服务器中的所有数据库。
--single-transaction: 在事务处理中运行
mysqldump
,以确保备份的数据是一致的。--lock-tables, -l: 在备份每个表之前对其进行锁定。在大型数据库上可能导致服务中断,推荐使用
--single-transaction
。--result-file=文件路径: 将输出重定向到指定的文件,而不是默认输出到标准输出。
高级用法:
--ignore-table=数据库.表: 指定要忽略备份的表,可以指定特定数据库中的特定表。
--skip-lock-tables: 不对所有表进行锁定,即不使用
--lock-tables
选项。--compress: 在传输数据时使用压缩。
--routines: 一起备份存储过程和函数。
--triggers: 一起备份触发器。
--events: 一起备份事件。
--add-drop-database: 在每个数据库创建语句之前添加
DROP DATABASE IF EXISTS
语句。--add-drop-table: 在每个表创建语句之前添加
DROP TABLE IF EXISTS
语句。
mysqldump -u 用户名 -p 密码 --all-databases > /路径/到/备份文件.sql
2.6 总结
1. mysqldump工具备份的是sql语句,备份不需要暂停服务
2. 使用备份文件恢复时需要保持数据库处于运行状态
3. 只能实现,全库,指定库,表级别的某时刻的备份,本身不能增量备份
4. 适合中小数据库
三 mysqldump + binlog 实现增量备份
mysqldump -u root -p --databases db_default --flush-logs --master-data > /tmp/all.sql ##全库备份
[root@master binlog]# ls mysql-bin.000001 mysql-bin.000002 mysql-bin.000003 mysql-bin.index [root@master binlog]# ls mysql-bin.000001 mysql-bin.000002 mysql-bin.000003 mysql-bin.000004 mysql-bin.index #此时已经刷新了一个新的binlog文件
3.1 对数据进行增删改操作
DELETE FROM db_default.db_one WHERE 姓名 = '小美'; INSERT INTO db_default.db_one (姓名, 地址) VALUES ('华为', '日本');
MariaDB [(none)]> select * from db_default.db_one
-> ;
+--------+--------+
| 姓名 | 地址 |
+--------+--------+
| 小明 | 美国 |
| 华为 | 日本 |
+--------+--------+
2 rows in set (0.00 sec)
3.2 模拟数据库故障后恢复
drop database db_default;
##备份最新或全部二进制文件
[root@master binlog]# ll 总用量 20 -rw-rw---- 1 mysql mysql 264 11月 9 13:06 mysql-bin.000001 -rw-rw---- 1 mysql mysql 3924 11月 10 10:25 mysql-bin.000002 -rw-rw---- 1 mysql mysql 288 11月 10 10:26 mysql-bin.000003 -rw-rw---- 1 mysql mysql 790 11月 10 10:30 mysql-bin.000004 -rw-rw---- 1 mysql mysql 176 11月 10 10:26 mysql-bin.index [root@master binlog]# cp mysql-bin.000004 /tmp
## 库恢复 (只是恢复了备份时候的数据 并没有恢复全部)
MariaDB [(none)]> source /tmp/all.sqlMariaDB [db_default]> select * from db_default.db_one-> ; +--------+--------+ | 姓名 | 地址 | +--------+--------+ | 小明 | 美国 | | 小美 | 中国 | +--------+--------+ 2 rows in set (0.00 sec)
读取二进制文件
mysqlbinlog --no-defaults --base64-output=never ./mysql-bin.000004
##查找事故临界点位置 如drop databases db_default
#231110 09:34:30 server id 1 end_log_pos 692 Xid = 207
# at 314
SET TIMESTAMP=1699583370/*!*/;
DELETE FROM db_default.db_one WHERE 姓名 = '小美'
/*!*/;
# at 527#231110 10:29:30 server id 1 end_log_pos 692 Xid = 207
SET TIMESTAMP=1699583370/*!*/;
INSERT INTO db_default.db_one (姓名, 地址) VALUES ('华为', '日本')# at 692
SET TIMESTAMP=1699583448/*!*/;
drop database db_default
恢复数据(这边是时间 也可以填写 at后面的数字)
mysqlbinlog --no-defaults --base64-output=never --start-datetime="2023-11-10 10:00:00" --stop-datetime="2023-11-10 10:30:00" mysql-bin.000004 | mysql -u root -p
MariaDB [db_default]> select * from db_default.db_one;
+--------+--------+
| 姓名 | 地址 |
+--------+--------+
| 小明 | 美国 |
| 华为 | 日本 |
+--------+--------+
相关文章:
Mysql数据备份 — mysqldump
一 备份类型 - 逻辑备份(mysqldump): - 优点: - 恢复简单,可以使用管道将他们输入到mysql。 - 与存储引擎无关,因为是从MySQL服务器中提取数据而生成的,所以消除了底层数据…...

vue使用Echarts5实现词云图
先上官网 词云图有些特殊,它属于Echarts 的扩展,需要额外安装Echarts-wordcloud包。 Echarts 官网 Echarts-wordcloud 词云图官网 先安装 npm install echarts npm install echarts-wordcloud再引入 echarts选一个引入就行;4或5版本都可以 …...

带有密码的Excel只读模式,如何取消?
Excel文件打开之后发现是只读模式,想要退出只读模式,但是只读模式是带有密码的,该如何取消带有密码的excel只读文件呢? 带有密码的只读模式,是设置了excel文件的修改权限,取消修改权限,我们需要…...
Linux下基本操作命令
一、基础命令 1. pwd 命令 pwd命令用于显示当前所在的工作目录的全路径名称。该命令无需任何参数,只需在终端窗口中输入 pwd 命令即可使用。 2. cd 命令 cd命令用于更改当前工作目录。该命令需要一个参数:目标目录名称。例如,若要进入 Do…...

JVS低代码表单自定义按钮的使用说明和操作示例
在普通的表单设计中,虽然自带的【提交】、【重置】、【取消】按钮可以满足基本操作需求,但在面对更多复杂的业务场景时,这些按钮的显示控制就显得有些力不从心。为了更好地满足用户在表单操作过程中的个性化需求,JVS低代码推出了表…...

C++--二叉树经典例题
本文,我们主要讲解一些适合用C的数据结构来求解的二叉树问题,其中涉及了二叉树的遍历,栈和队列等数据结构,递归与回溯等知识,希望可以帮助你进一步理解二叉树。 目录 1.二叉树的层序遍历 2.二叉树的公…...

软件测试需要学习什么?好学吗?需要学多久?到底是报班好还是自学好?
前言: 我发现很多的小伙伴刚刚毕业和想转行的小伙伴对于软件测试很陌生,其中很有很多的小伙伴还踩不少的坑,花费了大量的精力和时间去探索,结果还是一无所获。这里给大家出一期关于软件测试萌新的疑惑,看完这篇文章你就…...
Ubuntu搭建AI画图工具stable diffusion-webui
Ubuntu搭建 安装依赖项 安装以下依赖项: # Debian-based: sudo apt install wget git python3 python3-venv libgl1 libglib2.0-0# Red Hat-based: sudo dnf install wget git python3# Arch-based: sudo pacman -S wget git python3下载并安装WebUI 进入您想要安…...

智能优化算法(一):伪随机数的产生
文章目录 1.伪随机数介绍1.1.伪随机产生的意义1.2.伪随机产生的过程 2.产生U(0,1)的乘除同余法2.1.原始的乘同余法2.2.改进的乘同余法 3.产生正态分布的伪随机数4.基于逆变法产生伪随机数 1.伪随机数介绍 1.1.伪随机产生的意义 1.随机数的产生是进行随机优化的第一步也是最重要…...
python 调用Oracle有返回参数的存储过程
python 调用Oracle有返回参数的存储过程 1. 存储过程 create or replace procedure pro_test_args(a in integer,b in integer, c out integer) is beginc: a * b ;end pro_test_args;2. Python调用存储过程 import cx_Oracle import os import sys# 连接数据库 #conn cx_O…...
700. 二叉搜索树中的搜索
原题链接700. 二叉搜索树中的搜索 思路: 给定的就是一个二叉搜索树 二叉搜索树是一个有序树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若它的右子树不空,则右子树上所有结点的值均大于它的根结…...
GO学习之 互斥锁、读写锁该如何取舍
GO系列 1、GO学习之Hello World 2、GO学习之入门语法 3、GO学习之切片操作 4、GO学习之 Map 操作 5、GO学习之 结构体 操作 6、GO学习之 通道(Channel) 7、GO学习之 多线程(goroutine) 8、GO学习之 函数(Function) 9、GO学习之 接口(Interface) 10、GO学习之 网络通信(Net/Htt…...
Internet的特点
Internet是一个全球性的计算机网络系统,它将全世界各个地方已有的各种网络(如计算机网、数据通信网以及公用电话交换网等)互联起来,组成一个跨越国界范围的庞大的互联网,因此,也称为“网络的网络”。Internet在很短的时间内风靡全…...
Rust4.2 Common Collections
Rust学习笔记 Rust编程语言入门教程课程笔记 参考教材: The Rust Programming Language (by Steve Klabnik and Carol Nichols, with contributions from the Rust Community) Lecture 8: Common Collections fn main() {//Vectorlet mut v: Vec<i32> Vec::new();//…...

芸鹰蓬飞:抖音投流以后还有自然流量吗?
随着抖音平台的普及,企业和个人纷纷加入到这个短视频的热潮中。然而,一旦投入抖音投流,是否还能依赖自然流量?这是许多用户和品牌关心的问题。本文将深入剖析这一话题,探讨抖音投流与自然流量之间的关系。 一、抖音投…...

CTFhub-RCE-php://input
我们需要使用php://input来构造发送的指令 查看phpinfo,找到一下字段 证明是可以使用php://input 1. 使用Burpsuite抓包并转至Repeater 2. 构造包 方法:POST 目标:/?filephp://input Body:<?php system("ls /"…...

RISC-V处理器设计(五)—— 在 RISC-V 处理器上运行 C 程序
目录 一、前言 二、从 C 程序到机器指令 三、实验 3.1 实验环境 3.11 Windows 平台下环境搭建 3.12 Ubuntu 平台下环境搭建 3.13 实验涉及到的代码或目录 3.2 各文件作用介绍 3.2.1 link.lds 3.2.2 start.S 3.2.3 lib 和 include 目录 3.2.4 common.mk 3.2.5 demo …...

【PIE-Engine 数据资源】全球250米LAI产品
文章目录 一、 简介二、描述三、波段四、示例代码参考资料 一、 简介 数据名称全球250米LAI产品时间范围2015年空间范围全球数据来源北京师范大学肖志强教授团队代码片段var images pie.ImageCollection(“BNU/LAI/GLOBAL-250”) 二、描述 全球 250 米叶面指数产品由北京师范…...

vcomp120.dll丢失怎么办?vcomp120.dll丢失的解决方法分享
vcomp120.dll丢失”。这个错误通常会导致某些应用程序无法正常运行,给用户带来困扰。那么,当我们遇到这个问题时,应该如何修复呢?下面我将为大家介绍四个修复vcomp120.dll丢失的方法。 一、使用dll修复程序修复 可以通过百度或许…...

linux下使用Docker Compose部署Spug实现公网远程访问
📑前言 本文主要是linux下使用Docker Compose部署Spug实现公网远程访问的文章,如果有什么需要改进的地方还请大佬指出⛺️ 🎬作者简介:大家好,我是青衿🥇 ☁️博客首页:CSDN主页放风讲故事 &am…...

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)
题目:3442. 奇偶频次间的最大差值 I 思路 :哈希,时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况,哈希表这里用数组即可实现。 C版本: class Solution { public:int maxDifference(string s) {int a[26]…...

HBuilderX安装(uni-app和小程序开发)
下载HBuilderX 访问官方网站:https://www.dcloud.io/hbuilderx.html 根据您的操作系统选择合适版本: Windows版(推荐下载标准版) Windows系统安装步骤 运行安装程序: 双击下载的.exe安装文件 如果出现安全提示&…...

使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台
🎯 使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台 📌 项目背景 随着大语言模型(LLM)的广泛应用,开发者常面临多个挑战: 各大模型(OpenAI、Claude、Gemini、Ollama)接口风格不统一;缺乏一个统一平台进行模型调用与测试;本地模型 Ollama 的集成与前…...

保姆级教程:在无网络无显卡的Windows电脑的vscode本地部署deepseek
文章目录 1 前言2 部署流程2.1 准备工作2.2 Ollama2.2.1 使用有网络的电脑下载Ollama2.2.2 安装Ollama(有网络的电脑)2.2.3 安装Ollama(无网络的电脑)2.2.4 安装验证2.2.5 修改大模型安装位置2.2.6 下载Deepseek模型 2.3 将deepse…...

Python基于历史模拟方法实现投资组合风险管理的VaR与ES模型项目实战
说明:这是一个机器学习实战项目(附带数据代码文档),如需数据代码文档可以直接到文章最后关注获取。 1.项目背景 在金融市场日益复杂和波动加剧的背景下,风险管理成为金融机构和个人投资者关注的核心议题之一。VaR&…...
C语言中提供的第三方库之哈希表实现
一. 简介 前面一篇文章简单学习了C语言中第三方库(uthash库)提供对哈希表的操作,文章如下: C语言中提供的第三方库uthash常用接口-CSDN博客 本文简单学习一下第三方库 uthash库对哈希表的操作。 二. uthash库哈希表操作示例 u…...

如何应对敏捷转型中的团队阻力
应对敏捷转型中的团队阻力需要明确沟通敏捷转型目的、提升团队参与感、提供充分的培训与支持、逐步推进敏捷实践、建立清晰的奖励和反馈机制。其中,明确沟通敏捷转型目的尤为关键,团队成员只有清晰理解转型背后的原因和利益,才能降低对变化的…...

uniapp 小程序 学习(一)
利用Hbuilder 创建项目 运行到内置浏览器看效果 下载微信小程序 安装到Hbuilder 下载地址 :开发者工具默认安装 设置服务端口号 在Hbuilder中设置微信小程序 配置 找到运行设置,将微信开发者工具放入到Hbuilder中, 打开后出现 如下 bug 解…...

永磁同步电机无速度算法--基于卡尔曼滤波器的滑模观测器
一、原理介绍 传统滑模观测器采用如下结构: 传统SMO中LPF会带来相位延迟和幅值衰减,并且需要额外的相位补偿。 采用扩展卡尔曼滤波器代替常用低通滤波器(LPF),可以去除高次谐波,并且不用相位补偿就可以获得一个误差较小的转子位…...
用鸿蒙HarmonyOS5实现中国象棋小游戏的过程
下面是一个基于鸿蒙OS (HarmonyOS) 的中国象棋小游戏的实现代码。这个实现使用Java语言和鸿蒙的Ability框架。 1. 项目结构 /src/main/java/com/example/chinesechess/├── MainAbilitySlice.java // 主界面逻辑├── ChessView.java // 游戏视图和逻辑├──…...