首页 > 数据库 >Mysql-Mycat集群

Mysql-Mycat集群

时间:2023-05-12 14:34:09浏览次数:46  
标签:xml 数据库 MySQL 192.168 mycat 集群 Mysql Mycat 读写

读写分离基本概念

MySQL 虽然是世界上使用最广泛的免费数据库,但是并不能满足实际的一个需求,在高并发高可用等方面。我们主要是通过主从复制来同步数据,再通过读写分离来提升数据库的并发能力。

工作原理

  • 主数据库上执行写操作,并将写操作的结果同步到所有从数据库
  • 从数据库上只处理读请求,不处理写请求。应用程序根据负载均衡算法将读请求路由到从数据库上,并将写请求路由到主数据库上。
  • 主从数据库之间通过异步复制或同步复制等方式进行数据同步

读写分离的意义

  1. 降低主数据库负载:读操作通常比写操作频繁,将它们分开可以将主数据库的读负载分散到多个从数据库上,减轻主数据库的负载压力,从而提高系统的性能。

  2. 提高系统的吞吐量:读写分离可以将读操作分散到多个从数据库上,从而提高系统的吞吐量,满足高并发访问的需求。

  3. 提高系统的可伸缩性:读写分离可以根据实际的负载情况动态地增加从数据库的数量,以提高系统的可伸缩性,保障系统的稳定性。

  4. 提高系统的可用性:读写分离可以实现多个从数据库的自动切换,从而提高系统的可用性,确保系统的稳定性。

实现读写分离的方式

应用层实现

中间件实现

Mycat 中间件

基本概念

  1. 项目地址: Mycat2 github
  2. 由来
    • Cobar:阿里巴巴 B 2 B 开发的关系型分布式系统,管理将近 3000 个 MySQL 实例。在阿里经受住了考验,后面由于作者的走开的原因 cobar 没有人维护了,阿里也开发了 tddl 替代 cobar。
    • MyCAT: 社区爱好者在阿里 cobar 基础上进行二次开发,解决 cobar 当时存在的一些问题,并且加入了许多新的功能在其中。目前 MyCAT 社区活跃度很高,目前已经有一些公司在使用 MyCAT。总体来说支持度比较高,也会一直维护下去,
  3. 优势
  • 一个彻底开源的,面向企业应用开发的大数据库集群
  • 支持事务、ACID、可以替代 MySQL 的加强版数据库
  • 一个可以视为 MySQL 集群的企业级数据库,用来替代昂贵的 Oracle 集群
  • 一个融合内存缓存技术、NoSQL 技术、HDFS 大数据的新型 SQL Server
  • 结合传统数据库和新型分布式数据仓库的新一代企业级数据库产品
    image.png

部署 mycat

拓扑图

image.png

基础环境准备

  1. [[10-MySQL Replication Structure#环境准备]]
  2. 三台主机绑定 hosts
vim /etc/hosts
192.168.45.10 mysql-0
192.168.45.11 mysql-1
192.168.45.12 mysql-2
  1. 完成一主多从搭建:[[10-MySQL Replication Structure#一主一从M-S|参考]]

安装 mycat

  1. 上传软件包,配置 Java 环境
     
tar -zxvf jdk-8u171-linux-x64.tar.gz -C /usr/local/
vim /etc/profile
JAVA_HOME=/usr/local/jdk1.8.0_171 
PATH=$JAVA_HOME/bin:$PATH
CLASSPATH=$JAVA_HOME/jre/lib/ext:$JAVA_HOME/lib/tools.jar 
export PATH JAVA_HOME CLASSPATH
source /etc/profile
java -version

 
2. Mycat 初始化 

tar -zxvf Mycat-server-1.6.6.1-release-20181031195535-linux.tar.gz -C /usr/local/
ln -s /usr/local/mycat/bin/* /usr/local/bin/

Mycat 配置文件调整

调整 Server.xml

在调整配置文件前需备份配置文件

cd /usr/local/mycat/conf/
cp server.xml server.xml.bak
vim server.xml

image.png

这里是配置 mycat 的两个用户及其密码。

<property name="schemas">TESTDB</property>

逻辑库名: 是登录 mycat 后显示的库名,切换这个库之后,显示的就是代理的真实 mysql 数据库的表

调整 schema.xml

  1. 相关名词
  • Schema 逻辑数据库设置,名字与 server.xmlschema 对应。
  • DataNode  分片信息,也就是分库相关配置。
  • DataHost   物理数据库,真正存储数据的数据库。
  1. 文件调整
cp schema.xml schema.xml.bak
vim schema.xml
<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">

        <schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100" dataNode='dn1'>
        </schema>
        <dataNode name="dn1" dataHost="dn1" database="learn" />
        <dataHost name="dn1" maxCon="1000" minCon="10" balance="1"
                          writeType="0" dbType="mysql" dbDriver="native" switchType="-1"  slaveThreshold="100">
                <heartbeat>select user()</heartbeat>
                <writeHost host="mysql-0" url="192.168.45.10:3306" user="root" password="123456">
                </writeHost>
                <writeHost host="mysql-1" url="192.168.45.11:3306" user="root" password="123456">
                </writeHost>
                <writeHost host="mysql-2" url="192.168.45.12:3306" user="root" password="123456">
                </writeHost>
        </dataHost>
</mycat:schema>

参数解释

log4j2.xml 日志文件

vim log4j2.xml

image.png

<asyncRoot level="trace" includeLocation="true">

赋权所有 MySQL 服务器登陆权限

利用 xshell 统一发送命令
image.png

grant all on *.* to root@'192.168.45.%' identified by '123456';
flush privileges;

开启 mycat

自检

mycat console

^a98e01

image.png

  • 报错

Caused by: org. Xml. Sax. SAXParseException; lineNumber: 5; columnNumber: 80; 必须为元素类型 "schema" 声明属性 "datanode"。

  • 原因
    image.png

N 字母必须为大写

<schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100" dataNode='dn1'>
  • 重新执行[[11-MySQL 读写分离&mycat#^a98e01|检测]]命令,检测 OK
    image.png

启动 mycat

  1. Root 用户测试
mycat start
ss -antup | grep 8066
mysql -uroot -p123456 -P 8066 -h 192.168.45.10 -e "show databases;"
  1. Usesr 用户测试

mysql -uroot -p123456 -P 8066 -h 192.168.45.10 -e "show databases;"

#### 模拟故障测试
- 关闭 Master 服务,查看能否正常读
- 关闭 Slave 服务,查看能否正常读写

标签:xml,数据库,MySQL,192.168,mycat,集群,Mysql,Mycat,读写
From: https://www.cnblogs.com/lhang/p/17394039.html

相关文章

  • Ubuntu下开启MySQL远程连接权限
    一、将用户的访问地址改为%打开终端登录mysql数据库:mysql-uroot-p查看user表mysql> usemysql;Databasechangeedmysql>selecthost,user,authentication_stringfromuser;注意此处网上很多教程写的是password,那是老版的了,现在的MySQL的mysql数据库的user表中已经没......
  • MySQL之redo日志
    一、redo日志简介在事务的实现机制上,MySQL采用的WAL(Write-aheadlogging,预写式日志)机制来实现的,所有的修改都先被写入到日志中,然后再被应用到系统中,通常包含redo和undo两部分信息。redolog称为重做日志,每当有操作时,在数据变更之前将操作写入redolog,这样当发生掉电之类的情况时系......
  • MySQL忘记密码
    如下1、先停止服务servicemysqldstop停止2、修改配置linux修改命令:vi/etc/my.cnfwindows系统是my.ini文件手动添加在文件最后加上:skip-grant-tables3、重启服务servicemysqldstart启动4、输入命令:mysql,回车,进入mysql执行窗口,或者输入:mysql-uroot-p,......
  • mysql主从复制(gtid模式)修改主库ip
    环境:OS:Centos7DB:mysql5.7.29 基于GTID复制的主从环境,主库修改了ip后,修改从库同步信息(不需要指定master_log_file和master_log_pos)1.停掉从库stopslave; 2.查看从库状态mysql>showslavestatus\G;***************************1.row*********************......
  • 常用mysql语句.md
    0.背景记录下常用的Mysql语句,持续更新,方便复制。1.实例--查看建表语句showcreatetablevar1;--查看表中的字段信息showfullcolumnsfromvar1;--查看那些表里有batch_id这个字段selecttable_schema,table_namefrominformation_schema.columnswherecolumn_n......
  • MySQL好玩新特性:离线模式
    GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源。GreatSQL是MySQL的国产分支版本,使用上与MySQL一致。作者:Yejinrong/叶金荣文章来源:GreatSQL社区原创继续吹MySQL8.0~在以前,当需要对MySQL数据库进行维护操作时,通常需要先进行主从切换,然后修改设置并......
  • liunx安装mysql的启动,查看状态命令
    找到mysql.server文件复制mysql.server文件到/etc/init.d/目录下,重命名为mysql查看mysqldstatus状态   使用命令1:servicemysqlstatus 命令1:servicemysqlstatusSUCCESS!MySQLrunning(9954) 命令2:systemctlstatusmysqld●mysqld.service-LSB:sta......
  • mysql:安装phpmyadmin(phpMyAdmin 5.2.1 / PHP 8.2.5 / mysqld 8.0.33)
    一,下载phpmyadmin:官网:https://www.phpmyadmin.net/如图: 注意不同版本的环境需求可以得到下载地址后直接在linux上wget[root@imgphpmyadmin]#wgethttps://files.phpmyadmin.net/phpMyAdmin/5.2.1/phpMyAdmin-5.2.1-all-languages.zip解压:[root@imgphpmyadm......
  • MySQL外键约束和多表查询
    外键约束和多表查询一、外键是什么图解![image-20230429113839805](file://D:\大数据基础班\03_随堂资料\day05\笔记\day05_外键约束和多表查询.assets\image-20230429113839805.png?lastModify=1683721071)知识点外键:多个表之间的关联字段特点1:从表外键的值是对主表主......
  • Linux下安装MySQL数据库
    系统:Centos7安装MySQL版本:8.0.32安装方式:压缩包MySQL官网下载https://downloads.mysql.com/archives/community/ 一、检查是否安装过msyql和mariadb数据库rpm-qa|grepmysqlrpm-qa|grepmariadb如果存在的话使用命令卸载:rpm-e--nodeps  二、安装mys......