Mysql主从复制完美配置

主从原理

(1)主数据库进行增删改操作后,相应操作记录的语句(比如 create database test)会记录到binlog日志文件中(binlog日志文件一般和数据库data文件夹在一起)。

(2)从数据库会请求主数据库的binlog日志文件,获取到新的操作语句,然后在自己的从数据库上自动执行相同的操作语句,进而实现主从的同步。

详细主从复制过程

(1)Master开启bin-log功能,binlog日志文件用于记录数据库的增删改操作。

(2)需要开启三个线程,Master:I/O线程Slave:I/O线程,SQL线程

(3)Slave start;通过I/O线程连接Master,并且请求某个bin-log,position之后的内容

(4)Master服务器收到Slave I/O线程发过来的日志请求信息,然后Master I/O线程将bin-log内容、position返回给Slave IO线程

(5)Slave服务器收到bin-log日志内容,将bin-log日志内容写入到relay-log中继日志,创建一个master.info文件,该文件记录master IP、用户名、密码、master bin-log名称、bin-log position。

(6)Slave已经开启了sql线程,由sql线程实时监测relay-log日志内容是否有更新,如果有更新,则解析文件中的sql语句,并在Slave数据库中执行相同的操作语句。

实施

事先准备两台机器(或者虚拟机),分别安装好mysql—请确保都是全新安装,并且没有做过任何修改配置和建库建表等操作。

最终实现主从复制(由Master写入,自动同步到Slave中)效果如下:

A:192.168.1.1 主Mysql—Master

B:192.168.1.2 从Mysql—Slave

1、修改配置文件

假定两台Mysql的配置文件路径都是 /etc/my.cnf

修改主Mysql(Master):

vi /etc/my.cnf

log-bin=mysql-bin //启用二进制日志

server-id=1 //服务器唯一ID,默认是1,为方便辨认取IP最后一段

修改从Mysql(Slave):

vi /etc/my.cnf

log-bin=mysql-bin

server-id=2

2、重启两个mysql,使配置生效

3、在主Mysql上建立mysync帐户并授权为Slave

mysql>GRANT REPLICATION SLAVE ON *.* to ‘mysync’@’%’ identified by ‘xxxx’;

mysync是授权的用户名。

xxxx是密码

%表示来自所有ip的mysync账户的slave连接请求都可以被允许,实际上为了安全我们一般会指定特定的ip,比如本例子里用只允许192.168.1.2访问,用192.168.1.2替换%即可。

4、查询主Mysql状态,binlog当前日志信息确认

mysql>show master status;
Mysql主从复制完美配置

记住File和Position的值,后面要用。

主从复制的原理是Master的binlog日志中记录所有mysql信息修改,然后Slave通过分析Master的binlog日志获得要同步的内容,所以这里要查询的信息就是——要从哪个File同步,并且从哪个Position开始同步,明白了吧。

请注意,到这里以后,请不要再对Master做任何配置或者数据的修改,直到Slave配置完成!不然会出现信息同步错误。

5、配置从Mysql

Mysql主从复制完美配置Mysql主从复制完美配置master_log_file的内容请参考上面4中的File值

master_log_pos参考上面4中Position值

master_user是Master中配置的mysync账户

master_password是mysync账户的密码

6、启动从Mysql的slave同步

root>start slave;

7、检查从mysql的状态

Slave_IO_Running: Yes //此状态必须YES

Slave_SQL_Running: Yes //此状态必须YES

如果两个中有一个不是YES,说明配置失败。

以上是配置过程!