Mycat的简单使用(一)【初了解】

Mycat的简单使用(一)【初了解】Mycat 的简单使用数据库准备创建数据库配置文件拉取镜像并创建数据库配置主从复制测试主从复制在宿主机上安装 mysql 客户端 测试连通性数据库准备使用 docker 安装两个数据库创建数据库配置文件 1 在 root 目录下创建 db1 和 db2 文件夹 然后再在这两个目录下分别创建 my cnf 文件 mkdirdb1mkdi cnf2 Master db1 目录下的 my cnf 配置文件如下 mysqld 同一局域网内注意要唯一 server id 100

数据库准备

使用docker安装两个数据库

创建数据库配置文件

1、在root目录下创建db1和db2文件夹,然后再在这两个目录下分别创建my.cnf文件

mkdir db1 mkdir db1 touch my.cnf 

在这里插入图片描述

2、Master(db1目录下的my.cnf)配置文件如下:

[mysqld]  同一局域网内注意要唯一 server-id=100  开启二进制日志功能,可以随便取(关键) log-bin=mysql-bin 

3、Slave(db2目录下的my.cnf)配置文件如下:

[mysqld]  设置server_id,注意要唯一 server-id=101  开启二进制日志功能,以备Slave作为其它Slave的Master时使用 log-bin=mysql-slave-bin  relay_log配置中继日志 relay_log=edu-mysql-relay-bin 

拉取镜像并创建数据库

docker pull mysql:5.7 

查看命令:docker images
在这里插入图片描述

docker run --name db1 -p 3316:3306 -v /root/db1/my.cnf:/etc/mysql/my.cnf -e MYSQL_ROOT_PASSWORD= -d mysql:5.7 docker run --name db2 -p 3326:3306 -v /root/db2/my.cnf:/etc/mysql/my.cnf -e MYSQL_ROOT_PASSWORD= -d mysql:5.7 

查看命令:docker ps -a
在这里插入图片描述

配置主从复制

1、通过docker exec -it db1 /bin/bash命令进入到Master容器内部:

docker exec -it db1 /bin/bash 

2、并且登录上数据库:

mysql -uroot -p 

在这里插入图片描述

3、执行mysql客户端执行如下脚本:

CREATE USER 'slave'@'%' IDENTIFIED BY ''; GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%'; 

在这里插入图片描述
4、在Master进入mysql,执行show master status;

show master status; 

在这里插入图片描述

File和Position字段的值后面将会用到,在后面的操作完成之前,需要保证Master库不能做任何操作,否则将会引起状态变化,File和Position字段的值变化。

5、退出master数据库,回到宿主机执行docker命令查看两个容器的ip

docker inspect --format '{ 
   { .NetworkSettings.IPAddress }}' db1 docker inspect --format '{ 
   { .NetworkSettings.IPAddress }}' db2 
mysql> exit Bye root@7b6f62c49a21:/# exit exit [root@bogon ~]# docker inspect --format '{ 
   { .NetworkSettings.IPAddress }}' db1 172.17.0.2 [root@bogon ~]# docker inspect --format '{ 
   { .NetworkSettings.IPAddress }}' db2 172.17.0.3 [root@bogon ~]#  

在这里插入图片描述

6、在Slave 中进入 mysql,执行:
注意:master_host、master_log_file、master_log_pos都需要是上面查询出来的,不一定和我的一样。

change master to master_host='172.17.0.2', master_user='slave', master_password='', master_port=3306, master_log_file='mysql-bin.000003', master_log_pos= 617, master_connect_retry=30; 

在这里插入图片描述

命令说明:
master_host :Master的地址,指的是容器的独立ip,可以通过如下命令查询容器的ip
docker inspect –format=’{
{.NetworkSettings.IPAddress}}’ 容器名称|容器id
Copy to clipboardErrorCopied
master_port:Master的端口号,指的是容器的端口号
master_user:用于数据同步的用户
master_password:用于同步的用户的密码
master_log_file:指定 Slave 从哪个日志文件开始复制数据,即上文中提到的 File 字段的值
master_log_pos:从哪个 Position 开始读,即上文中提到的 Position 字段的值
master_connect_retry:如果连接失败,重试的时间间隔,单位是秒,默认是60秒


















7、在Slave 中的mysql终端执行show slave status \G;用于查看主从同步状态。

在这里插入图片描述
8、正常情况下,SlaveIORunning 和 SlaveSQLRunning 都是No,因为我们还没有开启主从复制过程。使用start slave;开启主从复制过程,然后再次查询主从同步状态show slave status \G;

在这里插入图片描述
在这里插入图片描述

测试主从复制

测试主从复制方式就十分多了,最简单的是在Master创建一个数据库,然后检查Slave是否存在此数据库。

1、再打开一个虚拟机,进入到Master(db1):
在这里插入图片描述

在这里插入图片描述
2、这个是Slaver(db2)的数据库:
在这里插入图片描述
3、在Master(db1)中创建一个数据库:






create database testdb; 

在这里插入图片描述
4、在Slaver(db2)中查看:
在这里插入图片描述




到此证明主从复制配置正确。

在宿主机上安装mysql客户端,测试连通性

yum install -y mysql mysql -uroot -p -h 172.17.0.2 -P 3306 mysql -uroot -p -h 172.17.0.3 -P 3306 

没有安装过mysql客户端的,先执行第一条语句安装,我装过了,就不演示了。

-h 后面的容器的ip是上面查到了,不是说都是这样的。

在这里插入图片描述

Mycat安装启动

Mycat使用Java编写,所以需要提前安装jdk,安装jdk课一看我的另外一篇博客:学妹跑过来抱着我的胳膊让我帮她在Linux上装jdk【手把手教学】【需要提前下载jdk】

安装jdk

1、我们也可以利用华为云镜像直接下载jdk
我一般放在 /opt目录下:

#切换目录 cd /opt #下载 wget https://repo.huaweicloud.com/java/jdk/8u192-b12/jdk-8u192-linux-x64.tar.gz #解压 tar -zxvf jdk-8u201-linux-x64.tar.gz 

在这里插入图片描述
2、创建符号连接统一管理(可选),以后有新版本,只要更改这个连接就可以了:

ln -s /opt/jdk1.8.0_192 /usr/jdk 

3、修改环境变量:

vi /etc/profile 

在末尾添加如下内容:

JAVA_HOME=/usr/jdk CLASSPATH=$JAVA_HOME/lib/ PATH=$PATH:$JAVA_HOME/bin export PATH JAVA_HOME CLASSPATH 

4、使配置生效:

source /etc/profile 

5、检查是否安装成功:

java -version 

在这里插入图片描述

下载解压Mycat

1、切换到/opt目录,使用wget 下载压缩包

#切换目录 cd /opt/ #下载 wget http://dl.mycat.org.cn/1.6-RELEASE/Mycat-server-1.6-RELEASE-710-linux.tar.gz #查看 ll |grep My #解压 tar -zxvf Mycat-server-1.6-RELEASE-710-linux.tar.gz #查看 ll 

在这里插入图片描述

文件复制

1、将解压后的目录copy到 /usr/local目录中(在opt目录下操作)

cp -r mycat/ /usr/local/ ls /usr/local/ 

2、查看mycat目录及mycat的配置文件目录

cd /usr/local/mycat/ ls cd conf/ ls 

在这里插入图片描述

其中主要的几个配置文件如下:
server.xml:是Mycat服务器参数调整和用户授权的配置文件。
schema.xml:是逻辑库定义和表以及分片定义的配置文件。
rule.xml: 是分片规则的配置文件,分片规则的具体一些参数信息单独存放为文件,也在这个目录下,配置文件修改需要重启MyCAT。
log4j.xml: 日志存放在logs/log中,每天一个文件,日志的配置是在conf/log4j.xml中,根据自己的需要可以调整输出级别为debug
debug级别下,会输出更多的信息,方便排查问题。
autopartition-long.txt,partition-hash-int.txt,sequence_conf.properties, sequence_db_conf.properties 分片相关的id分片规则配置文件
lib MyCAT自身的jar包或依赖的jar包的存放目录。
logs MyCAT日志的存放目录。日志存放在logs/log中,每天一个文件
















配置

1、需要安装jdk,修改jdk环境,即编辑/usr/local/mycat/conf/wrapper.conf

 vi /usr/local/mycat/conf/wrapper.conf 

配合java命令绝对路径

wrapper.java.command=/opt/jdk1.8.0_291/bin/java 

在这里插入图片描述

修改server.xml

vi server.xml 

完整的配置文件如下:

 
     
     <mycat:server xmlns:mycat="http://io.mycat/"> <system> <property name="useSqlStat">0 
     property>  
     <property name="useGlobleTableCheck">0 
      property>  
      <property name="sequnceHandlerType">2 
       property>  
        
        
        
        
        
        
       <property name="processorBufferPoolType">0 
        property>  
         
         
         
         
         
         
         
        <property name="handleDistributedTransactions">0 
         property>  
         <property name="useOffHeapForMerge">1 
          property>  
          <property name="memoryPageSize">1m 
           property>  
           <property name="spillsFileBufferSize">1k 
            property> <property name="useStreamOutput">0 
             property>  
             <property name="systemReserveMemorySize">384m 
              property>  
              <property name="useZKSwitch">true 
               property>  
                system>  
                 
                <user name="mycat"> <property name="password"> 
                 property> <property name="schemas">TESTDB 
                  property>  
                   
                   
                   user> <user name="user"> <property name="password">user 
                    property> <property name="schemas">TESTDB 
                     property> <property name="readOnly">true 
                      property>  
                       user>  
                        mycat:server> 

修改schema.xml

vi schema.xml 

修改dataNode、dataHost

完整的配置文件如下:

 
     <mycat:schema xmlns:mycat="http://io.mycat/"> <schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1">  
     schema> <dataNode name="dn1" dataHost="host1" database="testdb" /> <dataHost name="host1" maxCon="1000" minCon="10" balance="2" writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100"> <heartbeat>select user() 
      heartbeat>  
      <writeHost host="hostM1" url="172.17.0.2:3306" user="root" password="">  
      <readHost host="hostS1" url="172.17.0.3:3306" user="root" password="" />  
       writeHost>  
        dataHost>  
         mycat:schema> 

启动

到mycat/bin目录执行shell脚本
控制台启动 ./mycat console
后台启动 ./mycat start




cd /usr/local/mycat/bin pwd ls ./mycat ./mycat console 

在这里插入图片描述

[root@bogon opt]# cd /usr/local/mycat/bin [root@bogon bin]# pwd /usr/local/mycat/bin [root@bogon bin]# ls dataMigrate.sh init_zk_data.sh mycat rehash.sh startup_nowrap.sh wrapper-linux-ppc-64 wrapper-linux-x86-32 wrapper-linux-x86-64 [root@bogon bin]# ./mycat  Usage: ./mycat { 
    console | start | stop | restart | status | dump } [root@bogon bin]# ./mycat console Running Mycat-server... wrapper | --> Wrapper Started as Console wrapper | Launching a JVM... jvm 1 | Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=64M; support was removed in 8.0 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 | 2021-06-16 18:06:19,874 [INFO ][WrapperSimpleAppMain] total resouces of dataHost host1 is :2 (io.mycat.backend.datasource.PhysicalDBPool:PhysicalDBPool.java:100) jvm 1 | 2021-06-16 18:06:19,897 [INFO ][WrapperSimpleAppMain] create layer cache pool TableID2DataNodeCache of type encache ,default cache size 10000 ,default expire seconds18000 (io.mycat.cache.CacheService:CacheService.java:125) jvm 1 | 2021-06-16 18:06:19,914 [INFO ][WrapperSimpleAppMain] create child Cache: TESTDB_ORDERS for layered cache TableID2DataNodeCache, size 50000, expire seconds 18000 (io.mycat.cache.DefaultLayedCachePool:DefaultLayedCachePool.java:80) jvm 1 | 2021-06-16 18:06:35,102 [INFO ][WrapperSimpleAppMain] dyna class load from ./catlet,and auto check for class file modified every 60 seconds (io.mycat.config.classloader.DynaClassLoader:DynaClassLoader.java:34) jvm 1 | 2021-06-16 18:06:35,103 [INFO ][WrapperSimpleAppMain] =============================================== (io.mycat.MycatServer:MycatServer.java:266) jvm 1 | 2021-06-16 18:06:35,104 [INFO ][WrapperSimpleAppMain] MyCat is ready to startup ... (io.mycat.MycatServer:MycatServer.java:267) jvm 1 | 2021-06-16 18:06:35,105 [INFO ][WrapperSimpleAppMain] Startup processors ...,total processors:4,aio thread pool size:8 

超时错误解决办法

显示上面这样就是启动成功了,有时可能会出现超时的错误:

wrapper | Startup failed: Timed out waiting for signal from JVM. 

解决办法:

cd /usr/local/mycat/conf vi wrapper.conf 

在wrapper.conf最下方添加:

wrapper.ping.timeout=120 wrapper.startup.timeout=300 

在这里插入图片描述

Mycat登录

登录后台管理窗口

使用9066端口登录后台管理窗口,此登录方式用于管理维护Mycat

mysql -umycat -p -h 127.0.0.1 -P 9066 

在这里插入图片描述

查看常用的命令

show @@help; 

在这里插入图片描述

登录数据访问窗口

使用8066端口访问数据。

mysql -umycat -p -h 127.0.0.1 -P 8066 show databases; 

在这里插入图片描述

由于篇幅已经挺长了,就写一篇 Mycat的简单使用(二)【主从读写】继续介绍

版权声明:
原创博主:牛哄哄的柯南
博主原文链接:https://keafmd.blog.csdn.net/




看完如果对你有帮助,感谢点赞支持!
如果你是电脑端,看到右下角的 “一键三连” 了吗,没错点它[哈哈]


在这里插入图片描述
加油!




共同努力!

Keafmd

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/227826.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月16日 下午8:26
下一篇 2026年3月16日 下午8:26


相关推荐

  • virsh命令详解_virsh 删除虚拟机

    virsh命令详解_virsh 删除虚拟机做下面操作前先安装这些工具:  yuminstallvirt-installlibvirt-adminlibvirt-clientlibvirt-daemonlibvirt主要的配置文件和目录  (1)libvirtd服务的主配置文件/etc/libvirt/libvirtd.conf    vim…

    2022年8月11日
    11
  • 如何解决 VirtualBox 在安装 VB Guest additions(安装增强功能)时遇到的问题[通俗易懂]

    如何解决 VirtualBox 在安装 VB Guest additions(安装增强功能)时遇到的问题[通俗易懂]问题1遇到:ValueError:Filecontextfor/opt/VBoxGuestAdditions-6.1.6/other/mount.vboxsfalreadydefine

    2022年7月1日
    53
  • 国内DNS推荐_年度优秀员工测评表

    国内DNS推荐_年度优秀员工测评表DNS在平时上网中扮演重要角色,如果不注意DNS的话,可能会导致网速慢、弹窗广告、网址打不开、打开不是自己想要的网站、劫持等一系列问题。针对DNS的问题,今天我们就来总结一下,看看哪个DNS服务器最好用!注意:本测试仅通过奇云测对服务器进行综合测试,具体使用情况请以用户本地为主。建议使用ISP默认分配的DNS,只有在特别需要的情况下再使用公共DNS。1.PublicDNS+:★★★★★(推荐…

    2025年9月28日
    4
  • oracle 字符串转数字

    oracle 字符串转数字字符串转成数字 CREATEORREPL to number CVARCHAR2 RETURNFLOATI BEGINBEGINN to number C RETURNN EXCEPTIONWHE END E

    2026年3月20日
    2
  • 百度分享按钮代码

    百度分享按钮代码百度分享官网已经获取不了了,但是这些按钮功能还在.下面直接把代码放出,有需要的同学可以直接复制第一种:按钮式:<divclass=”bdsharebuttonbox”><ahref=”#”class=”bds_more”data-cmd=”more”></a><ahref=”#”class=”bds_qzone”…

    2022年10月8日
    5
  • 永恒之蓝漏洞入侵_永恒之蓝漏洞探测

    永恒之蓝漏洞入侵_永恒之蓝漏洞探测一、基础知识介绍:1.何为永恒之蓝?永恒之蓝(EternalBlue)爆发于2017年4月14日晚,是一种利用Windows系统的SMB协议漏洞来获取系统的最高权限,以此来控制被入侵的计算机。甚至于2017年5月12日,不法分子通过改造“永恒之蓝”制作了wannacry勒索病毒,使全世界大范围内遭受了该勒索病毒,甚至波及到学校、大型企业、政府等机构,只能通过支付高额的赎…

    2022年10月17日
    6

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号