非DBA人员从零到一,MySQL InnoDB数据库调优之路(四)-数据备份与迁移

news2024/12/23 5:50:56

上一篇【非DBA人员从零到一,MySQL InnoDB数据库调优之路(三)-分区表与分库分表】

我认为分表在数据库的调优中是一种加法,通过拆分单表数据到多个表中,减少单表的压力,从而达到调优的效果,那么这一篇博文会通过对数据库进行减法来达到调优的效果。

1 MySQL的备份,根据不同的类型可以划分出3个类型

1.1 根据备份方法不同

1.1.1 热备

在数据库正常运行下进行备份。备份期间,数据库读写均可正常进行。

  • ibbackup

ibbackup是InnoDB存储引擎官方提供的热备工具,可以同时备份MyISAM存储引擎和InnoDB存储引擎表。对于InnoDB存储引擎表其备份工作原理如下:

1)记录备份开始时,InnoDB存储引擎重做日志文件检查点的LSN。

2)复制共享表空间文件以及独立表空间文件。

3)记录复制完表空间文件后,InnoDB存储引擎重做日志文件检查点的LSN。

4)复制在备份时产生的重做日志

不过ibbackup是收费软件

  • XtraBackup

实现所有ibbackup的功能,并且扩展支持了真正的增量备份功能。因此,更好的选择是使用XtraBackup来完成热备的工作。支持MySQL5.0以上的版本

MySQL数据库本身提供的工具并不支持真正的增量备份,更准确地说,二进制日志的恢复应该是point-in-time的恢复而不是增量备份。而XtraBackup工具支持对于InnoDB存储引擎的增量备份,其工作原理如下:

1)首选完成一个全备,并记录下此时检查点的LSN。

2)在进行增量备份时,比较表空间中每个页的LSN是否大于上次备份时的LSN,如果是,则备份该页,同时记录当前检查点的LSN。

1.1.2 冷备

在备份期间,应用的读写操作不可进行。

对于InnoDB存储引擎而言,冷备只需要备份MySQL数据库的frm文件,共享表空间文件,独立表空间ibd文件,重做日志文件。

1.1.2.1 mysqldump

用于转存数据库的备份及不同数据库之间的移植。

1.1.2.2 SELECT...INTO OUTFILE

SELECT...INTO只能导出一张表数据。

冷备的优点是:

备份简单,只要复制相关文件即可。

备份文件易于在不同操作系统,不同MySQL版本上进行恢复。

恢复相当简单,只需要把文件恢复到指定位置即可。

恢复速度快,不需要执行任何SQL语句,也不需要重建索引。

冷备的缺点是:

InnoDB存储引擎冷备的文件通常比逻辑文件大很多,因为表空间中存放着很多其他的数据,如undo段,插入缓冲等信息。

冷备也不总是可以轻易地跨平台。操作系统、MySQL的版本、文件大小写敏感和浮点数格式都会成为问题。

1.1.3 温备

数据库可用性弱于热备,备份期间,数据库只能进行读操作,不能进行写操作。

1.2 根据备份后文件内容的不同

1.2.1 逻辑备份

逻辑备份是指备份出来的文件内容是可读的,一般是文本文件。内容一般是一条条sql语句。

在冷备中有两种常见方式进行逻辑备份,其中mysqldump备份工具进行备份是一种逻辑备份方式。另外SELECT...INTO,也是一种逻辑备份方式,通过SQL语句定向导出一张表内容。

1.2.2 裸文件备份

裸文件备份是指复制数据库的物理文件,即可以是在数据库运行中的复制,如热备中的(ibbackup、xtrabackup这类工具),也可以是在数据库停止运行时直接的数据文件复制。

1.3 根据备份的数据库内容不同

1.3.1 完全备份

完全备份是指对数据库进行一次完整的备份。

1.3.2 增量备份

增量备份是指在上次完全备份的基础上对于更改的数据进行备份。

1.3.3 日志备份

日志备份主要是指对MySQL数据库二进制日志备份,其中二进制日志即binlog,记录了对MySQL数据库执行更改的所有操作,但是不包括SELECT和SHOW这类操作,因为这类操作对数据本身并没有修改。

通过对一个完全备份进行二进制日志重做来完成数据库的恢复工作,主从复制就是一个典型的日志备份。

1.3.3.1 复制的工作原理

复制(replication)是MySQL数据库提供的一种高可用高性能的解决方案,一般用来建立大型的应用。总体来说,replication的工作原理分为以下3个步骤:

1)主服务器(master)把数据更改记录到二进制日志(binlog)中。

2)从服务器(slave)把主服务器的二进制日志复制到自己的中继日志(relay log)中

3)从服务器重做中继日志中的日志,把更改应用到自己的数据库上,以达到数据的最终一致性。

复制的工作原理并不复杂,其实就是一个完全备份加上二进制日志备份的还原。

 从服务器有2个线程,一个是I/O线程,负责读取主服务器的二进制日志,并将其保存为中继日志;另一个是SQL线程,复制执行中继日志

2 数据复制与数据迁移

回到本文的开头,这篇博文的讨论是如何通过对数据库做减法来实现数据库调优,这里不得不讨论数据复制与数据迁移的区别

数据库迁移:将数据从源数据库迁移到目标数据库,最终在迁移完成后会关闭源数据库系统。可以迁移整个数据集,也可以迁移部分数据集。

数据库复制:将数据从源数据库持续转移到目标数据库,最终不会关闭源数据库。数据库复制(有时称为“数据库流式传输”)是一个持续的过程。

使用数据库复制时,可以将数据从源数据库持续转移到目标数据库,且不会删除源数据库。这概念通常用于我们在进行高可用实现时,如1.3.3提到的主从数据库同步。

2.1 部分迁移与完全迁移

而在数据库迁移中,数据将从源数据库移动到目标数据库。在数据完全迁移后,删除源数据库并将客户端访问重定向到目标数据库。在我工作中会遇到两种数据迁移:

完全迁移在笔者工作前两份工作中非常常见,企业内部在新旧系统切换的时候,常常需要对SQLSERVER或者Oracle到Mysql的数据迁移。

部分迁移就是这篇博文的主题,例如企业内部档案、财税的科目余额表,他们一年都会很多数据,但是他们一般只需要1年或者3年即可,所以在实际系统中,我们会以年为单位对旧数据进行迁移,保证线上数据库一直处于平稳的数据量,从而达到高速查询。

3 后感

一般来说对老数据的备份迁移只让数据库当中存储的都是活跃数据,如果备份后活跃数据还是百万及千万级,那么还是要像我第一篇及第二篇博文那些,在数据表设计当初字段设计得当,然后通过建立有效的索引从而达到较好的查询速度。

参考:《MySQL技术内幕:InnoDB存储引擎(第2版)》

数据库备份之热备,冷备,温备

数据库迁移:概念和原则

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

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

相关文章

Spring Security权限管理原理

1.简介 授权是更具系统提前设置好的规则,给用户分配可以访问某一资源的权限,用户根据自己所具有的权限,去执行相应的操作,spring security提供的权限管理功能主要有两种: 基于过滤器的权限管理功能(Filte…

Syntax Error: Error: Missing binary. See message above.

安装完nvm,选择后node版本,在idea中引入vue项目,npm install后,运行npm run serve后 控制台出现下面错误: Try running this to fix the issue: D:\Program Files\nodejs\node.exe E:\vue-project\node_modules\fibe…

篮球竞赛预约平台设计与实现的源码+文档

摘 要 随着信息化时代的到来,管理系统都趋向于智能化、系统化,篮球竞赛预约平台也不例外,但目前国内仍都使用人工管理,市场规模越来越大,同时信息量也越来越庞大,人工管理显然已无法应对时代的变化&#x…

platform总线

1、什么是platform总线? platform是Linux内核抽象出来的软件代码,用于设备与驱动的连接,设备与驱动通过总线进行匹配;匹配成功后会执行驱动中的probe函数,在probe函数中可以获取到设备的信息; 设备与驱动…

gitlab的使用方法,详解gitlab操作

1.导读 本教程主要讲解了GitLab在项目的环境搭建和基本的使用,可以帮助大家在企业中能够自主搭建GitLab服务,并且可以GitLab中的组、权限、项目自主操作。 - GitLab简介 - GitLab环境搭建 - GitLab基本使用(组、权限、用户、项目) 2.GitLab简介 Gi…

debug - JLX12864C(ST7920-12864)液晶屏不能使用串行通讯的原因

文章目录debug - JLX12864C(ST7920-12864)液晶屏不能使用串行通讯的原因概述调试备注ENDdebug - JLX12864C(ST7920-12864)液晶屏不能使用串行通讯的原因 概述 正在给板子写出厂测试程序, 买的12864型号是JLX12864C. STC官方给的例程是并行通讯, 好使. 但是想在测试程序中改为…

Linux线程基础

目录 一,线程函数 1、创建一个线程 2、获取自身线程ID 3、线程终止 4、取消正在执行线程 5、线程等待 6、线程分离 二,线程的使用 1,线程等待和线程分离 (1)、线程等待 (2)、线程分离 (3)、线程等待线程分离同时进行 三&#xff…

中英翻译《森林火灾的预防措施》

The Preventive Measures for Forest Fire 森林火灾的预防措施 The preventive measures for forest fires include some preemptive methods that can help reduce the risks of fires and contril their severity and spread, and thus, maintain ecological balance …

vue与es6的知识点

var let const let const 不能重复声明,局部作用域, 案例 let name "未来"; let str 我是${name}; console.log(str); 箭头函数 let add (x)>{ return x; } console.log(add(9)) v-bind 绑定标签的属性 src class a titie等等…

Qt for Android实现开机自启动

前言 最近项目需要,在Android上编写的程序,需要实现开机自启动。笔者查询了下资料,基本原理如下: 当Android启动时,会发出一个系统广播,内容为ACTION_BOOT_COMPLETED,它的字符串常量表示为 an…

详解时间复杂度计算公式(附例题细致讲解过程)

这几天开始刷力扣上面的算法题,有些题目上面限制时间复杂度和空间复杂度,题目虽然写出来了,但是很没底。印象里数据结构老师讲过一点,沉睡的记忆苏醒了。只记得一个时间复杂度是O(n),空间复杂度是S(n)。for循环常常是O…

中学语文教学参考杂志社中学语文教学参考编辑部2022年第27期目录

理论学术_课题荟萃《中学语文教学参考》投稿:cn7kantougao163.com 统编教材鲁迅作品的民俗文化分析及教学应用 张家波;张晓静; 3-5 高中语文线上学习的实践与反思 张灵贵; 6-797 不同课型导学案设计建议 张桂霞; 8-997 现代化进程中的阵痛:《哦,香雪…

遇到Bug漏测,不能总想着甩锅吧

背景 漏测Bug是指产品逻辑缺陷在测试过程中没有被发现(尤其是测试环境可以重现的缺陷),上线版本发布后或者在用户使用体验后发现并反馈回来的缺陷。 漏测Bug可能造成线上故障或者资损,在对产品测试过程中,自己也难免…

Pandas常见筛选数据的五种方法其一逻辑筛选。看见必懂,懂者必会,会者必加分

前言:Pandas的数据操作中,最基本的就是操作的筛选了,但是对新学员来说的这又是一个难点,因为方法比较多,不容易记。在此总结一下pandas中的一些常用的数据筛选操作。 逻辑筛选数据:切片([ ]&am…

ubuntu 安装、配置FTP

ubuntu 安装、配置FTP 提示:ubuntu 16.0.4,不同版本操作可能稍有不同 前言 本文主要对服务器安装及配置FTP做一个记录,涉及安装、配置、创建FTP账号、以及第一次连接异常等。 提示:以下是本篇文章正文内容,下面案例可…

单载波频域均衡matlab仿真,包括卷积编码维特比译码,矩阵交织,QPSK调制解调,导频插入,MMSE-FDE频域均衡

目录 1.算法描述 2.仿真效果预览 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 频域均衡是从校正系统的频率特性出发,利用一个可调滤波器的频率的频率特性去补偿信道或系统的频率特性,使包括可调滤波器在内的基带系统的总特性接近无失真传输条件。频域…

【Spring项目中的Controller理解】

目录 1. 添加依赖 2. 关于异常 1. 添加依赖 首先,需要保障此项目中存在spring-boot-starter-web依赖项,否则,当前项目并不具备Web应用程序开发所需的依赖! 提示:spring-boot-starter-web是建立在spring-boot-starte…

基于Python的Django开发接口框架搭建

1、安装Django,如图1 命令行执行:pip install django 2、创建Django项目,如图2 django-admin startproject imooc 3、创建Django的应用项目,如图3 必须进入项目文件下执行命令: python3 manage.py startapp app …

✿✿✿JavaScript ---- 函数/js内置对象

目 录 一、函数 自调用函数如下演示: 二、JS中的内置对象 2.Number对象 3.Date 对象 补:第三方的日期工具类 moment.js 4.Math对象 5.数组对象 补:ES6中数组对象新增的方法 6.Global全局方法对象 7.RegExp(**)正则表达式对象 一、…

Word2010入门

Word简介 Microsoft Office Word 2010是微软公司的一个文字处理应用程序。 我们可以利用Word编辑文字、图文排版、建立表格、图形绘制。一直以来,Word都是最流行的文字处理应用程序。 .doc、.docx是Word软件默认存储文件类型, .docx正在逐步取代.doc。…