主从复制介绍:
由于数据存储是软件和系统最重要的一部分,所以说如何做到数据安全、性能良好,就需要考虑很多的业务和技术,而主从复制在Mysql数据库使用方面,是不可缺少的一个重要方案,我们用主从复制方案主要实现,读写分离实现负载均衡、实现实时数据备份,甚至还可以将不同的业务分到不同的备份库。
实现的原理:
Replication原理
Mysql 的 Replication 是一个异步的复制过程,从一个MySQL节点(称之为Master)复制到另一个MySQL节点(称之Slave)。在 Master 与 Slave 之间的实现整个复制过程主要由三个线程来完成,其中两个线程(SQL 线程和 I/O 线程)在 Slave 端,另外一个线程(I/O 线程)在 Master 端。 要实现 MySQL 的 Replication ,首先必须打开 Master 端的 Binary Log,因为整个复制过程实际上就是 Slave 从 Master 端获取该日志然后再在自己身上完全顺序的执行日志中所记录的各种操作。
看上去MySQL的Replication原理非常简单,总结一下:
* 每个从仅可以设置一个主。
* 主在执行sql之后,记录二进制log文件(bin-log)。
* 从连接主,并从主获取binlog,存于本地relay-log,并从上次记住的位置起执行sql,一旦遇到错误则停止同步。
主要的架构与方案:
Master-Slave 主从同步
Master-Slave-Slave 一主多从(A->B->C)级联方式
Master-Master 互为主备
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也设置为一个数字不能和主机相同。
主库的配置
从库的配置
(3)在主库中创建具有replication slave权限的账户,从库用来数据同步。
连接主库,并用授权语句授权;
(4)还需要注意的是,当主库有大量数据时,我们要将数据备份,手动恢复到从库,然后在做主从,而数据备份的时候还要对主库锁表,只读,以防数据发生改变。
锁表命令:
Flush table with read lock;
(5)锁表后查看主库的二进制日志文件名以及binlog日志偏移量,我们的数据将从这一点开始同步。
(6)登录从库配置从库数据同步,以下的命令主要是将密码端口等信息写入到master.info文件。
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;
执行完如果如果不报错时,就可以开始数据同步。
在从库上面执行
start slave;
(7)执行完毕后就需要查看是否同步成功,第一个yes 表示主机与从机间的同步,这两个参数比较重要,只有这两个参数都是正确的,我们才能数据同步。
(8)数据同步验证
在主库建一个stu库,再观察从库