mysql主从备份原理

来源:互联网 发布:淘宝开店培训班 编辑:程序博客网 时间:2024/06/06 21:43
一、双机热备的概念简单说一下,就是要保持两个数据库的状态自动同步。对任何一个数据库的操作都自动应用到另外一个数据库,始终保持两个数据库中的数据一致。 这样做有如下几点好处:
1. 可以做灾备,其中一个坏了可以切换到另一个。
2. 可以做负载均衡,可以将请求分摊到其中任何一台上,提高网站吞吐量。  对于异地热备,尤其适合灾备。
二、mysql 主从备份工作原理
简单的说就是把 一个服务器上执行过的sql语句在别的服务器上也重复执行一遍, 这样只要两个数据库的初态是一样的,那么它们就能一直同步。当然这种复制和重复都是mysql自动实现的,我们只需要配置即可。
上图中有两个服务器,演示了从一个主服务器(master)把数据同步到从服务器(slave)的过程。
对于一个mysql服务器,一般有两个线程来负责复制和被复制。当开启复制这个开关之后(start slave)
1. 作为主服务器Master,会把自己的每一次改动都记录到 二进制日志 Binarylog 中。 (从服务器会负责来读取这个log,然后在自己那里再执行一遍。)
 
2. 作为从服务器Slave,会用master上的账号登陆到master上,去读取master的Binarylog,  然后写入到自己的中继日志Relaylog,然后自己的sql线程会负责读取这个中继日志,并执行一遍。到这里主服务器上的更改就同步到从服务器上了。
 
在mysql上可以查看当前服务器的主,从状态。 其实就是当前服务器的 Binary(作为主服务器角色)状态和位置。以及其RelayLog(作为从服务器)的复制进度。

mysql> show master status\G;
*************************** 1. row ***************************
File: mysql-bin-wh.000059
Position: 479
Binlog_Do_DB: db1
Binlog_Ignore_DB:
1 row in set (0.00 sec)
1. 第一行表明当前正在记录的 binarylog文件名是: mysql-bin-wh.000059.
我们可以在mysql数据目录下,找到这个文件:
2.  第二行, 479表示当前的文件偏移量, 就是写入在mysql-bin-wh.000059 文件的记录位置。
这两点就构成了 主服务器的状态。配置从服务器的时候,需要用到这两个值。 告诉从服务器从哪读取主服务器的数据。(从服务器登录之后,找到这个日志文件,并从这个偏移量之后开始复制。)
3. 第三行,和第四行,表示需要记录的数据库和需要忽略的数据库。 只有需要记录的数据库,其变化才会被写入到mysql-bin.000014日志文件中。

我们还可以在从服务器上,查看从服务器的复制状态。
1.  Master_host 指的是主服务器的地址。 
2. Master_user 指的是主服务器上用来复制的用户。从服务器会用此账号来登录主服务,从而进行复制。
3. Master_log_file 就是前面提到的, 主服务器上的日志文件名.
4. Read_Master_log_pos 就是前面提到的主服务器的日志记录位置, 从服务器根据这两个条件来选择复制的文件和位置。
5. Slave_IO_Running:  指的就是从服务器上负责读取主服务器的线程工作状态。 从服务器用这个专门的线程链接到主服务器上,并把日志拷贝回来。
6. Slave_SQL_Running: 指的就是专门执行sql的线程。 它负责把复制回来的Relaylog执行到自己的数据库中。 这两个参数必须都为Yes 才表明复制在正常工作。
1 0
原创粉丝点击