作为程序员一定要保持良好的睡眠,才能好编程

mysql主从复制情况

发布时间:2018-01-01


解决的问题

    数据分布

    负载均衡

    备份

    高可用性和容错


均衡:和nginx的均衡是不是一样的呢




实现原理:

    Mysql复制基于主服务器在二进制日志中跟踪所有对数据库的更改

    每一个从服务器从主服务器接收主服务器已经记录的数据。


实现的步骤:

    binary log  我们叫 滨log

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

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

    slave 重做中继日志的事件,将改变反映他自己的数据。


这就是我们的说的主从复制


下面来看看主从复制主要的操作步骤:


192.168.1.151 主服务器


192.168.1.152 从服务器



主服务器开启  binary log

my.cnf

log-bin=mysql-bin


如果有log-bin 这个就说明 binary log 已经开启了。


show master status;


1.png


Position  这个值是会变得


当然我们是可以  reset master 重置的  


这样  File对应的值就是  mysql-bin.0001 了。


授权从服务器可以监听主服务器


3.png

授权slave这个用户通过密码123456 在192.168.1.152这台服务器上去访问这个主服务器 master


那么这个sql语句是怎么写的呢?

grant replication slave on *.* to slave@192.168.1.152 indentified by '123456'


就是在mysql数据库的用户表中添加了一个用户



从服务器开启 relay log 


2.png

从服务器的配置是这样的,我们开启的是 relay log 这个配置项


按照上面的配置填写,然后  wq 保存退出即可。


定义好了以后,我们重新启动我们的mysql服务器


首先确定是否可以访问到master主服务器  ,ping 192.168.1.151 如果通就可以直接配置。


进入mysql控制终端:

change master to
master_host='192.168.1.151',
master_port=3306,
master_user='slave',
master_password='123465',
master_log_file='mysql-bin.000001',
master_log_pos=154;


当上面都的代码全部编写完成后,直接执行。

执行成功以后,就直接去监听了。

start slave;


show slave status\G


4.png


我们直接查看 从服务器的状态,直接看  slave_IO+_Running   和  slave_SQL_Running  如果这两项都是 yes 就证明配置成功。







Mysql双主热备



解决问题: 两台数据库都是读写

           实现心跳 如果其中一台服务器挂机了  那么直接写在另外一台。


    

5.png



应用场景:

QQ截图20180101173944.png

    



从服务器:


1、开启 binary log  /etc/my.cnf


log_slave_updates=1  这句话的意思是:从服务器监听到的数据 写入到binary log 中。


下面配图:


6.png


配置完成以后,重新启动一下mysql服务器。


然后配置一个用户可以访问到次服务器


7.png

show mastter status  //查看一下

8.png






主服务器:


同样需要开启  relay-log 

修改完成my.cnf 配置文件后,重新启动服务器


然后配置

9.png



show slave status\G


查看一下这个配置是否生效。




===========================================================================================================

好了,上面的主主复制已经配置完毕,那么我们再次配置一下   192.168.1.153 和 192.168.1.154 这两台服务器


主服务器=192.168.1.151


grant replication slave on *.* slave153@192.168.1.153 indentified by '123456'


打开 192.168.1.153 

stop slave;

change master to
master_host='192.168.1.151',
master_port=3306,
master_user='slave153',
master_password='123465',
master_log_file='mysql-bin.000002',
master_log_pos=1085;


start slave;


#查看是否已经复制成功

show slave status\G



打开主服务器 192.168.1.152 执行 这条语句

grant replication slave on *.* slave154@192.168.1.154 indentified by '123456'




打开从服务器 192.168.1.154


我们在写 change master to  这个配置的时候,先把  slave 停止掉。


stop slave;


change master to
master_host='192.168.1.152',
master_port=3306,
master_user='slave154',
master_password='123465',
master_log_file='mysql-bin.000001',
master_log_pos=1396;

start slave;


然后 show slave status 



以上就是我们说的双主热备