MyCat读写分离

article/2025/9/9 2:25:05

一、MyCat读写分离

  • 数据库读写分离对于大型系统或者访问量很高的互联网应用来说,是必不可少的一个重要功能。对于MySQL来说,标准的读写分离是主从模式,一个写节点Master后面跟着多个读节点,读节点的数量取决于系统的压力,通常是1-3个读节点的配置

  • MySQL主从复制

  • 主从配置需要注意的地方:

    • 主DB server和从DB server数据库的版本一致

    • 主DB server和从DB server数据库数据一致【这里就会可以把主的备份在从上还原,也可以直接将主的数据目录拷贝到从的相应数据目录】

    • 主DB server开启二进制日志,主DB server和从DB server的server_id都必须唯一

二、MySQL主服务器配置

  • 第一步:修改my.cnf文件,在主服务器上
    • 在[mysqld]段下添加:
# 往哪个数据库中进行增删改查
binlog-do-db=db1binlog-ignore-db=mysql# 启用二进制日志
log-bin=mysql-bin# 服务器唯一ID,一般取IP最后一段
server-id=134
  • 第二步:重启mysql服务

    • systemctl restart mysqld.service

  • 第三步:建立帐户并授权slave【创建一个账号,来供从服务器来访问主服务器

# 创建账号
mysql> GRANT FILE ON *.* TO 'backup'@'%' IDENTIFIED BY '123456';
# 授权
mysql> GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* to 'backup'@'%' identified by '123456'; 
# 一般不用root帐号,“%”表示所有客户端都可能连,只要帐号,密码正确,此处可用具体客户端IP代替,如192.168.145.226,加强安全。# 刷新权限
mysql> FLUSH PRIVILEGES;# 查看mysql现在有哪些用户
mysql> select user,host from mysql.user;
  •  
  • 第四步:查询master的状态

    • ​​​​​​​mysql> show master status;

三、从服务器配置

  • 第一步:修改my.conf文件,在从服务器上

    • ​​​​​​​在[mysqld]段下添加:

      • server-id=166

  • ​​​​​​​​​​​​​​​​​​​​​​​​​​​​第二步:配置从服务器

mysql> change master to master_host='192.168.25.134',master_port=3306,master_user='backup',master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=120;
# 注意语句中间不要断开,master_port为mysql服务器端口号(无引号),master_user为执行同步操作的数据库账户,“120”无单引号(此处的120就是show master status 中看到的position的值,这里的mysql-bin.000001就是file对应的值)。
  •  ​​​​​​​​​​​​​​第三步:启动从服务器复制功能
    • ​​​​​​​mysql> start slave;
  • ​​​​​​​第四步:检查从服务器复制功能状态
    • ​​​​​​​mysql> show slave status;

四、MyCat的配置

  • Mycat 1.4 支持MySQL主从复制状态绑定的读写分离机制,让读更加安全可靠,配置如下:
<dataNode name="dn1" dataHost="localhost1" database="db1" /><dataNode name="dn2" dataHost="localhost1" database="db2" /><dataNode name="dn3" dataHost="localhost1" database="db3" /><dataHost name="localhost1" maxCon="1000" minCon="10" balance="1"writeType="0" dbType="mysql" dbDriver="native" switchType="2"  slaveThreshold="100"><heartbeat>show slave status</heartbeat><writeHost host="hostM" url="192.168.25.134:3306" user="root"password="root"><readHost host="hostS" url="192.168.25.166:3306" user="root"password="root" /></writeHost></dataHost>
  • Balance参数设置:

    • ​​​​​​​balance=“0”, 所有读操作都发送到当前可用的writeHost上。

    • balance=“1”,所有读操作都随机的发送到readHost。

    • balance=“2”,所有读操作都随机的在writeHost、readhost上分发。

  • WriteType参数设置:

    • ​​​​​​​writeType=“0”, 所有写操作都发送到可用的writeHost上。

    • writeType=“1”,所有写操作都随机的发送到readHost。

    • writeType=“2”,所有写操作都随机的在writeHost、readhost分上发。

  • “readHost是从属于writeHost的,即意味着它从那个writeHost获取同步数据,因此,当它所属的writeHost宕机了,则它也不会再参与到读写分离中来,即“不工作了”,这是因为此时,它的数据已经“不可靠”了。基于这个考虑,目前mycat 1.3和1.4版本中,若想支持MySQL一主一从的标准配置,并且在主节点宕机的情况下,从节点还能读取数据,则需要在Mycat里配置为两个writeHost并设置banlance=1。”

  • ​​​​​​​switchType 目前有三种选择:

    • ​​​​​​​-1:表示不自动切换

    • 1 :默认值,自动切换

    • 2 :基于MySQL主从同步的状态决定是否切换

  • “Mycat心跳检查语句配置为 show slave status ,dataHost 上定义两个新属性: switchType="2" 与slaveThreshold="100",此时意味着开启MySQL主从复制状态绑定的读写分离与切换机制。Mycat心跳机制通过检测 show slave status 中的 "Seconds_Behind_Master", "Slave_IO_Running", "Slave_SQL_Running" 三个字段来确定当前主从同步的状态以及Seconds_Behind_Master主从复制时延。“


http://chatgpt.dhexx.cn/article/TyN5uXsL.shtml

相关文章

MySQL-Mycat读写分离

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 MySQL-Mycat读写分离 一、读写分离1.什么是读写分离2.读写分离的好处 Mycat是什么&#xff1f;架构 部署环境部署mycat补充 启动mycat启动报错 测试客户端连接报错 总结原理及…

读写分离时mycat不能链接mysql_Mycat读写分离配置实践

Mycat读写分离配置实践 发布时间&#xff1a;2020-08-16 01:08:20 来源&#xff1a;ITPUB博客 阅读&#xff1a;81 作者&#xff1a;jeanron100 工作这些年来&#xff0c;也去了一些地方&#xff0c;有了一些见闻&#xff0c;隐隐感觉很多文化和猫有着千丝万缕的联系。就拿IT行…

Mycat读写分离的简单实现

文章目录 1、Mycat读写分离的配置1.1、Mycat是什么1.2、Mycat能干什么1.2.1、数据库的读写分离1.2.1.1、数据库读写分离图解 1.2.2、数据库分库分表1.2.2.1、水平拆分&#xff08;分库&#xff09;1.2.2.2、垂直拆分&#xff08;分表&#xff09; 1.3、Mycat的搭建1.3.1、前期准…

mycat读写分离配置

为什么使用MyCat 如今随着互联网的发展&#xff0c;数据的量级也是撑指数的增长&#xff0c;从GB到TB到PB。对数据的各种操作也是愈加的困难&#xff0c;传统的关系性数据库已经无法满足快速查询与插入数据的需求。这个时候NoSQL的出现暂时解决了这一危机。它通过降低数…

实现mycat读写分离

前言 众所周知&#xff0c;随着用户量的增多&#xff0c;数据库操作往往会成为一个系统的瓶颈所在&#xff0c;而且一般的系统“读”的压力远远大于“写”&#xff0c;因此我们可以通过实现数据库的读写分离来提高系统的性能。 基础知识 要实现读写分离&#xff0c;就要解决主…

Mycat 读写分离实战

Mycat读写分离实战 一、主从复制搭建 1.实验环境 搭建一主一从的部署架构&#xff0c;master&#xff08;主库&#xff09;运行在阿里云服务器 47.108.136.201&#xff0c;slave&#xff08;从库&#xff09;运行在 IP 地址为 12.168.149.128 的Ubuntu虚拟机中两台机器均安装…

mycat-读写分离

简介&#xff1a; 主从复制的工作机制&#xff1a; ① Master将改变记录到二进制日志&#xff08;binary log&#xff09;中&#xff0c;这些记录叫做二进制日志事件&#xff08;binary log events&#xff09;&#xff1b; ② Slave将master的binary log events拷贝到它的中继…

使用mycat进行读写分离

目录 一、读写分离 1.1、什么是读写分离 1.2、为什么要用读写分离 1.3、使用mycat读写分离 1.3.1安装mycat 1.3.2、配置mycat 简单的理解&#xff0c;mycat就是一个数据中间件&#xff0c;可以让开发人员直接访问mycat&#xff0c;然后由mycat去访问具体的数据库服务器&a…

数据库:mycat实现读写分离

目录 一、mycat 1、mycat实现读写分离原理 2、mycat应用场景 3、mycat作用 4、mycat实现读写分离实战 一、mycat 1、mycat实现读写分离原理 ①用户进行读操作则由mycat转给配置的从数据库。 ②用户进行写操作则由mycat转给配置的主数据库。 ③转发规则由mycat配置文件中…

mycat实现读写分离

1、在本地复制多一个数据库&#xff08;有条件拥有多个服务器的忽略&#xff09; 1&#xff09;找到mysql实例文件夹和数据文件夹&#xff08;通常在C:\Program Files下和C:\ProgramData下&#xff09; 直接都复制一份出来做从库 2&#xff09;修改从库配置my.ini [client]…

汉诺塔递归算法(Python编程)

一、问题描述。 汉诺塔是学习计算机递归算法的经典入门案例&#xff0c;是一个数学难题。其问题为如何将所有圆盘从A移动到C&#xff0c;要求一次只能移动一个盘子&#xff0c;盘子只能在3个标杆&#xff08;A/B/C&#xff09;之间移动&#xff0c;更大的盘子不能放在更小的盘子…

汉诺塔递归调用(C语言实现)

预备知识 1.递归算法 递归算法&#xff1a;是一种直接或者间接地调用自身的算法。在计算机编写程序中&#xff0c;递归算法对解决一大类问题是十分有效的&#xff0c;它往往使算法的描述简洁而且易于理解。 递归过程一般通过函数或子过程来实现。 递归算法的实质&#xff1…

python实现汉诺塔递归算法超详细过程

python实现汉诺塔递归算法 def hanoi(n, x, y, z):if n 1:print(x, -->, z)else:hanoi(n-1, x, z, y)print(x, -->, z)hanoi(n-1, y, x, z)n int(input(请输入层数&#xff1a;)) hanoi(n, x, y, z) if n 1: #如果n等于1时print(x, -->, z) #直接将x移…

多图详解汉诺塔递归实现思路--含实现代码

前言 为了节约大家的时间&#xff0c;本文对汉诺塔的定义就不做赘述了&#xff0c;如果有小伙伴不清楚汉诺塔的规则可以直接点蓝字跳转过去。 本篇博客内容 汉诺塔实现的思路用递归的方式实现汉诺塔 汉诺塔实现的思路 我们先以两个瓷盘为例&#xff1a; 由于小瓷盘1位于顶部&a…

汉诺塔递归算法C++实现

算法介绍 其实算法非常简单&#xff0c;当盘子的个数为n时&#xff0c;移动的次数应等于2^n – 1&#xff08;有兴趣的可以自己证明试试看&#xff09;。后来一位美国学者发现一种出人意料的简单方法&#xff0c;只要轮流进行两步操作就可以了。首先把三根柱子按顺序排成品字型…

汉诺塔递归算法(C语言)

汉诺塔递归算法 一、引言二、解决汉诺塔问题&#xff08;1&#xff09;递归算法 三、C语言实现&#xff08;1&#xff09;代码实现&#xff08;2&#xff09;算法思想 四、结论 一、引言 汉诺塔问题是一个经典的数学谜题&#xff0c;它是在印度流传下来的&#xff0c;传说中有…

汉诺塔递归调用

1.递归算法 递归算法&#xff1a;是一种直接或者间接地调用自身的算法。在计算机编写程序中&#xff0c;递归算法对解决一大类问题是十分有效的&#xff0c;它往往使算法的描述简洁而且易于理解。 递归过程一般通过函数或子过程来实现。 递归算法的实质&#xff1a;是把问题转…

汉诺塔递归的空间复杂度_算法之美:解读递归算法原理和效率

对于很多人来说,都知道递归,也能看的懂递归,但在实际项目过程中,却不知道如何使用递归,这里给递归做个总结。 递归的定义 在数学与计算机科学中,递归(Recursion)是指在函数的定义中使用函数自身的方法。实际上,递归,顾名思义,其包含了两个意思:递和归,这正是递归思想…

汉诺塔递归问题的分析与Python实现

背景 相传在古印度圣庙中&#xff0c;有一种被称为汉诺塔(Hanoi)的游戏。该游戏是在一块铜板装置上&#xff0c;有三根杆(编号A、B、C)&#xff0c;在A杆自下而上、由大到小按顺序放置64个金盘(如图)。游戏的目标&#xff1a;把A杆上的金盘全部移到C杆上&#xff0c;并仍保持原…

汉诺塔递归算法/搬金盘的婆罗门 - Python实现

汉诺塔递归算法/搬金盘的婆罗门 - Python实现 本文引用自作者编写的下述图书; 本文允许以个人学习、教学等目的引用、讲授或转载&#xff0c;但需要注明原作者"海洋饼干叔 叔"&#xff1b;本文不允许以纸质及电子出版为目的进行抄摘或改编。 1.《Python编程基础及应用…