mysql 备份

news2024/11/27 12:49:40

mysql 备份

  • 1. 备份的类型
  • 2.备份的类容
  • 3. 备份工具
    • 1:MySQL自带的备份工具
    • 2:文件系统备份工具
    • 3:其他工具
  • 4:备份的策略
    • 1. 直接拷贝数据库文件
    • 2. mysqldump备份数据库
    • 3. mydumper备份数据库
    • 4.lvm快照从物理角度实现几乎热备的完全备份,配合二进制日志备份实现增量备份,速度快适合比较烦忙的数据库
    • 5. 查看数据库的数据文件所在地
  • 备份脚本

1. 备份的类型

分类一——从服务器状态来分:

类型说明
热备份读写不受影响
冷备份离线备份,读写均中止
温备份备份时只读

分类二——从对象来分:

类型说明
物理备份复制数据文件
逻辑备份将数据导出到文本文件中

逻辑备份的优缺点:

优点缺点
在备份速度上两种备份要取决于不同的存储引擎逻辑备份要对RDBMS产生额外的压力,而裸备份无压力
物理备份的还原速度非常快。但是物理备份的最小粒度只能做到表逻辑备份的结果可能要比源文件更大。所以很多人都对备份的内容进行压缩
逻辑备份保存的结构通常都是纯ASCII的,所以我们可以使用文本处理工具来处理逻辑备份可能会丢失浮点数的精度信息
逻辑备份有非常强的兼容性,而物理备份则对版本要求非常高
逻辑备份也对保持数据的安全性有保证

分类三——从数据收集:

类型说明
完全备份备份所以数据
增量备份仅备份上传备份或增量备份以后变化的数据
差异备份仅备份上传完全备份以来变化的数据

2.备份的类容

数据文件
日志文件(比如事务日志,二进制日志)
存储过程,存储函数,触发器
配置文件(十分重要,各个配置文件都要备份)
用于实现数据库备份的脚本,数据库自身清理的Crontab

3. 备份工具

1:MySQL自带的备份工具

  1. mysqldump
    逻辑备份工具,支持所有引擎,MyISAM引擎是温备,InnoDB引擎是热备,备份速度中速,
    还原速度非常非常慢,但是在实现还原的时候,具有很大的操作余地。具有很好的弹性。
  2. mysqlhotcopy
    物理备份工具,但只支持MyISAM引擎,基本上属于冷备的范畴,物理备份,速度比较
    快。

2:文件系统备份工具

  1. cp冷备份
        支持所有引擎,复制命令,只能实现冷备,物理备份。使用归档工具,cp命令,对其进行备份的,备份速度快,还原速度几乎最快,但是灵活度很低,可以跨系统,但是跨平台能力很差。
  2. lvm
        支持所有引擎,基于快照(LVM,ZFS)的物理备份,速度非常快,几乎是热备。只影响数据几秒钟而已。但是创建快照的过程本身就影响到了数据库在线的使用,所以备份速度比较快,恢复速度比较快,没有什么弹性空间,而且LVM的限制:不能对多个逻辑卷同一时间进行备份,所以数据文件和事务日志等各种文件必须放在同一个LVM上。而ZFS则非常好的可以在多逻辑卷之间备份。

3:其他工具

  1. ibbackup
    商业工具,备份还原都很快,但是很贵
  2. xtrabackup
    开源工具,ibbackup的平替
  3. mysqlbackup
    ORACLE公司也提供了针对企业的备份软件MySQL Enterprise Backup简称

4:备份的策略

1. 直接拷贝数据库文件

  1. 停止数据库,进入数据库的数据文件,全部打包
systemctl stop mysqld 	#停止数据库服务
cd /var/lib/mysql		# 进入数据库的数据文件所在地
tar czf /tem/database.tar.gz * #把所有的文件都打包到/tem/database.tar.gz 

  1. 发送到需要恢复的服务器上
scp /tem/database.tar.gz 服务器IP:/tmp
  1. 停止服务器的数据库服务
systemctl stop mysqld
  1. 解压到服务器数据库数据文件的所在的
tar xf /tem/database.tar.gz -C /var/lib/mysql
  1. 重启服务器数据库
systemctl restart mysqld

2. mysqldump备份数据库

备份恢复单个数据库

mysqldump -uroot -p12345678 it -B > /backuo/db/it_1.sql # -B: 这是指定备份时同时包括数据库创建的选项。使用这个选项可以在备份文件中包含创建数据库的语句。

备份恢复全部数据库

	mysqldump -uroot -p12345678 -A -B > /backuo/db/it_all.sql 

恢复:

  1. 备份时包含-B

    1. 进mysql
    2. 创建对应的数据库
    3. source 备份文件的路径
  2. 备份时不包含-B

    mysqldump -uroot -p12345678 < /backuo/db/it_1.sql
    
  3. 备份恢复单个表
    和上边类似,只是在备份是把表名带上

    
    
  4. 备份数据结构,不备份数据

    mysqldump -uroot -p12345678 it -b > /backuo/db/it_structure.sql
    
  5. 增量备份+完全备份

    1. 前提
      在这里插入图片描述
    完全备份:
    mysqldump -uroot -p --default-character-set=utf8 --single-transaction -F -B 数据库名 |gzip > /server/backup/school_$(date +%F).sql.gz
    
    查看二进制日志在哪
    
    立即刷新并备份出binlog
    mysqladmin -uroot -p flush-logs
    cp /path/to/mysql-bin.000004 /server/backup/
    
    恢复binlog生成sql语句
    mysqlbinlog mysql-bin.000004 > bin.log
    
    zcat school_$(date +%F).sql.gz | mysql -uroot -p
    mysql -uroot -p < bin.log
    

    mysqlbinlog增量恢复方式
    基于时间点恢复
    1)指定开始时间到结束时间
    myslbinlog mysqlbin.000008 --start-datetime=’2014-10-45 01:10:46’ --stopdatetime=’2014-10-45 03:10:46’-r time.sql
    2)指定开始时间到文件结束
    myslbinlog mysqlbin.000008 --start-datetime=’2014-10-45 01:10:46’ -d esen -r
    time.sql
    3)从文件开头到指定结束时间
    myslbinlog mysqlbin.000008 --stop-datetime=’2014-10-45 03:10:46’ -d esen -r
    time.sql
    基于位置点的增量恢复
    1)指定开始位置到结束位置
    myslbinlog mysqlbin.000008 --start-position=510 --stop-position=1312 -r pos.sql
    2)指定开始位置到文件结束
    myslbinlog mysqlbin.000008 --start-position=510 -r pos.sql
    3)从文件开始位置到指定结束位置
    myslbinlog mysqlbin.000008 --stop-position=1312 -r pos.sql

3. mydumper备份数据库

Mydumper 是一个用于备份和恢复 MySQL 数据库的开源工具,它可以快速且并行地导出和导入数据库。以下是使用 Mydumper 进行备份和还原的基本步骤:

  1. 安装 Mydumper:
    在 Linux 系统上,使用包管理器安装 Mydumper 工具。例如,在 Ubuntu 上可以使用以下命令进行安装:

    sudo apt-get install mydumper
    
  2. 备份数据库:
    使用 Mydumper 通过以下命令备份数据库,将 DATABASE_NAME 替换为要备份的实际数据库名称,并指定备份输出的目录路径:

    mydumper -u USERNAME -p PASSWORD -B DATABASE_NAME -o /path/to/backup_directory
    

    其中,USERNAME 是连接 MySQL 的用户名,PASSWORD 是对应的密码。备份文件将保存在指定的目录路径中。

  3. 还原数据库:
    在执行还原操作之前,请确保已经在 MySQL 中创建了用于还原的数据库。然后,使用以下命令来还原数据库,将 DATABASE_NAME 替换为要还原的实际数据库名称,并指定备份文件的路径:

    myloader -u USERNAME -p PASSWORD -d /path/to/backup_directory
    

    其中,USERNAME 是连接 MySQL 的用户名,PASSWORD 是对应的密码。该命令将从指定的备份文件中还原数据库。

Mydumper 工具还有其他更高级的选项,可以根据需要进行配置,如并行度、压缩等。您可以查阅 Mydumper 的文档以获取更多详细的信息和用法示例。

4.lvm快照从物理角度实现几乎热备的完全备份,配合二进制日志备份实现增量备份,速度快适合比较烦忙的数据库

5. 查看数据库的数据文件所在地

1:看数据库的数据文件所在地
查看数据文件2:修改my.cnf,指定datadir目录

备份脚本

#!/bin/bash

# 定义备份脚本的变量
USER=root
PASSWORD=your_mysql_password
DATABASE=db_name
BACKUP_DIR=/backup

# 创建备份存储目录
mkdir -p $BACKUP_DIR

# 生成备份文件名
TODAY=`date +"%Y-%m-%d"`
FILE_NAME="$DATABASE-$TODAY.sql"

# 备份MySQL数据库
mysqldump -u $USER -p$PASSWORD --databases $DATABASE --single-transaction --flush-logs > $BACKUP_DIR/$FILE_NAME

# 压缩备份文件
tar -zcvf $BACKUP_DIR/$FILE_NAME.tar.gz $BACKUP_DIR/$FILE_NAME

# 删除原始备份文件
rm $BACKUP_DIR/$FILE_NAME

# 完成备份
echo "MySQL backup successfully completed."

要使用cron来调度备份,请执行以下步骤:

打开终端并输入以下命令:crontab -e

在打开的文件中添加以下行:

0 0 * * * /path/to/backup.sh
# 每天晚上十二点进行数据库备份

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

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

相关文章

【Dart】006-类的定义和使用

【Dart】006-类的定义和使用 文章目录 【Dart】006-类的定义和使用一、类的定义1、概述2、简单定义与实例化代码示例运行结果 3、成员方法代码示例运行结果箭头函数写法 4、get 与 set 关键字概述代码示例运行结果 二、类的构造方法1、特点2、完整版的构造方法简化版完整版 3、…

关于K8s的Pod的详解(一)

关于K8s的Pod的详解&#xff08;一&#xff09; Pod和API server的通信加快Pod启动更改Pod的资源Pod 的持久卷的单个访问模式Pod 拓扑分布约束Pod 拓扑分布中的最小域数 Pod 作为k8s创建&#xff0c;调度&#xff0c;管理的基本单位。由上级的Controller对Node上安装的Kubelet发…

最全整理,Pytest自动化测试框架-用例参数/忽略用例/失败重试(实战)

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 测试用例参数化 …

一零六四、世界杯数据可视化分析(阿里云天池赛)

目录 赛制官方链接 活动背景 活动时间&#xff1a;即日起-12月31日17点 数据说明 世界杯成绩信息表&#xff1a;WorldCupsSummary 世界杯比赛比分汇总表&#xff1a;WorldCupMatches.csv 世界杯球员信息表&#xff1a;WorldCupPlayers.csv 代码实现 赛制官方链接 世界杯…

LitePal数据库的可视化

依赖 implementation com.amitshekhar.android:debug-db:1.0.0 输入adb forward tcp:8080 tcp:8080 run项目然后浏览器输入 localhost:8080 (保证手机和电脑出于相同wifi下) 效果 点击表格中的数据还可以进行数据的编辑和删除操作

x86架构ubuntu22下运行NDS模拟器DeSmuME

0. 环境 i7 ubuntu22 1. 获取源码 浏览器打开https://github.com/TASEmulators/desmume/releases&#xff0c;下载源码压缩包。 解压 tar -zvxf desmume-release_0_9_13.tar.gz cd desmume-release_0_9_13 2. 源码编译 2.1 build GTK2 or SDL2 frontend with autotools 配置…

【缺陷报告】缺陷报告怎样写会好一些?

目录 标题 描述或总结 影响 前置条件 重现步骤 结果 优先级 重现频率   附件 变通方案&#xff08;Workaround&#xff09; 发生原因分析&#xff08;Root Cause Analysis&#xff09; 环境配置 &#x1f381;更多干货 标题 1. 首先要做一个“标题党”&#xff…

NB!漏洞精准检测与深度利用框架

关注【Hack分享吧】公众号&#xff0c;回复关键字【230526】获取下载链接 工具介绍 这是一款高危漏洞精准检测与深度利用框架&#xff0c;采用框架与插件分离的模式&#xff0c;只做一件事情&#xff1a;精准狙击高危漏洞&#xff0c;适合专业打点人士。 目标探测 精密检测 深…

浏览器中Cookie的全面介绍

简介 在Web前端开发时&#xff0c;我们经常会遇到一些浏览器存储相关的工具&#xff0c;例如Cookie。Cookie的英文本意是曲奇&#xff0c;但是在Web中&#xff0c;它被用作浏览器中存储的数据。Cookie都是namevalue的结构&#xff0c;name和value都为字符串。 使用流程 在首…

2023.7.16-求平方

功能&#xff1a;输入一个整数&#xff0c;显示出不大于这个整数的所有整数的平方。 程序&#xff1a; #define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> int main() {int a0, b;printf("请输入一个整数&#xff1a;");scanf("%d",&a);pr…

Go语言之重要数组类型数组

我们之前学习过变量&#xff0c;当存储一个学生名字时可以name“jack”,但是如果班级有三十人&#xff0c;每个人的名字都想存储到内存中怎么办呢&#xff1f;总不能用三十个变量分别存储吧&#xff0c;这时数组就可以发挥作用了。 数组其实是和字符串一样的序列类型&#xff0…

深入了解加快网站加载时间的 JavaScript 优化技术

目录 01、最小化文件大小 01&#xff09;、JavaScript 代码示例&#xff1a;缩小前后 02、文件压缩 01&#xff09;、Gzip 和 Brotli 压缩方法 02&#xff09;、压缩的服务器端配置 03、捆绑以减少网络请求 01&#xff09;、捆绑说明 02&#xff09;、捆绑工具 03&…

OWASP常见Web安全漏洞

OWASP&常见Web安全漏洞 一、OWASP介绍二、OWASPTOP10与常见漏洞讲解2.1、OWASP Top10 2013 VS 20172.2、OWASP Top10 20212.3、A1&#xff1a;2017 注入2.3.1、SQL注入攻击2.3.2、命令注入攻击 2.4、A2&#xff1a;2017失效的身份认证&#xff08;业务逻辑漏洞&#xff09;…

Linux——动静态库的制作和使用超详细(实操+代码+原理介绍)

动静态库的制作和使用 1️⃣.动静态库介绍&#x1f3c0;静态库⚽️动态库&#x1f3c8;区别&#x1f3d0;使用动态库的优点包括&#xff1a;&#x1f3c9; 使用静态库的优点包括&#xff1a; 2️⃣静态库的制作&#x1f34a;Q:库文件能不能有main()函数&#xff1f;&#x1f34…

clickhouse基础数据类型 语法及使用可视化数据库工具 DBeaver

新建一个名为 test 的数据库&#xff1a;右击数据库点击新增&#xff0c;然后创建一张 test &#xff0c;utf8mb4 字符的&#xff0c;点击确定 在 test 数据库下新建一张数据表&#xff0c;如下所示&#xff1a;右击表&#xff0c;然后点击新建表 鼠标放列上面&#xff0c;右键…

b站视频播放三倍速

目录 一、操作 一、操作 document.querySelector(video).playbackRate 31、F12或者在当前界面鼠标右击选择检查 打开开发者工具平台 2、在console界面执行document.querySelector(video).playbackRate 3 document.querySelector(video).playbackRate 3

vector模拟实现

目录 vector相关接口实现 使用memcpy拷贝问题 迭代器失效 引起失效的操作 指定位置元素的删除操作 ​编辑引起底层空间改变的操作 vector相关接口实现 template<typename T> class vector { public:typedef T* iterator;typedef const T* const_iterator; public:…

基于MSP432P401R跟随小车(一)【2022年电赛】

文章目录 一、赛前准备1. 硬件清单2. 工程环境 二、赛题思考三、软件设计1. 路程、时间、速度计算2. 距离测量3. 双机通信4. 红外循迹 四、技术交流 一、赛前准备 1. 硬件清单 主控板&#xff1a; MSP432P401R测距模块&#xff1a; GY56数据显示&#xff1a; OLED电机&#x…

MinUv2靶场详解

MinUv2靶场详解 这个靶场我学到了.bash_history文件&#xff0c;每个用户都有一个名为 .bash_history 的文件&#xff0c;它位于用户的主目录中&#xff0c;默认有500行最近执行的命令。 这个靶场我用vmware是不能打开的&#xff0c;用virtualBox就可以&#xff0c;并且打开时…

MySQL索引、事务

目录 索引 作用 查看索引 创建索引 删除索引 索引背后的数据结构 B树 B树 事务 事务的本质 事务的特性 并发执行事务产生的问题 脏读问题 不可重复读 幻读 MySQL中隔离级别 read uncommitted readcommitted repeatable read serializable 索引 索引的本质…