一、了解主从复制
1.主从复制的原理:
影响MySQL-A数据库的操作,在数据库执行后,都会写入本地的日志系统A中。假设,实时的将变化了的日志系统中的数据库事件操作,在MYSQL-A的3306端口,通过网络发给MYSQL-B。MYSQL-B收到后,写入本地日志系统B,然后一条条的将数据库事件在数据库中完成。那么,MYSQL-A的变化,MYSQL-B也会变化,这样就是所谓的MYSQL的复制,即MYSQL replication。
在上面的模型中,MYSQL-A就是主服务器,即master,MYSQL-B就是从服务器,即slave。
日志系统A,其实它是MYSQL的日志类型中的二进制日志,也就是专门用来保存修改数据库表的所有动作,即bin log
日志系统B,并不是二进制日志,由于它是从MYSQL-A的二进制日志复制过来的,并不是自己的数据库变化产生的,有点接力的感觉,称为中继日志,即relay log。
可以发现,通过上面的机制,可以保证MYSQL-A和MYSQL-B的数据库数据一致,但是时间上肯定有延迟,即MYSQL-B的数据是滞后的。
2.主从复制的几种方式:
同步复制
所谓的同步复制,意思是master的变化,必须等待slave-1,slave-2,...,slave-n完成后才能返回。
这样,显然不可取,也不是MYSQL复制的默认设置。比如,在WEB前端页面上,用户增加了条记录,需要等待很长时间
异步复制
如同AJAX请求一样。master只需要完成自己的数据库操作即可。至于slaves是否收到二进制日志,是否完成操作,不用关心。MYSQL的默认设置。
半同步复制
master只保证slaves中的一个操作成功,就返回,其他slave不管。
这个功能,是由google为MYSQL引入的。
3.mysql主从复制用途
1)实时灾备,用于故障切换
2)读写分离,提供查询服务
3)备份,避免影响业务
4.主从部署必要条件:
1)主库开启binlog日志(设置log-bin参数)
2)主从server-id不同
3)从库服务器能连通主库
MySQL复制原理,其通过三个线程来完成,在master节点上运行的binlogdump线程以及在slave节点上运行的I/O线程和SQL线程。
1. master节点上的binlogdump线程,在slave与其正常连接的情况下,将binlog发送到slave上。
2.slave节点上的I/O线程,通过读取master节点发送的内容,并将数据复制到本地的relaylog(中继日志)中。
3.slave节点上的SQL线程,读取relaylog中的日志,并将其事务在本地执行。
二、mysql异步复制
在主节点上执行完命令之后生成一个日志文件,然后将日志文件发送给从节点,最后提交,从节点收到日志文件后,开始同步里面的数据(事物),最后得到与主节点一致的数据
环境:rhel6.5
两台主机:server1:master
server2:slave
1) 在两台主机上安装服务
在server1(master)和server2上(master)
tar xf mysql-5.7.17-1.el6.x86_64.rpm-bundle.tar ##解压安装包
yum install -y mysql-community-client-5.7.17-1.el6.x86_64.rpm
mysql-community-common-5.7.17-1.el6.x86_64.rpm
mysql-community-libs-5.7.17-1.el6.x86_64.rpm
mysql-community-libs-compat-5.7.17-1.el6.x86_64.rpm
mysql-community-server-5.7.17-1.el6.x86_64.rpm
在server1上(master)
vim /etc/my.cnf
写入:server-id=1 #数据库中的id号,三者不能相同
log-bin=mysql-bin #允许slave同步自己的二进制文件
/etc/init.d/mysqld start ###打开数据库
grep password /var/log/mysqld.log ###查看日志,l里面有数据库初始密码
mysql_secure_installation ###进行数据库初始化
mysql -p
show databases;
mysql> grant replication slave on *.* to westos@’172.25.45.%’ identified by ‘SHIjin_?’; #对172.25.45.%网段有权限同步
show master status ##查看master的状态
在server2上(slave)
查看授权是否成功
mysql -u westos -p