MySQL-Mycat安装配置

12 篇文章 0 订阅

说明

  • Linux-Mycat安装配置,实现MySQL主从复制+读写分离。
  • 本案例默认你已经安装好了MySQL主从复制,具体参考我的相关文章。
  • Mycat单独一台服务器,MySQL主从各一台服务器,总共三台服务器。
    • MySQL主服务器:192.168.3.201
    • MySQL从服务器:192.168.3.202
    • Mycat服务器:192.168.3.205

操作步骤

》环境准备

  • 配置好的MySQL主从服务器各一台
  • 另一台服务器用来装Mycat,Mycat是Java项目,要求这台服务器必须安装JDK,具体可以搜索参照我的相关文章。

》安装Mycat

  • 下载:https://github.com/MyCATApache/Mycat-Server/releases/

  • 下载的安装包:

    [root@192 Mycat]# ll
    total 21512
    -rw-r--r--. 1 501 games 21760812 Jan 28 11:52 Mycat-server-1.6.7.4-release-20200105164103-linux.tar.gz
    
  • 解压即可:

    [root@192 Mycat]# tar -zxvf Mycat-server-1.6.7.4-release-20200105164103-linux.tar.gz
    [root@192 Mycat]# mv mycat /usr/local/
    [root@192 Mycat]# cd /usr/local/mycat/
    [root@192 mycat]# ll
    total 12
    drwxr-xr-x. 2 501 games  190 Jan 29 00:36 bin
    drwxr-xr-x. 2 501 games    6 Oct 22  2019 catlet
    drwxr-xr-x. 4 501 games 4096 Jan 29 00:36 conf
    drwxr-xr-x. 2 501 games 4096 Jan 29 00:36 lib
    drwxr-xr-x. 2 501 games    6 Jan  5  2020 logs
    -rwxr-xr-x. 1 501 games  227 Jan  5  2020 version.txt
    

》配置Mycat

  • 配置文件位于:conf目录下

  • 修改配置文件 server.xml:

    [root@192 conf]# vi server.xml
    ...
    <user name="root" defaultAccount="true">
        <property name="password">123456</property>
        <property name="schemas">master_slave_001</property>
        <property name="defaultSchema">master_slave_001</property>
        <!--No MyCAT Database selected 错误前会尝试使用该schema作为schema,不设置则为null,报错 -->
        <!-- 表级 DML 权限设置 -->
        <!--
        <privileges check="false">
            <schema name="TESTDB" dml="0110" >
                <table name="tb01" dml="0000"></table>
                <table name="tb02" dml="1111"></table>
            </schema>
        </privileges>
    	-->
    </user>
    ...
    
    • 配置说明:
      • root:连接Mycat的用户名,相当于MySQL的用户名
      • password:连接Mycat的密码,相当于MySQL的密码
      • schemas和defaultSchema:Mycat的虚拟库名,对应MySQL的真实库名。
        • 两边最好一致,否则一些MySQL客户端(比如Navicat)连接时会报错:Table 'TESTDB.tb001' doesn't exist
  • 修改配置文件schema.xml(这个文件改动较大,先备份):

    [root@192 conf]# cp schema.xml schema.xml.default
    
    [root@192 conf]# vi schema.xml
    <?xml version="1.0"?>
    <!DOCTYPE mycat:schema SYSTEM "schema.dtd">
    <mycat:schema xmlns:mycat="http://io.mycat/">
        <!-- 
    	schema:          虚拟库与真实库的映射 
    	——name:          虚拟库的名字,对应在server.xml中设置的schemas
    	——sqlMaxLimit:   允许最大查询记录数
    	——checkSQLschema:是否检查自动删除 “虚拟库名”
    	——dataNode:      虚拟库对应的真实database,对应<dataNode>标签的name
    	-->
    	<schema name="master_slave_001" checkSQLschema="false" sqlMaxLimit="100" dataNode="dataNode001">
            <!-- 
    		table:     虚拟表配置
    		——name:    表名
    		——dataNode:表对应的分片。如果做分片,则配置多个用逗号分隔;或者使用db$0-99,代表db0到db99的database
    		——rule:    分片规则,如果没有则删除
    		-->
            <!-- 
    		<table name="tb_item" dataNode="dn1" rule="sharding-by-mod2"/> 
    		-->
    	</schema>
    	<!-- 
    	dataNode:  数据库分片,每一个dataNode就是一个数据库分片
    	——name:    分片名称
        ——dataHost:真实库的主机信息,对应<dataHost>标签的name
    	——database:真实MySQL中真实的物理数据库名称
    	-->
    	<dataNode name="dataNode001" dataHost="dataHost001" database="master_slave_001" />
    	<!-- 
    	dataHost:    真实库的主机信息
    	——name:      主机名
    	——maxCon:    最大连接
    	——minCon:    最小连接
    	——balance:   负载均衡方式,0不开启读写分离。1~3都开启,具体看下边详细说明
    	——writeType: 写负载均衡。永远设置0
    	——dbDriver:  驱动类型,推荐native,可选jdbc
    	——switchType:主从的自动切换,1=自动切换,-1=不自动切换,2=基于MySQL主从同步的状态决定是否切换,默认1
    	-->
    	<dataHost name="dataHost001" maxCon="1000" minCon="10" balance="3" writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
    		<heartbeat>select user()</heartbeat>
            <!-- can have multi write hosts -->
    		<writeHost host="writeHost001" url="192.168.3.201:3306" user="root" password="rootroot">
    			<readHost host="readHost001" url="192.168.3.202:3306" user="root" password="rootroot" />
    		</writeHost>
    	</dataHost>
    </mycat:schema>
    
    • schema.name(虚拟库名)的两种方案:
      • 方案一:虚拟库名和MySQL中的真实库名保持一致,这样不需要定义可访问的表就能访问所有真实库中的表。
      • 方案二:虚拟库名和MySQL中的真实库名不一样,然后在schema标签中定义可访问的表。
      • 如果选择第二种方案,未定义可访问表时,查询会出现 Table 'TESTDB.tb001' doesn't exist错误。
    • dataHost.balance(负载均衡方式)详细说明:
      • balance=“0”:不开启读写分离机制,所有读操作都发送到当前可用的 writeHost 上。
      • balance=“1”:全部的readHost 与 stand by writeHost 参与 select 语句的负载均衡。简单的说,适用于双主双从模式(M1->S1,M2->S2,并且M1与M2互为主备)。正常情况下,M2,S1,S2 都参与 select 语句的负载均衡。
      • balance=“2”:所有读操作都随机的在 writeHost、readhost 上分发。
      • balance=“3”:所有读请求随机的分发到 readhost 执行,writerHost 不负担读压力。对应单主单从。

》启动Mycat

  • 控制台启动:

    [root@192 mycat]# ./bin/mycat console
    Running Mycat-server...
    wrapper  | --> Wrapper Started as Console
    wrapper  | Launching a JVM...
    jvm 1    | Wrapper (Version 3.2.3) http://wrapper.tanukisoftware.org
    jvm 1    |   Copyright 1999-2006 Tanuki Software, Inc.  All Rights Reserved.
    jvm 1    |
    jvm 1    | MyCAT Server startup successfully. see logs in logs/mycat.log
    
  • 查看日志文件位置:

    [root@192 logs]# pwd
    /usr/local/mycat/logs
    
    [root@192 logs]# ll
    total 28
    -rw-r--r--. 1 root root 20067 Jan 29 10:55 mycat.log
    -rw-r--r--. 1 root root     6 Jan 29 10:49 mycat.pid
    -rw-r--r--. 1 root root  2568 Jan 29 10:49 wrapper.log
    
  • 后台启动:

    [root@192 mycat]# ./bin/mycat start
    [root@192 mycat]# ./bin/mycat stop
    [root@192 mycat]# ./bin/mycat restart
    [root@192 mycat]# ./bin/mycat status
    

》远程连接测试

  • Mycat默认端口:8066

  • 我这里使用Navicat客户端新建MySQL连接方式,配置参数:

    Host:192.168.3.205
    Port:8066
    UserName:root
    Password:123456
    
    • 参数说明:
      • Host:Mycat所在服务器IP
      • Port:Mycat作为MySQL跳板时对外访问的端口(映射到MySQL的3306)
      • UserName:Mycat配置文件server.xml中定义的user元素中的”root“
      • Password:Mycat配置文件server.xml中定义的user元素中的“password”
  • 连接成功后,就会看到名为“master_slave_001”的数据库,里边就是MySQL中的表了。尝试进行增删改查并查看主从库的数据一切正常。

  • 至此,Mycat+MySQL主从复制+读写分离已经实现。

》双主双从(双机热备)

  • 核心操作就是再配置一份主从复制然后两台主服务互相复制,具体操作请关注我[手动狗头]~
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL是一个流行的关系型数据库管理系统,而MyCat(也称为Mycat)是一个开源的分布式数据库中间件,它提供了一种方法来扩展和管理多个MySQL实例。以下是安装MyCat的一般步骤: 1. **下载MyCat**: - 访问MyCat的官方网站 <https://github.com/mycat-db/mycat> ,下载适合你的环境(如Linux或Windows版本)的最新稳定版。 2. **配置环境**: - 安装Java,因为MyCat是基于Java开发的。确认你的系统已安装Java并设置环境变量。 - 创建一个MyCat安装目录,例如`/opt/mycat`。 3. **解压并配置**: - 解压缩下载的MyCat文件到安装目录,然后进入目录。 - 配置MyCat,编辑`conf/mycat-server.xml`文件,设置服务器基本信息、数据源连接信息等。 4. **启动MyCat服务**: - 运行`bin/start.sh`(Linux)或`bin\start.bat`(Windows),启动MyCat服务。你可以通过命令行查看日志来跟踪初始化过程。 5. **添加数据库源**: - 在MyCat的管理界面(默认端口8066),通过Web浏览器访问`http://your_host:8066`,添加数据库源,配置各个MySQL服务器的地址和权限。 6. **创建集群**: - 集群配置是将数据源组织成可用的资源池,可以通过Web界面创建和管理集群。 7. **应用负载均衡**: - 在MyCat中启用负载均衡策略,可以根据需求配置不同类型的负载均衡算法。 8. **监控与管理**: - 使用MyCat提供的监控工具或第三方工具监控集群状态,以及对数据库进行日常维护和优化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值