码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • MySQL运维16-双主双从读写分离


    合集 - mysql(39)
    1.侯哥的Python分享2019-04-162.MySQL基础1-关系型数据库与非关系型数据库2022-03-173.MySQL基础2-数据库及表的操作2022-03-174.MySQL基础3-数据库增删改操作2022-03-175.MySQL基础4-数据查询2023-07-176.MySQL基础5-用户及权限管理2023-07-187.MySQL基础6-常用数据库函数2023-07-188.MySQL基础7-约束2023-07-209.MySQL基础8-多表查询2023-07-2110.MySQL基础9-事务基础2023-08-3111.MySQL高级1-存储引擎2023-07-2412.MySQL高级2-SQL性能分析2023-07-2713.MySQL高级3-索引的结构和分类2023-07-2714.MySQL高级4-索引的使用规则2023-07-2815.MySQL高级5-SQL优化2023-07-3116.MySQL高级6-视图2023-07-3117.MySQL高级7-存储过程2023-08-1418.MySQL高级8-触发器2023-08-1719.MySQL高级9-锁2023-09-0420.MySQL高级10-InnoDB引擎存储架构2023-09-1921.MySQL高级11-后台进程2023-09-2022.MySQL高级12-事务原理 2023-09-2023.MySQL高级13-MySQL管理工具2023-09-2124.MySQL运维1-日志2023-09-2525.MySQL运维2-主从复制2023-09-2726.MySQL运维3-分库分表策略2023-12-1227.MySQL运维4-Mycat入门2023-12-1428.MySQL运维5-Mycat配置2023-12-1429.MySQL运维6-Mycat分库分表之垂直分库2023-12-1730.MySQL运维7-Mycat分库分表之取模分片2023-12-1831.MySQL运维8-Mycat分库分表之范围分片2023-12-1832.MySQL运维9-Mycat分库分表之枚举分片2023-12-1833.MySQL运维10-Mycat分库分表之一致性哈希分片2023-12-1934.MySQL运维11-Mycat分库分表之应用指定分片2023-12-1935.MySQL运维12-Mycat分库分表之按天分片2023-12-2036.MySQL运维13-Mycat分库分表之按月分片2023-12-2037.MySQL运维14-管理及监控工具Mycat-web的安装配置2023-12-2138.MySQL运维15-一主一从读写分离2023-12-25
    39.MySQL运维16-双主双从读写分离2023-12-25
    收起

    阅读目录

    • 一、双主双从架构介绍
    • 二、双主双从主机配置
    • 三、master1节点配置
    • 四、master2节点配置
    • 五、slave1节点配置
    • 六、slave2节点配置
    • 七、两台主库相互复制
    • 八、双主双从测试
    • 九、双主双从的读写分离
    • 十、双主双从的高可用测试

    一、双主双从架构介绍

      在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依然可读可写,所以高可用也没问题

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

     

     

     

      

     

  • 相关阅读:
    计算机网络篇 | 走进计算机网络
    spring boot3单模块项目工程搭建-下(个人开发模板)
    深入理解Lucene:开源全文搜索引擎的核心技术解析
    FastJson远程命令执行漏洞学习笔记
    Kubernetes-in-action (一)
    linux 应用中offsetof ()是个啥?
    抗疫众志成城网页设计成品 抗击疫情感动人物网页制作模板 大学生抗疫静态HTML网页源码 dreamweaver网页作业致敬逆行者网页设计作品
    区块链通证的分类(各种分类一览表)
    原生AJAX
    逆变器孤岛检测及其测试方法
  • 原文地址:https://www.cnblogs.com/Se7eN-HOU/p/17926983.html
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号