且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

Mysql主从复制原理以及实现

更新时间:2022-10-14 10:32:17

主从复制介绍:

      由于数据存储是软件和系统最重要的一部分,所以说如何做到数据安全、性能良好,就需要考虑很多的业务和技术,而主从复制在Mysql数据库使用方面,是不可缺少的一个重要方案,我们用主从复制方案主要实现,读写分离实现负载均衡、实现实时数据备份,甚至还可以将不同的业务分到不同的备份库。

实现的原理:

Replication原理 

Mysql  Replication 是一个异步的复制过程,从一个MySQL节点(称之为Master)复制到另一个MySQL节点(称之Slave)。在 Master  Slave 之间的实现整个复制过程主要由三个线程来完成,其中两个线程(SQL 线程和 I/O 线程)在 Slave 端,另外一个线程(I/O 线程)在 Master 端。 要实现 MySQL  Replication ,首先必须打开 Master 端的 Binary Log,因为整个复制过程实际上就是 Slave  Master 端获取该日志然后再在自己身上完全顺序的执行日志中所记录的各种操作。 
看上去MySQLReplication原理非常简单,总结一下: 
每个从仅可以设置一个主。 
  * 主在执行sql之后,记录二进制log文件(bin-log)。 
  * 从连接主,并从主获取binlog,存于本地relay-log,并从上次记住的位置起执行sql,一旦遇到错误则停止同步。 

主要的架构与方案:

Master-Slave 主从同步

 Mysql主从复制原理以及实现

Master-Slave-Slave  一主多从(A->B->C)级联方式

 

Master-Master   互为主备

Mysql主从复制原理以及实现

Master-slave主从实现方案:

基本需求:

(1)    两台虚拟机

192.168.121.105  mysql5.6.30 RPM   数据库主  master

192.168.121.146  mysql5.6.30 二进制包   数据库从   slave

2)主要的配置

Master my.cnf 开启bin-log日志server-id设置为一个随机数字,***设置为IP之类的,从机可以不开启二进制日志,因为从机不再做同步,如果还需要做同步时,需要开启此功能,同时需要注意的是需要将server-id也设置为一个数字不能和主机相同。

Mysql主从复制原理以及实现

主库的配置

Mysql主从复制原理以及实现

从库的配置

3)在主库中创建具有replication slave权限的账户,从库用来数据同步。

连接主库,并用授权语句授权;

Mysql主从复制原理以及实现

Mysql主从复制原理以及实现

4)还需要注意的是,当主库有大量数据时,我们要将数据备份,手动恢复到从库,然后在做主从,而数据备份的时候还要对主库锁表,只读,以防数据发生改变。

锁表命令:

1
Flush  table with read lock;


 

5)锁表后查看主库的二进制日志文件名以及binlog日志偏移量,我们的数据将从这一点开始同步。



Mysql主从复制原理以及实现

Mysql主从复制原理以及实现


6)登录从库配置从库数据同步,以下的命令主要是将密码端口等信息写入到master.info文件。

1
2
CHANGE  MASTER TO MASTER_HOST='192.168.121.105', MASTER_PORT=3306,MASTER_USER='rep',MASTER_PASSWORD='123123',
MASTER_LOG_FILE="mysql-bin.000002",MASTER_LOG_POS=318;

执行完如果如果不报错时,就可以开始数据同步。

在从库上面执行

1
start  slave;

7)执行完毕后就需要查看是否同步成功,第一个yes 表示主机与从机间的同步,这两个参数比较重要,只有这两个参数都是正确的,我们才能数据同步。

8)数据同步验证

在主库建一个stu库,再观察从库

Mysql主从复制原理以及实现

Mysql主从复制原理以及实现



本文转自 tianya1993 51CTO博客,原文链接:http://blog.51cto.com/dreamlinux/1835040,如需转载请自行联系原作者