一、双主双从架构介绍

  在MySQL多主多从的架构配置中和双主双从是一样的,学会了双主双从的架构部署,多主多从的配置也同样就回了。下面以双主双从作为示例演示。其中一个主机maste1用于处理所有写请求,它的从机slave1和另外一台主机master2还有它的从机salve2负责所有读数据请求,当master1主机宕机后,master2主机会立刻切换到负责写请求,master1和master2互为备机,架构如下:

  

二、双主双从主机配置

  四台MySQL主机,分别如下

  192.168.3.91:角色 master1, 启动服务Mycat,MySQL, 关闭防火墙

  192.168.3.92:角色 slave1, 启动服务MySQL,关闭防火墙

  192.168.3.93:角色 master2, 启动服务MySQL,关闭防火墙

  192.168.3.94:角色 slave2,  启动服务MySQL,关闭防火墙

  

  说明1:其中192,168.3.91即当MySQL服务器,又充当Mycat的服务器

三、master1节点配置

  3.1 修改mysql配置文件

    192.168.3.91这个台服务器当做双主中的一个,修改其配置文件如下:vim /etc/my.cnf

    

    说明1: server-id=1 是mysql集群服务中的唯一标识

    说明2:binlog-do-db是指定要主从复制的数据库,不指定默认是全部数据库都做主从复制

    说明3:在主服务器上要配置log-slave-updates因为当存在多个主服务器的时候,有可能会存在备用主机,备用主机也是需要通过binlog文件向自己的从机同步数据的,所以要开始log-slave-updates

  3.2 重启mysql

    

  3.3 创建用于主从复制的账号

    要进入mysql交互界面,注意不是进入Mycat 

# 创建一个mysql用户为houlei,并设置密码为:Se7eN521,该用户可以在任意主机连接该MySQL服务
mysql> create user 'houlei'@'%' identified with mysql_native_password by 'Se7eN521';
Query OK, 0 rows affected (0.03 sec)
# 为'houlei'@'%' 用户分配主从复制权限
mysql> grant replication slave on *.* to 'houlei'@'%';
Query OK, 0 rows affected (0.01 sec)

  3.4 查看二进制日志坐标    

    

四、master2节点配置

  4.1 修改mysql配置文件

    192.168.3.93这个台服务器当做双主中的另外一个,修改其配置文件如下:vim /etc/my.cnf

    

    说明1:这里的server-id=3

  4.2 重启mysql  

    

  4.3 创建用于主从复制的账号

    要进入mysql交互界面,注意不是进入Mycat 

# 创建一个mysql用户为houlei,并设置密码为:Se7eN521,该用户可以在任意主机连接该MySQL服务
mysql> create user 'houlei'@'%' identified with mysql_native_password by 'Se7eN521';
Query OK, 0 rows affected (0.03 sec)
# 为'houlei'@'%' 用户分配主从复制权限
mysql> grant replication slave on *.* to 'houlei'@'%';
Query OK, 0 rows affected (0.01 sec)

  4.4 查看二进制日志坐标

  

五、slave1节点配置

  5.1 修改配置文件

    slave1节点是192.168.3.92, 修改其配置文件如下 vim /etc/my.cnf

    

  5.2 重启mysql

    

  5.3 slave1关联master1

change master to master_host='192.168.3.91',master_user='houlei',master_password='Se7eN521',master_log_file='binlog.000010',master_log_pos=156;

    说明1:master_host是该从库关联的主库,slave1关联的事192.168.3.91这台master1

    说明2:master_user是关联账号,houlei这个账号是在master1中刚创建的账号,就是用来做主从复制使用的

    说明3:master_password是关联账号的密码

    说明4:master_log_file是开始主从复制的binlog文件名

    说明5:master_log_poss是binlog日志文件位置,这个参数是不用加引号或单引号的。

  5.4 启动slave1的主从复制

    

    说明6:start slave 开始主从复制

 

六、slave2节点配置

  6.1 修改配置文件

    slave2节点是192.168.3.94,修改其配置文件如下 vim /etc/my.cnf

    

  6.2 重启mysql

    

  6.3 slave2关联master2

change master to master_host='192.168.3.93',master_user='houlei',master_password='Se7eN521',master_log_file='binlog.000018',master_log_pos=156;

    说明1:master_host是该从库关联的主库,slave2关联的事192.168.3.93这台master2

    说明2:master_user是关联账号,houlei这个账号是在master1中刚创建的账号,就是用来做主从复制使用的

    说明3:master_password是关联账号的密码

    说明4:master_log_file是开始主从复制的binlog文件名

    说明5:master_log_poss是binlog日志文件位置,这个参数是不用加引号或单引号的。

    说明6:该语句是在slave2的mysql交互界面执行的

  6.4 启动slave2的主从复制

    

七、两台主库相互复制

  以上6章节我们等于部署了master1-slave1和master2-slave2两套一主一从,但是目前位置这两个一主一从还没有任何关系,所以接下来我们就要配置两台主机上的关联了。即master1复制master2的同时master2也复制master2.

  在master1上执行:

change master to master_host='192.168.3.93',master_user='houlei',master_password='Se7eN521',master_log_file='binlog.000018',master_log_pos=156;
 start slave;
show slave status\G;

  

  说明1:以上代码其实就是将master1配置为master2的从库  

  然后在master2上执行:

change master to master_host='192.168.3.91',master_user='houlei',master_password='Se7eN521',master_log_file='binlog.000010',master_log_pos=156;
start slave;
show slave status\G;

  

  说明2:以上代码其实就是将master2配置为master1的从库  

八、双主双从测试

  分别在两台主库master1,master2上执行DDL和DML语句,查看涉及到的数据库服务器的数据同步情况

  在master1上操作:

  8.1、创建数据库test_db1

mysql> create database test_db1;
Query OK, 1 row affected (0.01 sec)

    

    说明1:我们在192.168.3.91的master1主库上创建了数据库test_db1,然后再slave1,和master2,slave2上立刻就复制创建了test_db1出来

  2、我们在master2上的test_db1的数据库中创建一个tb_test表

    

    

create table tb_test(id int auto_increment primary key, name varchar(20));

    

    说明2:在master2上进行创建表同样会自动复制到master1和其他从表中

    说明3:至此双主双从算是配置好了

九、双主双从的读写分离

  Mycat控制后台数据库的读写分离和负载均衡有schema.xml文件中的dataHost标签的balance属性控制,通过writeType及switchType来完成失败自动切换的。

  9.1 配置schema.xml 

    

    说明1:在配置schema逻辑库的时候就要指定数据节点dataNode的值,因为如果逻辑库下的所有表都要实现读写分离,则不需要配置table标签

    说明2:dn1数据节点下对应的mysql的database为test_db1

    说明3:在dataHost标签的配置中要注意,balance值为"1",writeType值为"0",switchType的值为"1",解释如下:

    • balance="1": 关于balance所有值的解释在上一遍文章中有解释,需要的请通过合集找到上一篇文章查看,这里直接是balance="1"的情况:代表全部的readHost和备用主机的writeHost参与select语句的负载均衡,简单的说,当双主双从模式(master1->slave1,master2->slave2,并且master1和master2互为主备),正常情况下master2,slave1,slave2都要参与select语句的负载均衡
    • writeType:0:代表写操作都转发到第一台writerHost,writeHost1挂了,会切换到writeHost2上。1:代表所有写操作都随机的发送到配置的witerHost上
    • switchType:-1:代表不自动切换,1:代表自动切换

    说明4:双主双从即配置两个writeHost和readHost组合,如果是多主多从即配置多个writeHost和readHost组合即可。

  9.2 配置server.xml

    

    说明5:给root用户增加test_db1数据库的操作权限

  9.3 双主双从读写分离测试

    首先重启Mycat

    

    登录Mycat

    

    查看逻辑库和逻辑表

    

    插入测试数据

insert into tb_test(name) values ("张三");
insert into tb_test(name) values ("李四");
insert into tb_test(name) values ("王五");

    

    

    说明6:在Mycat中插入数据master1,slave1,master2,slave2中都添加了数据.

    查询数据测试:同样的直接查询我们是没办法确定查询的数据到底是来自哪里,所以我们还是修改从库中的数据,将slave1中的“张三”改了“张三s1”,将slave2中的“张三”改为“张三s2”

       

    

    说明7:查询结果是张三的说明数据来源master2

    说明8:查询结果是张三s1的说明数据来源是slave1

    说明9:查询结果是张三s2的说明数据来源是slave2

    说明10:以上测试说明了双主双从实现了读写分离

十、双主双从的高可用测试

  测试一台主机宕机下,双主双从是否可以继续运行。

  10.1、现将master1(192.168.3.91)的服务关闭

    

  10.2 进入Mycat进行增删改查测试

    

    说明1:仍然可以查询,说明可以进行读数据

    

    说明2:master1挂了的情况下,我们的双主双从架构的MySQL依然可读可写,所以高可用也没问题

    总结:在双主双从的基础上,多主多从同样的实现思路。

  

MySQL运维16-双主双从读写分离的更多相关文章

  1. Mysql + keepalived 实现双主热备读写分离【转】

    Mysql + keepalived 实现双主热备读写分离 2013年6月16日frankwong发表评论阅读评论   架构图 系统:CentOS6.4_X86_64软件版本:Mysql-5.6.12 ...

  2. Mysql双主加Keepalived+读写分离

    一.MySQL于keepalived简介** 前言: 在企业中,数据库高可用一直是企业的重中之重,中小企业很多都是使用mysql主从方案,一主多从,读写分离等,但是单主存在单点故障,从库切换成主库需要 ...

  3. mycat 1.6.6.1安装以及配置docker 安装mysql 5.7.24 双主多从读写分离主主切换

    mycat和mysql的高可用参考如下两个图 简介:应用程序仅需要连接HAproxy或者mycat,后端服务器的读写分离由mycat进行控制,后端服务器数据的同步由MySQL主从同步进行控制. 服务器 ...

  4. MySQL自动化安装(双主多从读写分离)

    shell #!/bin/bash # Create by # version 1.0 # // # # check out lockfile whether or not exist IsInput ...

  5. MySQL集群系列2:通过keepalived实现双主集群读写分离

    在上一节基础上,通过添加keepalived实现读写分离. 首先关闭防火墙 安装keepalived keepalived 2台机器都要安装 rpm .el6.x86_64/ 注意上面要替换成你的内核 ...

  6. mycat结合双主复制实现读写分离模式

    简介:应用程序仅需要连接mycat,后端服务器的读写分离由mycat进行控制,后端服务器数据的同步由MySQL主从同步进行控制. 本次实验环境架构图 服务器主机规划 主机名 IP  功能 备注 lin ...

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

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

  8. Mysql双主双从高可用集群的搭建且与MyCat进行整合

    1.概述 老话说的好:瞻前顾后.患得患失只会让我们失败,下定决心,干就完了. 言归正传,之前我们聊了Mysql的一主一从读写分离集群的搭建,虽然一主一从或一主多从集群解决了并发读的问题,但由于主节点只 ...

  9. 高可用Mysql架构_Mycat集群部署(HAProxy + 两台Mycat+Mysql双主双从)

    既然大家都知道了Mysql分布式在大型网站架构中的作用,在这里就不再阐述.本片博客文章是基于我曾经搭建过的一个Mysql集群基础上实现的,实现过双主热备.读写分离.分库分表. 博客链接:http:// ...

  10. RocketMQ学习笔记(16)----RocketMQ搭建双主双从(异步复制)集群

    1. 修改RocketMQ默认启动端口 由于只有两台机器,部署双主双从需要四个节点,所以只能修改rocketmq的默认启动端口,从官网下载rocketmq的source文件,解压后使用idea打开,全 ...

随机推荐

  1. [译]这几个CSS小技巧,你知道吗?

    前言 在网页设计和前端开发中,CSS属性是非常重要的一部分.掌握常用的CSS属性不仅可以使你的网页看起来更美观,还能提升用户体验,今天小编为大家介绍8个常见的CSS小技巧: 1.修改滚动条样式 下图是 ...

  2. 4.go语言复合类型简述

    目录 1. 本章前瞻 2.来自leetcode的例题 描述 分析 题解 3. 复合类型新版本的变化 3.1 string和[]byte的高效转化 3.2 内置函数clear 4. 复合类型概述 4.1 ...

  3. C# Wke使用例子 (KyozyWke)

    概述 wke是国人大牛BlzFans封装的webkit, 基于chrome浏览器源代码的裁剪版本, 大小只有仅仅10M. 无需依赖其他的扩展库就可以在本地使用谷歌内核快速加载网页. wke是2011年 ...

  4. 【Python爬虫】python打印本地代理

    在进行网络爬虫时,使用代理是非常重要的.因为爬虫经常会被网站封 IP,而代理可以隐藏你的真实 IP 地址,让你可以更不受限制地爬取数据.本文将介绍如何在 Python 中打印代理,包括代理 IP 的使 ...

  5. mpi转以太网连接300PLC与施耐德 Quantum PLC 通讯

    S7300 PLC转以太网无需编程与施耐德 Quantum PLC modbusTCP通信 方案介绍: 西门子300PLC转以太网不需要编写程序通过兴达易控MPI-ETH-XD1.0与施耐德 Quan ...

  6. 2020 ICPC 南京站

    gym A. Ah, It's Yesterday Once More 有趣的题,但场上的人恐怕不会这么想( 构造一条长路径,且拐弯处在不同边界.这样每条竖线合并后都在一边,还需要走一遍才能合并到一起 ...

  7. stm32开发笔记

    STM32F103C8T6单片机简介 标准库与HAL库区别 寄存器 寄存器众多,需要经常翻阅芯片手册,费时费力: 更大灵活性,可以随心所欲达到自己的目的: 深入理解单片机的运行原理,知其然更知其所以然 ...

  8. ptaCCF

    返回首页 English站点地图联系我们常见问题CCF招聘登录 加入CCF 计算机 CCF简介   中国计算机学会(CCF)成立于1962年,全国性学会,独立社团法人,中国科学技术协会成员. CCF是 ...

  9. 外层div随内层div高度自适应

    首先说一下textarea的高度随文字的内容自适应,用div模拟textarea.直接看代码.其中 contenteditable="true"表示div可以编辑..主要是设置 o ...

  10. MAC安装pwntools记录

    1.使用python3安装pwntools pip3 install pwntools 2.安装成功后测试 测试不成功提示安装 binutils pwnlib.exception.PwnlibExce ...