首页 > 数据库 > MySQL >

mysql主从备份原理

2017-04-21

mysql主从备份原理。双机热备的概念简单说一下,就是要保持两个数据库的状态自动同步。对任何一个数据库的操作都自动应用到另外一个数据库,始终保持两个数据库中的数据一致。 这样做有如下几点好处: 1 可以做灾备,其中一个坏了可以切换到另一个。

mysql主从备份原理。

一、双机热备的概念简单说一下,就是要保持两个数据库的状态自动同步。对任何一个数据库的操作都自动应用到另外一个数据库,始终保持两个数据库中的数据一致。 这样做有如下几点好处: 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 才表明复制在正常工作。
相关文章
最新文章
热点推荐