mysql主从同步使得数据可以从一个数据库服务器复制到其他服务器上,在复制数据时,一个服务器充当主服务器(master),其余的服务器充当从服务器(slave),备服务器从主服务器同步数据,完成数据的备份。

【异步同步】

前提:2台服务器,主 192.168.1.101 备 192.168.1.102

1.首先主 备 服务的mysql配置的server的id必须不同,server_id是为了标识binlog,防止同步死循环。

#服务器ID,同个集群必须不同
server_id=1
#端口
port=63751 skip-name-resolve
#binlog 过期时间,超过3天未修改的清除
expire_logs_days = 3
#binlog 的名称
log-bin=mysql-bin.log
#同步的库排除mysql
binlog-ignore-db=mysql
#同步的库排除mysql
replicate-ignore-db=mysql
slave-skip-errors=all #id 的自增量
auto_increment_increment=2
#id 的开始
auto_increment_offset=1
#最大连接数
max_connections=1000
#编码
collation-server=utf8_unicode_ci
init-connect='SET NAMES utf8;'
character-set-server=utf8

2.重启mysql

3.创建主备同步的账户和权限

grant replication slave on *.* to 'replication'@'192.168.1.101' identified by 'test'; //再备服务器上执行
grant replication slave on *.* to 'replication'@'192.168.1.102' identified by 'test'; //再主服务器上执行
 
4.查看mysql当前机器的binlog信息,show master status\G,例如我安装完之后,主备查看的binlog均为如下图所示。

5.则配置同步信息。

change master to master_host='192.168.1.102',master_port=3306,master_user='replication',master_password='test',master_log_file='binlog.000002',master_log_pos=565; //主服务器上执行

change master to master_host='192.168.1.101',master_port=3306,master_user='replication',master_password='test',master_log_file='binlog.000002',master_log_pos=565;//备服务器上执行

6.打开同步 start slave

7.查看slave的状态show slave status \G看到如下,说明成功

【半同步机制】

1.进入mysql执行如下:

INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';

INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';

同时配置文件增加如下配置,重启mysql即可。

#半同步,10s超时
rpl_semi_sync_master_enabled=1
rpl_semi_sync_master_timeout=10000
rpl_semi_sync_slave_enabled=1

总结:半同步复制个人感觉是维持数据完整性,安全性的的一个策略,虽会损失一点性能,还是值得的。配置很简单,关键是理解其工作机制。

三个问题:

1.为什么server_id是必须的,而且配置主从同步的server_id不允许重复。

答:mysql写入到binlog时候会携带上server_id,所以在主从同步时候,通过server_id 防止死循环。

假设 server_id的1001 为A,server_id 的 1002 为B,在A机器写入数据的时候binlog带上 1001 信息,通过binlog同步到B机器上,B机器上的binlog会记录的会携带上1001的信息,这时候如果是双主形式的互备,A同步B的时候通过server_id会忽略该数据,防止死循环。

2.异步机制是什么与半同步机制有何差异。

答:简单来讲

a.异步机制任务执行到1即结束事务。

b.半同步机制是执行到3结束事务,如果在2或者3超时时候,会采用半同步机制。

综述,半同步机制更能保障数据的一致性问题,而异步机制的性能更优。

3.双主同步如果字段key是自增长的如何保证不冲突?

答:如果双主互备的情况下,通过auto_increment_increment,即id的自增为2,然后双主两台的id起始值不同,来保障两台机器的id完全不相同,这样在互相切换过程中不会导致id冲突而丢失数据。

mysql双主互备的更多相关文章

  1. Mysql双主互备+keeplived高可用架构介绍

    一.Mysql双主互备+keeplived高可用架构介绍 Mysql主从复制架构可以在很大程度保证Mysql的高可用,在一主多从的架构中还可以利用读写分离将读操作分配到从库中,减轻主库压力.但是在这种 ...

  2. Mysql双主互备+keeplived高可用架构(部分)

    一.Mysql双主互备+keeplived高可用架构介绍 Mysql主从复制架构可以在很大程度保证Mysql的高可用,在一主多从的架构中还可以利用读写分离将读操作分配到从库中,减轻主库压力.但是在这种 ...

  3. 【Keepalived+MySQL】MySQL双主互备+高可用

    一.基本信息说明 [DB1] IP: 192.168.102.144 hostname: LVS-Real1 [DB2] IP: 192.168.102.145 hostname: LVS-Real2 ...

  4. 企业级-Mysql双主互备高可用负载均衡架构(基于GTID主从复制模式)(原创)

    前言:          原理与思想        这里选用GTID主从复制模式Mysql主从复制模式,是为了更加确保主从复制的正确性.健康性与易配性.这里做的是两服务器A,B各有Mysql实例331 ...

  5. [Mysql高可用]——双主互备+keepalived

    实验架构图    实验环境 主机名 操作系统 Mysql版本 keepalived版本 主机IP VIP lyj1(Master/Slave) Red Hat release 6.5 Mysql5.6 ...

  6. 高可用Mysql架构_Mysql主从复制、Mysql双主热备、Mysql双主双从、Mysql读写分离(Mycat中间件)、Mysql分库分表架构(Mycat中间件)的演变

    [Mysql主从复制]解决的问题数据分布:比如一共150台机器,分别往电信.网通.移动各放50台,这样无论在哪个网络访问都很快.其次按照地域,比如国内国外,北方南方,这样地域性访问解决了.负载均衡:M ...

  7. MySQL双主热备问题处理

    1. Slave_IO_Running: No mysql> show slave status\G *************************** 1. row *********** ...

  8. Mysql双主热备+LVS+Keepalived高可用部署实施手册

    MySQL复制能够保证数据的冗余的同时可以做读写分离来分担系统压力,如果是主主复制还可以很好的避免主节点的单点故障.然而MySQL主主复制存在一些问题无法满足我们的实际需要:未提供统一访问入口来实现负 ...

  9. Mysql双主热备+LVS+Keepalived高可用操作记录

    MySQL复制能够保证数据的冗余的同时可以做读写分离来分担系统压力,如果是主主复制还可以很好的避免主节点的单点故障.然而MySQL主主复制存在一些问题无法满足我们的实际需要:未提供统一访问入口来实现负 ...

随机推荐

  1. 自己写的一个多应用程序多目录的Makefile

    DIR_INC = ./includeDIR_SRC = ./srcDIR_OBJ = ./objDIR_BIN = ./binINCLUDES = -I${DIR_INC} -I.CC => ...

  2. [FATAL_ERROR] Uncaught PDOException: There is already an active transaction

    [FATAL_ERROR] Uncaught PDOException: There is already an active transaction ... $mysql->beginTran ...

  3. 新版 Spring下载方法

    1.百度 Spring 打开官方网站   http://spring.io/ 2.======================================= 3.================= ...

  4. [poj1088]滑雪(二维最长下降子序列)

    解题关键:记忆化搜索 #include<cstdio> #include<cstring> #include<algorithm> #include<cstd ...

  5. redis 有用 Sorted-Set 应用场景

    1.1.1Set数据类型的 使用场景 1.可以使用Redis的Set数据类型跟踪一些唯一性数据,比如访问某一博客的唯一IP地址信息.对于此场景,我们仅需在每次访问该博客时将访问者的IP存入Redis中 ...

  6. unreal3启动流程总结

    一.启动代码所在工程为Launch(win32),可为所有同一codebase项目共享. 但共享方式很不智能,是通过在源文件中添加大量#if/else条件编译宏来实现,即各项目在自己的工程中添加[程序 ...

  7. Struts2学习第四课 通过Aware接口获取WEB资源

    使用XxxAware接口 看代码: package logan.struts2.study; import java.util.Map; import org.apache.struts2.inter ...

  8. Sharepoint商务智能学习笔记之Powerpivot Service Dmeo(八)

    1)在Excel上添加Powerpivot工具栏 第一步,在Excel中启用Powerpivot 工具栏,新建一个空白Excel文件,在左上角点击文件,然后点击选项 2)使用Powerpivot添加数 ...

  9. 网络请求返回HTTP状态码(404,400,500)

    HTTP状态码(HTTP Status Code) 一些常见的状态码为: - 服务器成功返回网页 - 请求的网页不存在 - 服务不可用 所有状态解释: 1xx(临时响应) 表示临时响应并需要请求者继续 ...

  10. 远程控制Ubuntu系统小结

    一.在远程控制的Ubuntu上,按shift键总会出现中文字符 因为在Ubuntu中,默认启动搜狗输入法,导致在按shift键时,不停出现中文字符 一开始以为是因为远程控制,在主控机和被控机的输入法之 ...