MySQL 备份与主从复制


备份

根据备份方法的不同,备份可划分为以下几种类型

  • 热备(Hot Backup) :热备指的是在数据库运行的时候直接备份,并且对正在运行的数据库毫无影响,这种方法在MySQL官方手册中又被称为在线备份
  • 冷备(Cold Backup) :冷备指的是在数据库停止的时候进行备份,这种方法十分简单,就是直接复制相关的数据库物理文件,这种方法在MySQL官方手册中被称为离线备份。
  • 温备(Warm Backup) :温备与热备相同有一点相同,即两者都是在数据库运行时进行备份,但是温备会对数据库当前的操作产生影响,因此需要加一个全局读锁来保证备份数据的一致性

按照备份后文件的内容,备份又可以分为

  • 逻辑备份:逻辑备份即直接备份数据库中的一条条SQL语句或者表内的数据,通常是可读的文本文件。这种方法的好处是我们可以观察导出备份文件的内容,但是由于恢复时需要重新执行这些命令和导入数据,所以恢复的时间往往较长。
  • 裸文件备份:裸文件备份即复制数据库的物理文件,既可以在运行时进行复制,也可以在停止时进行复制,并且这类备份的恢复时间往往要比逻辑备份要快很多。

按照备份数据库的内容,备份又可以分为

  • 完全备份 :对数据库进行一个完整的备份
  • 增量备份 :在上次完全备份的基础上对后续更改的数据进行备份
  • 日志备份 :对二进制日志的备份

不仅仅只有以上方法,我们还可以通过主从复制,利用从服务器作为备份


主从复制

主从复制是MySQL中提供的一种高可用的解决方案,步骤如下

  • 主服务器把数据更改到二进制日志(binlog)中
  • 从服务器把主服务器的二进制日志复制到自己的中继日志(relay log)中
  • 从服务器重做中继日志中的日志,把更改的内容应用到自己的数据库中,达到数据的最终一致性

这种复制其实就是完全备份+二进制日志备份的还原,并且为了保证数据的一致性,二进制日志的还原操作基本实时在进行。具体工作原理如下图所示

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aA8pvgBU-1602854915730)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1602666418394.png)]

可以看到,从服务器有两个线程,一个是I/O线程,一个是SQL线程。

I/O线程负责读取主服务器的二进制日志,并将其保存到从服务器的中继日志中

SQL线程负责执行中继日志,并执行其中的SQL语句

主从复制的作用

复制不仅仅可以用来做备份,还可以用作以下几种功能

  • 读取的负载均衡 :由于主从服务器中的数据一致,所以可以将读取平均的分布到从服务器中,减少主服务器的压力
  • 数据分布 :可以在不同的服务器之间实现数据的复制
  • 高可用和故障转移 : 在主服务器发生故障的时候,可以使用从服务器进行顶替,减少故障的停机时间和恢复时间。

如果某一程序员删库跑路,或者我们进行了一些删库删表的误操作,此时由于主从复制的机制,这些操作也会被同步到从服务器中,导致数据库瘫痪,那这种情况如何处理呢?

我们可以采用快照+复制的备份架构,对从服务器上数据库所在分区做快照,当主服务器发生了误操作时,我们只需要利用从服务器上保存的快照进行恢复,再根据二进制日志来进行某一时间点的恢复即可,如下图所示

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-T0gngUVz-1602854915732)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1602667402323.png)]

猜你喜欢

转载自blog.csdn.net/qq_35423154/article/details/109125213