当前位置: 首页 > news >正文

centos系统mysql数据库差异备份与恢复


文章目录

  • 差异备份mysql数据
      • 一、 安装 Percona XtraBackup
      • 数据库中创建一些数据
      • 三、创建全备份
      • 四、创建差异备份
          • 1. 在数据库中添加数据,让数据发生一些改变
          • 2. 创建第一个差异备份
          • 3. 数据库中再次添加一些数据
          • 4. 创建第二个差异备份
      • 五、模拟数据丢失,删库
      • 六、准备备份数据
      • 七、恢复数据

差异备份mysql数据

一、 安装 Percona XtraBackup

# 添加 Percona 仓库
sudo yum install https://repo.percona.com/yum/percona-release-latest.noarch.rpm  # 安装 Percona XtraBackup  
sudo yum install percona-xtrabackup-83 -y # 注意:版本号可能会变化# 83版本工具只支持mysql80以上版本

数据库中创建一些数据

如果数据库中已有默认以外的数据,直接跳过

CREATE DATABASE IF NOT EXISTS test;		#创建一个名为test的数据库
USE test;								#使用数据库
#创建一个名为t1的表CREATE TABLE IF NOT EXISTS t1 (  				id INT AUTO_INCREMENT PRIMARY KEY,  name VARCHAR(100) NOT NULL,  age INT  
);
#向t1表中插入一些数据INSERT INTO t1 (name, age) VALUES ('Alice', 30);  
INSERT INTO t1 (name, age) VALUES ('Bob', 25);  
INSERT INTO t1 (name, age) VALUES ('Charlie', 35);#查看表中所有记录
SELECT * FROM t1;

在这里插入图片描述

三、创建全备份

首先,你需要为 MySQL 数据库创建一个全备份、这是差异备份的基础

#创建一个备份目录
mkdir /data/backup -p
# 使用 xtrabackup 执行完全备份  
xtrabackup --defaults-file=/etc/my.cnf \	#使用配置文件连接
--backup -uroot -p'你的密码' \
--target-dir=/data/backup/base  \			#全备份目录
--no-server-version-check 					#不检查版本

注意:在实际操作中,请不要直接在命令行中包含密码,而是通过配置文件或环境变量来管理密码

四、创建差异备份

在进行了全备份之后,你可以根据需要创建多个差异备份

差异备份只包含全备份以来发生更改的数据

1. 在数据库中添加数据,让数据发生一些改变
use test;			\\使用test数据库
#插入一些记录
INSERT INTO t1 (name, age) VALUES ('David', 28);  
INSERT INTO t1 (name, age) VALUES ('Eva', 32);  
INSERT INTO t1 (name, age) VALUES ('Frank', 29);

在这里插入图片描述

2. 创建第一个差异备份
#差异备份都是基于全备份的
xtrabackup --defaults-file=/etc/my.cnf \		#使用配置文件连接--backup \				--target-dir=/data/backup/inc1 \			#第一次差异备份目录--incremental-basedir=/data/backup/base  \	#全备份目录,在全目录的基础上备份新数据-uroot -p'你的密码' \--no-server-version-check			#   '\'代表换行,这是一条命令

显示completed OK! 就成功了,若是报错可以点击以下链接博客查询
mysql全备份,及各种报错详解
在这里插入图片描述

3. 数据库中再次添加一些数据
use test;
#再次插入一些记录
INSERT INTO t1 (name, age) VALUES ('Grace', 27);  
INSERT INTO t1 (name, age) VALUES ('Henry', 31);  
INSERT INTO t1 (name, age) VALUES ('Ivy', 24);  
INSERT INTO t1 (name, age) VALUES ('Jack', 33);

在这里插入图片描述
在这里插入图片描述

4. 创建第二个差异备份
#跟前一个差异备份唯一的区别就是换了一下备份目录
xtrabackup --defaults-file=/etc/my.cnf \			#使用配置文件连接--backup \--target-dir=/data/backup/inc2 \				# 第二次差异备份目录--incremental-basedir=/data/backup/base  \		# 全备份目录,在全备份的基础上备份新数据-uroot -p'你的密码' \--no-server-version-check						#   '\'代表换行,这是一条命令

在这里插入图片描述

五、模拟数据丢失,删库

 systemctl stop mysqld			\\停止mysql数据库rm -rf /var/lib/mysql/*		\\删除mysql下的所有数据#这时mysql数据库已经登不上了

六、准备备份数据

在恢复之前,你需要准备备份数据。跟增量备份不同的是,不需要准备所有的备份,只需要准备第一次的全备份和最后一次差异备份即可。

#准备全备份数据xtrabackup --defaults-file=/etc/my.cnf \	#使用配置文件连接--prepare --apply-log-only \				#准备备份,只第一次使用 --apply-log-only--target-dir=/data/backup/base \			#全备份目录--no-server-version-check					#不检查版本信息

在这里插入图片描述

#在全备份数据的基础上准备差异备份数据
xtrabackup --defaults-file=/etc/my.cnf \		#使用配置文件连接
--prepare  
--target-dir=/data/backup/base \				#全备份目录
--incremental-basedir=/data/backup/inc2   \		#最后一次差异备份
--no-server-version-check						#不检查服务版本

在这里插入图片描述

七、恢复数据

#恢复数据
xtrabackup --defaults-file=/etc/my.cnf \		#使用配置文件连接
--copy-back \									#恢复数据
--target-dir=/data/backup/base \				#全备份目,此时此目录数据是所有数据
--no-server-version-check						

此时所有数据就都恢复了
在这里插入图片描述

#将恢复的数据给上mysql用户权限
chown -R mysql.mysql /var/lib/mysql
#重启mysqlsystemctl restart mysqld
#登录mysql
mysql -uroot -p'你的密码';
#查看所有数据库
show databases;

在这里插入图片描述

若是中途遇到一些无法解决的问题以下链接可能有解决方式
centos系统mysql数据库完全备份与恢复,以及各种报错解决方案

回到顶层

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【Python Tips】判断两个list是否存在相同元素——集合set的使用
  • SQL-REGEX-常见正则表达式的使用
  • python黑马笔记
  • Android C++系列:Linux信号(三)
  • TCP客户端connect断线重连
  • macOS 10.15中屏蔽Microsoft Edge浏览器的更新提示
  • C# 匿名函数与Lambda表达式
  • GitHub 详解教程
  • 密码错误springboot也正常启动了
  • 基于重要抽样的主动学习不平衡分类方法ALIS
  • EXCEL 排名(RANK,COUNTIFS)
  • 【React】箭头函数:现代 JavaScript 的高效编程方式
  • AI数字人+城市交通大数据可视化平台,让交通管理与服务更简便、更智能
  • WebKit引擎:打造无缝响应式设计
  • Python的人脸识别程序
  • IE9 : DOM Exception: INVALID_CHARACTER_ERR (5)
  • $translatePartialLoader加载失败及解决方式
  • (三)从jvm层面了解线程的启动和停止
  • 【划重点】MySQL技术内幕:InnoDB存储引擎
  • Docker 笔记(1):介绍、镜像、容器及其基本操作
  • docker容器内的网络抓包
  • flask接收请求并推入栈
  • java概述
  • macOS 中 shell 创建文件夹及文件并 VS Code 打开
  • mysql innodb 索引使用指南
  • mysql中InnoDB引擎中页的概念
  • 百度贴吧爬虫node+vue baidu_tieba_crawler
  • 从0搭建SpringBoot的HelloWorld -- Java版本
  • 对JS继承的一点思考
  • 干货 | 以太坊Mist负责人教你建立无服务器应用
  • 今年的LC3大会没了?
  • 使用 Node.js 的 nodemailer 模块发送邮件(支持 QQ、163 等、支持附件)
  • 数据结构java版之冒泡排序及优化
  • 译自由幺半群
  • 最简单的无缝轮播
  • ​直流电和交流电有什么区别为什么这个时候又要变成直流电呢?交流转换到直流(整流器)直流变交流(逆变器)​
  • #!/usr/bin/python与#!/usr/bin/env python的区别
  • #HarmonyOS:基础语法
  • #QT(智能家居界面-界面切换)
  • #在线报价接单​再坚持一下 明天是真的周六.出现货 实单来谈
  • (+4)2.2UML建模图
  • (4)通过调用hadoop的java api实现本地文件上传到hadoop文件系统上
  • (7) cmake 编译C++程序(二)
  • (70min)字节暑假实习二面(已挂)
  • (C语言)字符分类函数
  • (MIT博士)林达华老师-概率模型与计算机视觉”
  • (Redis使用系列) SpirngBoot中关于Redis的值的各种方式的存储与取出 三
  • (Redis使用系列) Springboot 整合Redisson 实现分布式锁 七
  • (Spark3.2.0)Spark SQL 初探: 使用大数据分析2000万KF数据
  • (经验分享)作为一名普通本科计算机专业学生,我大学四年到底走了多少弯路
  • (面试必看!)锁策略
  • (企业 / 公司项目)前端使用pingyin-pro将汉字转成拼音
  • (三)c52学习之旅-点亮LED灯
  • (五十)第 7 章 图(有向图的十字链表存储)
  • (正则)提取页面里的img标签