Mysql主从同步配置

Mysql主从同步配置

主从同步介绍

Mysql主从同步是指当主数据库(Master)节点数据发生更改后,能够快速将这种改变同步到其他从数据库(slave)节点中。由于Mysq的同步功能是Mysql内部基于事件通知机制,具有更高性能,更高可靠性。非常适合负载较大的网站,下面这个图片是Mysql官方提供的应用场景。

image1

主从同步是如何工作的?

从总体来说,有3个步骤:

  1. master将改变记录到二进制日志(binary log)中,并且通知slave开始开始拷贝;
  2. slave将master的二进制日志拷贝到它的中继日志(relay log);
  3. slave重做中继日志中的事件,将改变反映它自己的数据。

下图描述了复制的过程:

image2

主从同步需要一个主数据库和至少一个从数据库,下面就如何配置做一个说明。

主数据库(master)配置

主数据库配置较为简单,流程如下:

  1. 在配置文件[mysqld]下,开启Mysql二进制日志(log-bin = mysql-bin)
  2. 在配置文件[mysqld]下,设置服务器ID,一般情况下master设置为1,且所有服务器ID不可重复 (server-id= 1)

image3

  1. 添加用于同步的用户(可选,一般都是添加专用用户)

grant replication slave on *.* to slaveuser@’%’ identified by ‘123456’ ;

image4

完成上面配置后,就完成了master节点配置,通过执行下面命令查看master状态:

show master status ;

image5

如果看到这个,说明主库已经开始正确产生日志了。

从数据库(slave)配置

从数据库配置流程如下:

  1. 在配置文件[mysqld]下,设置服务器ID,一般情况下从服务区都设置2~2^32之间的数值;注意在整个主从同步服务器中,不能存在服务器ID相同的配置。

image6

  1. 设置master信息。

master_host,master_port,master_user,master_password这些信息是从库链接主库需要使用的信息,在此不再赘述。

master_log_file,master_log_pos表示你需要从那个日志文件以及位置开始同步,当前最新信息可以通过在主库执行show master status命令查询。

change master to master_host = ‘192.168.0.159’, master_port = 3306, master_user = ‘slaveuser’, master_password = ‘123456’,master_log_file = ‘mysql-bin.000011’,master_log_pos = 651;

image7

开始同步,并检查是否正确同步

Start slave ;

Show slave status\G;

image8

当我们开到Slave_IO_Running和Slave_SQL_Running均为YES是说明一切都正常了。

如果存在任何错误,错误信息会现在Last_IO_Error或者Last_SQL_Error,我们需要更具这儿提供的错误信息进行手工处理,如果是IO_Error,系统会定时自动重试,如果是SQL_Error,则系统会终止日志回放,需要人工处理错误后,重新开始同步。

image9

以上就是主从所有配置,我们现在在主库进行任何更改,从库都会自动同步。

注意事项

一般情况下我们只在主库进行写入,在从库读取信息,如果不小心直接更改了从库,可能会导致执行主库同步过来的数据时报错,导致同步被中断。当程序出错时,需要查看当前状态和错误信息,然后根据错误信手工处理错误,继续开始同步。下面是几个常用的sql语句:

SHOW SLAVE STATUS\G; //查看同步状态重要看错误信息,手工处理错误信息,然后重新开始同步

STOP SLAVE;  //停止同步

START SLAVE;  //开始同步

 

dasha

You must be logged in to post a comment