【软通鲲鹏云最佳实践13】MyCat-1.6 鲲鹏云服务器安装实践

举报
软通智慧 发表于 2019/11/12 10:55:37 2019/11/12
【摘要】 MyCat是基于mysql数据库的分布式中间件,支持MySQL数据库分库分表,读写分离等。这篇博客比较详细的描述了华为鲲鹏云服务器ECS KC1上的成功安装过程。

一、 软件介绍

MyCat是基于mysql数据库的分布式中间件,支持MySQL数据库分库分表,读写分离等。

二、 支持的操作系统

经过华为云严格实测,以下操作系统在鲲鹏生态中可以完整运行MyCat的全部功能:

     CentOS7.6

三、 支持版本和获取方式

    建议使用MyCat-1.6

    下载地址:

    http://dl.mycat.io/1.6-RELEASE/Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz

四、 编译与测试环境

本文选用华为鲲鹏云服务器ECS KC1实例做测试,KC1实例的处理器为兼容ARMv8指令集的鲲鹏920。详细规格如下:

类别

子项

版本

云主机配置

ECS实例类型

kc1.large.4

ECS配置

4U16GB

EVS

高IO(80GB)

云OS

Kernel

4.18.0

 

五、 编译安装与测试

依赖安装

    1)Java版本需要在“1.8.0”及上版本。您可以通过执行下面命令,安装“java 1.8.0”。

   sudo yum install java-1.8.0-openjd

2)环境中已运行mysql服务,并且要预先创建好相应的库和表。

    a.连接MySQL数据库。

   mysql -uroot -p[PASSWORD]

    b.执行以下SQL语句,创建db01库及其下的users表。

   create database db01; 
   use db01; 
   CREATE TABLE `users` (  
   `id` int(11) NOT NULL AUTO_INCREMENT,  
   `name` varchar(50) NOT NULL DEFAULT '',  
   `indate` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',  
   PRIMARY KEY (`id`)  
   ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;

编译安装

    本文采用mycat-1.6”版本为例。

   1)执行如下命令,下载软件包。

wget http://dl.mycat.io/1.6-RELEASE/Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz

   2)执行如下命令,解压软件包。

tar -zxvf Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz -C /usr/local/

   3)执行如下命令,进入MyCat配置目录。

cd /usr/local/mycat/conf

   4)修改MyCat配置文件。

   -- 配置“server.xml”,修改内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mycat:server SYSTEM "server.dtd">
<mycat:server xmlns:mycat="http://io.mycat/">
      <system>
        <property name="useSqlStat">0</property>  <!-- 1为开启实时统计、0为关闭 -->
        <property name="useGlobleTableCheck">0</property>  <!-- 1为开启全加班一致性检测、0为关闭 -->
 
        <property name="sequnceHandlerType">2</property>
     
        <!--默认为type 0: DirectByteBufferPool | type 1 ByteBufferArena-->
        <property name="processorBufferPoolType">0</property>
      
        <property name="handleDistributedTransactions">0</property>
 
        <property name="useOffHeapForMerge">1</property>
        <property name="memoryPageSize">1m</property>
 
        <!--单位为k -->
        <property name="spillsFileBufferSize">1k</property>
 
        <property name="useStreamOutput">0</property>
 
        <!--单位为m -->
        <property name="systemReserveMemorySize">384m</property>
        <!--是否采用zookeeper协调切换  -->
        <property name="useZKSwitch">true</property>
      </system>
      <user name="root">
        <property name="password">123456</property>
        <property name="schemas">TESTDB</property>
      </user>
</mycat:server>


 

   -- 配置“rule.xml”,修改内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mycat:rule SYSTEM "rule.dtd">
<mycat:rule xmlns:mycat="http://io.mycat/">
        <tableRule name="mod-long">
                <rule>
                        <columns>id</columns>
                        <algorithm>mod-long</algorithm>
                </rule>
        </tableRule>
 
        <function name="mod-long" class="io.mycat.route.function.PartitionByMod">
                <!-- how many data nodes -->
                <property name="count">2</property>
                <property name="virtualBucketTimes">160</property>
        </function>
</mycat:rule>


 

   -- 配置“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="node_db01">
             <!-- 指定实际表名为users, 是在node_db01节点上-->
        <!-- 实际表名为item, 在node_db02和node_db03节点上-->
        </schema>
        <dataNode name="node_db01" dataHost="dataHost01" database="db01" />
    <!-- 声明数据库的连接地址, 名称为dataHost01, 为dataNode节点提供-->
    <dataHost name="dataHost01" maxCon="1000" minCon="10" balance="0" writeType="0" dbType="mysql" dbDriver="native">
        <heartbeat>select * from users</heartbeat>
        <!-- 数据库的连接地址,账号和密码-->
        <writeHost host="server1" url="ip:port" user="user" password="password" >
        <readHost host="server2" url="ip:port" user="user" password="password" />
        </writeHost>
    </dataHost>
 
</mycat:schema>


   5)修改MyCat执行“startup_nowrap.sh”脚本,

vim /usr/local/mycat/bin/startup_nowrap.sh

    在脚本文件开头添加如下内容:

JAVA_HOME=/usr/lib/jvm/jre

验证测试

    启动软件

    1)执行以下命令,启动MyCat。

/usr/local/mycat/bin/startup_nowrap.sh

    2)执行以下命令,连接MyCat。

[password]为“server.xml”中配置的用户密码。

mysql -uroot -p[password] -h127.0.0.1 -P8066

    3)执行以下命令,查看MyCat的库信息。

show databases;

    4)系统如下,表示MyCat拥有TESTDB库。

 

      1573527162593421.png


    5)执行以下命令,进入“TESTDB”库。

use TESTDB;

    6)执行以下命令,查看“TESTDB”下的表信息。

show tables;

   

     1573527205663226.png


       7) 执行以下SQL语句:

insert into users(id,name,indate) values(1,'hello',now());

     1573527243963987.png

      问题总结

六、 声明

本文档中的软件包均来自软件官网,安装文档部分参考官网的安装方法,本软件测试环境为华为鲲鹏云ARM服务器,具体配置信息参照《编译与测试环境》部分。

本文档中的软件安装测试基于华为鲲鹏云ARM服务器环境测试,如在使用本文档的安装方法进行安装过程中,可能由于系统版本、软件依赖或其他原因造成软件安装不成功,请自行解决或联系我们,请事先备份相关重要数据、资料。

使用文档风险由用户自行承担,在适用法律允许的最大范围内,对因使用或不能使用本文档所产生的损害及风险,包括但不限于直接或间接的个人损害、商业赢利的丧失、贸易中断、商业信息的丢失或任何其它经济损失,我司不承担任何责任。

我司不担保所提供的软件功能及服务一定能满足用户的要求,也不担保服务不会中断,对服务的及时性、安全性、真实性、准确性都不作担保。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。