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使用全库级别备份,必须开启二进制日志!

常用选项:

  1. -h, --host=主机: 指定连接到的MySQL服务器的主机名。

  2. --databases 数据库1 [数据库2 ...]: 指定要备份的一个或多个数据库。

  3. --all-databases: 备份MySQL服务器中的所有数据库。

  4. --single-transaction: 在事务处理中运行mysqldump,以确保备份的数据是一致的。

  5. --lock-tables, -l: 在备份每个表之前对其进行锁定。在大型数据库上可能导致服务中断,推荐使用--single-transaction

  6. --result-file=文件路径: 将输出重定向到指定的文件,而不是默认输出到标准输出。

高级用法:

  1. --ignore-table=数据库.表: 指定要忽略备份的表,可以指定特定数据库中的特定表。

  2. --skip-lock-tables: 不对所有表进行锁定,即不使用--lock-tables选项。

  3. --compress: 在传输数据时使用压缩。

  4. --routines: 一起备份存储过程和函数。

  5. --triggers: 一起备份触发器。

  6. --events: 一起备份事件。

  7. --add-drop-database: 在每个数据库创建语句之前添加DROP DATABASE IF EXISTS语句。

  8. --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;
+--------+--------+
| 姓名   | 地址   |
+--------+--------+
| 小明   | 美国   |
| 华为   | 日本   |
+--------+--------+
 

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

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

相关文章

windows安装nginx

一、下载安装Nginx 1、官网下载地址&#xff1a;nginx: download 2、下载教程&#xff1a;选择最新的Stable version&#xff08;稳定版本&#xff09;下载到本地 3、下载完成后&#xff0c;解压放入本地非中文的文件夹中&#xff1a; 4、启动nginx&#xff1a;切勿直接双击n…

如何做一个能用的 JAVA 的 Websocket 聊天室?

要实现一个能用的 JAVA Websocket 聊天室&#xff0c;可以按照以下步骤进行&#xff1a; 选择合适的 Websocket 库&#xff1a;Java 有多种 Websocket 库可供选择&#xff0c;例如 Tyrus、Jetty、Netty 等。根据自己的需求和熟悉度选择一个合适的库。编写聊天室服务器代码&…

Ubuntu搭建AI画图工具stable diffusion-webui

Ubuntu搭建 安装依赖项 安装以下依赖项&#xff1a; # 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 进入您想要安…

php的api接口token简单实现

<?php // 生成 Token function generateToken() {$token bin2hex(random_bytes(16)); // 使用随机字节生成 tokenreturn $token; } // 存储 Token&#xff08;这里使用一个全局变量来模拟存储&#xff09; $tokens []; // 验证 Token function validateToken($token) {gl…

Webpack--动态 import 原理及源码分析

前言 在平时的开发中&#xff0c;我们经常使用 import()实现代码分割和懒加载。在低版本的浏览器中并不支持动态 import()&#xff0c;那 webpack 是如何实现 import() polyfill 的&#xff1f; 原理分析 我们先来看看下面的 demo function component() {const btn docume…

浅谈泛在电力物联网在智能配电系统应用

贾丽丽 安科瑞电气股份有限公司 上海嘉定 201801 摘要&#xff1a;在社会经济和科学技术不断发展中&#xff0c;配电网实现了角色转变&#xff0c;传统的单向供电服务形式已经被双向能流服务形式取代&#xff0c;社会多样化的用电需求也得以有效满足。随着物联网技术的发展&am…

USB偏好设置-Android13

USB偏好设置 1、USB偏好设置界面和入口2、USB功能设置2.1 USB功能对应模式2.2 点击设置2.3 广播监听刷新 3、日志开关3.1 Evet日志3.2 代码中日志开关3.3 关键日志 4、异常 1、USB偏好设置界面和入口 设置》已连接的设备》USB packages/apps/Settings/src/com/android/setting…

Redis模块的高级使用方式

Redis 模块是Redis的高级功能&#xff0c;允许我们实现特定的自定义数据类型。本质上&#xff0c;模块是一个动态库&#xff0c;可以在启动时或根据命令按需加载到 Redis 中 MODULE LOAD 。模块可以用多种语言编写&#xff0c;包括 C 和 Rust。 我们自己使用 Redis 模块实现新…

Java 设计模式——享元模式

目录 1.概述2.结构3.实现3.1.抽象享元3.2.具体享元3.3.享元工厂3.4.测试 4.优缺点5.使用场景6.JDK 源码解析——Integer 类 1.概述 &#xff08;1&#xff09;享元模式 (Flyweight Pattern) 是一种结构型设计模式&#xff0c;主要通过共享对象来减少系统中的对象数量&#xff…

MUYUCMS v2.1:一款开源、轻量级的内容管理系统基于Thinkphp开发

MuYuCMS&#xff1a;一款基于Thinkphp开发的轻量级开源内容管理系统&#xff0c;为企业、个人站长提供快速建站解决方案。它具有以下的环境要求&#xff1a; 支持系统&#xff1a;Windows/Linux/Mac WEB服务器&#xff1a;Apache/Nginx/ISS PHP版本&#xff1a;php > 5.6 (…

达梦数据库答案

1、 创建数据库实例&#xff0c;到/dm8/data下&#xff0c;数据库名&#xff1a;DEMO&#xff0c;实例名DEMOSERVER&#xff08;10分&#xff09; [dmdbadmServer ~]$ cd /dm8/tool [dmdbadmServer tool]$ ./dbca.sh1、 簇大小32&#xff0c;页大小16&#xff0c;登录密码&…

挑战100天 AI In LeetCode Day08(热题+面试经典150题)

挑战100天 AI In LeetCode Day08&#xff08;热题面试经典150题&#xff09; 一、LeetCode介绍二、LeetCode 热题 HOT 100-102.1 题目2.2 题解 三、面试经典 150 题-103.1 题目3.2 题解 一、LeetCode介绍 LeetCode是一个在线编程网站&#xff0c;提供各种算法和数据结构的题目&…

tcpdump抓包的字节数量与ethtool统计数据不同的原因

情况介绍 在进行RDMA抓包流量分析时&#xff0c;我使用ethtool工具统计了RDMA网卡的流量发送数据数量&#xff0c;然后使用tcpdump进行抓包。 经过分析发现&#xff0c;tcpdump得到的数据数量总是大于ethtool得到的数据数量&#xff0c;而且每个数据包会多出4个字节。 分析 …

eclipse安装lombok插件

lombok插件下载:Download 下载完成&#xff0c;lombok.jar放到eclipse根目录&#xff0c;双击jar运行 运行界面&#xff0c;点击Install安装。 安装完成&#xff0c;重启IDE&#xff0c;rebuild 项目。 rebuild 项目

【分享】Excel“只读方式”的两种模式

查阅Excel表格的时候&#xff0c;担心不小心修改了内容&#xff0c;可以给Excel设置以“只读方式”打开&#xff0c;这样就算修改了内容也不能直接保存表格。Excel表格可以设置两种“只读方式”&#xff0c;一起来看看吧&#xff01; “只读方式” 1&#xff1a; 打开Excel表…

cgo与调用c的回调函数指针

cgo直接调用函数&#xff0c;使用基本数据类型非常简单&#xff0c;包括一些结构体也比较简单&#xff0c;嵌套的稍微复杂些&#xff0c;但也可以&#xff0c;但有的时候&#xff0c;cgo调用c函数&#xff0c;会需要传递一个回调函数的指针&#xff0c;这时候就比较复杂了&…

基于PHP的设云尘资讯网站设计与实现

项目描述 临近学期结束&#xff0c;还是毕业设计&#xff0c;你还在做java程序网络编程&#xff0c;期末作业&#xff0c;老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。你想解决的问题&#xff0c;今天给大家介绍…

iOS应用签名的步骤有哪些?

用电脑给iOS应用签名的步骤如下&#xff1a; 获取开发者证书。通过Apple开发者中心申请开发者账号&#xff0c;并生成相应的开发者证书。根据需求&#xff0c;选择免费的个人开发者账号或付费的企业开发者账号。创建App ID。在签名之前&#xff0c;需要创建一个唯一的App ID。…

工作记录--(用HTTPS,为啥能被查出浏览记录?如何解决?)---每天学习多一点

由于网络通信有很多层&#xff0c;即使加密通信&#xff0c;仍有很多途径暴露你的访问地址&#xff0c;比如&#xff1a; DNS查询&#xff1a;通常DNS查询是不会加密的&#xff0c;所以&#xff0c;能看到你DNS查询的观察者&#xff08;比如运营商&#xff09;是可以推断出访问…

平安人寿基于 Apache Doris 统一 OLAP 技术栈实践

导读&#xff1a;平安人寿作为保险行业领军企业&#xff0c;坚持技术创新&#xff0c;以数据业务双轮驱动的理念和更加开放的思路来应对不断增长的数据分析和应用需求&#xff1b;以深挖数据价值、保障业务用数效率为目标持续升级大数据产品体系。自 2022 年起平安人寿开始引入…