为什么要使用mysql主从(主)复制?
1、主服务器/从服务器设置增加了健壮性。主服务器出现问题时,你可以切换到从服务器使用。【高可用和容错性】
2、通过在主服务器和从服务器之间切分处理客户查询的负荷,可以得到更好的客户响应时间。但是不要同时在主从服务器上进行更新,这样可能引起冲突。【要求读写分离】
3、使用复制的另一个好处是可以使用一个从服务器执行备份,而不会干扰主服务器。在备份过程中主服务器可以继续处理更新。
4、使用一主多从时候,可以每个模块使用不同的读节点,减轻单数据库的压力。
配置
1、
2、
配置文件加入:
:为主服务器A的ID值 :二进制变更日值
重启master,运行;
配置slave
Slave的配置与master类似,你同样需要重启slave的MySQL。如下:
,而且唯一。
slave没有必要开启二进制日志,但是在一些情况下,必须设置,例如,如果slave为其它slave的master,必须设置。在这里,我们开启了二进制日志,而且显示的命名(默认名称为,但是,如果改变则会出现问题)。
配置中继日志,表示slave将复制事件写进自己的二进制日志(后面会看到它的用处)。
有些人开启了slave的二进制日志,却没有设置,然后查看slave的数据是否改变,这是一种错误的配置。所以,尽量使用,它防止改变数据(除了特殊的线程)。但是,并不是很实用,特别是那些需要在slave上创建表的应用。
在从库创建用户并清除日志
链接主库(这里的master_log_file 和 master_log_pos 需要与主库中的查看master状态中的保持一致)
启动SLAVE
停止slave
显示SLAVE状态
如果出现的两个yes存在则成功
主主复制
1.两台机器上都建立用户,并赋予复制权限
修改配置文件
MASTER1:
MASTER2:
配置主库
master1上指定master2为主:
mysql> ;
Query OK, 0 rows affected (0.00 sec)
master2上指定master1为主:
mysql> ;
Query OK, 0 rows affected (0.00 sec)
测试主主复制
实验1:启动两个服务,在任一mysql上进行操作,在另一mysql上均能体现出来。
mysql读写分离
读写分离,就是要把Mysql的读和写的操作分开,所有的查询操作都从从库读取,所有有关数据修改都要去操作主库,读操作不允许操作主库,写操作不允许操作从库。
一般情况下,从库只会给一个可读账号,防止对从库进行写操作。
为什么不允许操作从库?
主从复制之后,如果同时对主从库都进行修改,会导致同步出问题。
欢迎订阅
领取专属 10元无门槛券
私享最新 技术干货