MySQL主从复制

实现原理

mysql支持单向、异步复制,复制过程中一个服务器充当主服务器,而一个或多个其它服务器充当从服务器

mysql复制基于主服务器在二进制日志总跟踪所有对数据库的更改(更新、删除等)

每个从服务器从主服务器接收主服务器已经记录到其二进制日志的保存的更新(比如主服务器插入一条记录,从服务器监听到主服务器二进制日志的新增日志就会在从服务器中执行)

 

实现步骤

master将改变记录到二进制日志(binary log)中

slave将master的binary log events 拷贝到它的中继日志(relay log)

slave重做中继日志中的事件, 将改变反映它的数据

配置主从

vim /etc/my.cnf

开启log-bin=mysql-bin

修改server-id = 112 (唯一的,随便设置个值, 不和其他的重复即可)

ls -l /usr/local/mysql/var/ 可以看到mysql-bin的二进制文件

MySQL主从复制

mysql> show master status; 可以查看master状态 (当前使用的binlog是000012, 位置是107)

MySQL主从复制

mysql> reset master; 可以重置master

开启从机

vim /etc/my.cnf 开启中继日志修改配置如下

MySQL主从复制

主机中给从机授权

grant replication slave on *.* to [email protected] identified by '123123';

这句话是我允许slave用户在192.168.8.113的服务器上通过密码123456访问当前的master

*.* 是所有库的所有表

 

在从机中ping一下主机,检测网络是否连通

进入mysql

mysql> stop slave;

MySQL主从复制

相关信息在master中使用 show master status 查看

查看从机的状态

mysql> show slave status\G

MySQL主从复制

这两项为yes说明配置成功

开启slave mysql> start slave;