一、原理
· 在主库上把数据更改记录到二进制日志中(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;