一、原理

· 在主库上把数据更改记录到二进制日志中(Binary Log)中,这些记录称为二进制日志事件。

· 从库通过IO线程将主库上的日志复制到自己的中继日志(Relay Log)中。

· 从库通过SQL线程读取中继日志中的事件,将其重放到自己数据上。

二、部署

第一步master主数据库配置

1、首先打开 cd /etc/my.cnf 文件:

      vi /etc/my.cnf

2、其次在[mysqld]下加入:


      server-id=1

log-bin=master-binlog

binlog_format=mixed

注:首先为mysql指定server-id为1,后面两步是打开master(是主从数据库的主数据库名称,以下都用master代替)的Binlog功能。

3、然后重启master数据库:

      service mysqld restart

4、重新进入数据库:

      mysql -uroot -p

5、创建一个角色并为其授权且仅限制主从复制功能,并且限制从库的ip地址:

     grant replication slave to ’root'@'192.168.124.77'  identified by ‘12345’;

   注:以上root 为用户名给从用 12345为passwd 192.168.124.77必须为从库的外网地址

6、刷新mysql:

flush privileges;

7查看正在使用的binlog日志的位置点:

show master status;

8、锁表:

flush tables with read lock;

第二步:从数据库(以下叫slave)的配置

1、修改my.cnf文件:

vim /etc/my.cnf

2、在配置文件中的[mysqld]下面添加:

server-id=2

log-bin = slave-binlog

binlog_format = mixed

3、重启mysql:


      service mysqld restart

4、登录mysql:


mysql -uroot -p

5、停止自动从主服务器同步数据:

stop slave;

6、再次进入mysql命令行,输入

change master to master_host=’192.168.124.76’,master_port=3306,master_user=’root’,master_password=’12345’,master_log_file=’master-bin.000001’,master_log_pos=0;

 注:192.168.124.76是主库ip 3306端口 root和12345是主库授权的时候设置的,master-bin.000001是查看主库二进制文件是的那个文件,0是主机的binlog日志的位置表

7、启动自动从主服务器同步的数据:

start slave;

8、返回主机中解表:

    unlock tables;

9、查看是否成功同步:

   show slave status \G;