文章目录
- 备份
- 主从复制
- 主从复制的作用
备份
根据备份方法的不同,备份可划分为以下几种类型:
- 热备(Hot Backup) : 热备指的是在数据库运行的时候直接备份,并且对正在运行的数据库毫无影响,这种方法在
MySQL
官方手册中又被称为在线备份。 - 冷备(Cold Backup) : 冷备指的是在数据库停止的时候进行备份,这种方法十分简单,就是直接复制相关的数据库物理文件,这种方法在
MySQL
官方手册中被称为离线备份。 - 温备(Warm Backup) : 温备与热备相同有一点相同,即两者都是在数据库运行时进行备份,但是温备会对数据库当前的操作产生影响,因此需要加一个全局读锁(不妨碍其他事务的读操作,但阻塞写操作)来保证备份数据的一致性。
按照备份文件的内容,备份又可以分为:
- 逻辑备份: 逻辑备份即直接备份数据库中的一条条SQL语句或者表内的数据,通常是可读的文本文件。这种方法的好处是我们可以观察导出备份文件的内容,但是由于恢复时需要重新执行这些命令和导入数据,所以恢复的时间往往较长。
- 裸文件备份: 裸文件备份即复制数据库的物理文件,既可以在运行时进行复制,也可以在停止时进行复制,并且这类备份的恢复时间往往要比逻辑备份要快很多。
按照备份数据库的内容,备份又可以分为:
- 完全备份 : 对数据库进行一个完整的备份
- 增量备份 : 在上次完全备份的基础上对后续更改的数据进行备份
- 日志备份 : 对二进制日志的备份
不仅仅只有以上方法,我们还可以通过主从复制,利用从服务器作为备份。
主从复制
主从复制是 MySQL
中提供的高可用的解决方案,步骤如下:
- 主服务器把数据更改到
二进制日志(binlog)
中; - 从服务器把主服务器的二进制日志复制到自己的
中继日志(relay log)
中; - 从服务器重做中继日志中的日志,把更改的内容应用到自己的数据库中,达到数据的最终一致性。
这种复制其实就是完全备份+日志备份的还原,并且为了保证数据的一致性,二进制日志的还原操作基本实时在进行。具体工作原理如下图所示:
可以看到,从服务器有两个线程,一个是I/O线程,一个是SQL线程:
- I/O线程负责读取主服务器的二进制日志,并将其保存到从服务器的中继日志中
- SQL线程负责执行中继日志,并执行其中的SQL语句
主从复制的作用
复制不仅仅可以用来做备份,还可以用作以下几种功能:
- 读取的负载均衡 : 由于主从服务器中的数据一致,所以可以将读取平均的分布到从服务器中,减少主服务器的压力。
- 数据分布 : 可以在不同的服务器之间实现数据的复制。
- 高可用和故障转移 : 在主服务器发生故障的时候,可以使用从服务器进行顶替,减少故障的停机时间和恢复时间。
如果某一程序员删库跑路,或者我们进行了一些删库删表的误操作,此时由于主从复制的机制,这些操作也会被同步到从服务器中,导致数据库瘫痪,那这种情况如何处理呢?
我们可以采用快照+复制的备份架构,对从服务器上数据库所在分区做快照,当主服务器发生了误操作时,我们只需要利用从服务器上保存的快照进行恢复,再根据二进制日志来进行某一时间点的恢复即可。