美文网首页
数据库集群中间件之MyCat

数据库集群中间件之MyCat

作者: Demon先生 | 来源:发表于2020-05-11 18:10 被阅读0次

    1. 什么是MyCat

    1.1. 介绍

    MyCat就是一个彻底开源的,面向企业应用开发的“大数据库集群;支持事务、ACID、可以替代Mysql的加强版数据库;一个可以视为“Mysql”集群的企业级数据库,用来替代昂贵的Oracle集群;一个融合内存缓存技术、Nosql技术、HDFS大数据的新型SQL Server;结合传统数据库和新型分布式数据仓库的新一代企业级数据库产品;一个新颖的数据库中间件产品。

    1.2. MyCat的关键特性

    支持Mysql集群,可以作为Proxy使用

    支持JDBC连接ORACLE、DB2、SQL Server,将其模拟为MySQL Server使用

    支持galera for mysql集群,percona-cluster或者mariadb cluster,提供高可用性数据分片集群

    自动故障切换,高可用性

    支持读写分离,支持Mysql双主多从,以及一主多从的模式

    支持全局表,数据自动分片到多个节点,用于高效表关联查询

    支持独有的基于E-R 关系的分片策略,实现了高效的表关联查询

    多平台支持,部署和实施简单

    1.3. 构架及数据库支持

    MyCat使用Mysql的通讯协议模拟成了一个Mysql服务器,并建立了完整的Schema(数据库)、Table (数据表)、User(用户)的逻辑模型,并将这套逻辑模型映射到后端的存储节点DataNode(MySQL Instance)上的真实物理库中,这样一来,所有能使用Mysql的客户端以及编程语言都能将MyCat当成是Mysql Server来使用,不必开发新的客户端协议。

    MyCat支持的数据库:

    image.png

    2. Linux系统Mysql数据库安装

    此操作系统为CentOS 6版本,Mysql版本为8.0.15。具体操作步骤如下:

    第一步:执行下面语句检查Mysql数据库是否安装。如果没有出现版本提示,说明没有安装。

    rpm -qa|grep mysql
    

    第二步:如果需要切换版本,执行下面语句,首先卸载当前mysql版本,并删除相应文件。

    yum remove mysql mysql-server mysql-libs mysql-common
    rm -rf /var/lib/mysql
    rm -f /etc/my.cnf
    

    第三步:下载所需要安装的mysql的数据源包,并通过yum安装数据源。

    yum localinstall mysql80-community-release-el6-3.noarch.rpm
    

    第四步:使用yum安装mysql server对应版本。(若下载过慢,可在系统中执行此命令

    yum install mysql-community-server-8.0.15
    

    第五步:为了降低访问出错概率,修改Mysql配置文件/etc/my.conf,设置Mysql大小写不敏感,否者有可能出现表找不到的问题。在my.conf文件中新增加一行:lower_case_table_names = 1

    image.png

    第六步:启动初始化mysql,查看临时登录密码,登录并修改为自己的密码(8.0后密码有要求要包含字母大小写、特殊符号、数字)。

    //启动mysql
    service mysqld start
    //获取临时密码
    grep "A temporary password is generated for root@localhost" /var/log/mysqld.log 
    //使用临时密码,登录mysql
    mysql -uroot -p
    //修改密码
    ALTER USER 'root'@'localhost' IDENTIFIED BY 'Demon@123';
    //退出
    quit
    

    第七步:登录mysql,检查是否能够连接。

    mysql -uroot -pDemon@123
    

    第八步:如果要远程访问该数据库,需要配置远程连接授权,并重启。

    //登录mysql
    mysql -uroot -pDemon@123
    use mysql;
    //修改root用户配置
    update user set host='%' where user='root';
    flush privileges;
    grant all privileges on *.* to root@'%';
    flush privileges;
    ALTER USER 'root'@'%' IDENTIFIED BY 'Demon@123' PASSWORD EXPIRE NEVER;
    ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'Demon@123';
    flush privileges;
    quit;
    //重启mysql
    service mysqld restart
    

    第九步:远程连接,测试是否配置成功。

    image.png

    3. MyCat的安装及数据库集群配置

    3.1. 启动Mysql,并创建三个数据库实例

    第一步:Linux系统启动Mysql

    //启动mysql
    service mysqld start
    

    第二步:远程连接Mysql server,并创建三个数据库实例,为数据库集群做准备。

    image.png

    3.2. 安装MyCat及配置

    第一步:下载MyCat压缩包,拷贝到/usr/local目录,并解压,解压后会得到一个mycat的文件夹。

    image.png

    第二步:进入/usr/local/mycat/conf目录修改MyCat配置文件server.xml,设置数据库名和访问权限。

    image.png

    第三步:进入/usr/local/mycat/conf目录修改MyCat配置文件schema.xml,设置数据库名、分片规则和数据库节点名字,注意数据库节点名字要与3.1章节中一致;并注意设置数据库访问的用户名和密码。

    image.png

    第四步:修改rule.xml配置文件,添加第四步中配置的分片规则myrule(此名字要与第四步中配置的名字一致),并创建分片规则方法和设置对应参数。

    image.png image.png

    第五步:创建myrule.txt文件,配置自己的分片规则。

    image.png

    至此,MyCat的安装与配置基本完成。

    3.3. 测试MyCat中间件控制数据库集群

    第一步:进入MyCat包目录/usr/local/mycat/bin/,启动MyCat。相关指令如下:

    启动命令:./mycat start
    停止命令:./mycat stop
    重启命令:./mycat restart
    

    第二步:检查是否启动成功,打开/usr/local/mycat/logs/wrapper.log文件,出现下图所示表示启动成功:


    image.png

    第三步:远程连接Mycat server,注意默认端口为8066,用户名和密码为server.xml中设置的用户名和密码。


    image.png

    第四步:在MyCat数据库中输入以下语句创建mytable表,并导入超过512条数据,以供测试。

    CREATE TABLE `mytable` (
      `id` bigint(20) NOT NULL AUTO_INCREMENT,
      `username` varchar(50) NOT NULL COMMENT '用户名',
      `password` varchar(32) NOT NULL COMMENT '密码,加密存储',
      `phone` varchar(20) DEFAULT NULL COMMENT '注册手机号',
      `email` varchar(50) DEFAULT NULL COMMENT '注册邮箱',
      `created` datetime NOT NULL,
      `updated` datetime NOT NULL,
      PRIMARY KEY (`id`),
      UNIQUE KEY `username` (`username`) USING BTREE,
      UNIQUE KEY `phone` (`phone`) USING BTREE,
      UNIQUE KEY `email` (`email`) USING BTREE
    ) ENGINE=InnoDB AUTO_INCREMENT=41 DEFAULT CHARSET=utf8 COMMENT='用户表';
    

    第五步:测试结果为,当MyCat数据库创建mytable表后,其余三个数据库中都会自动创建相同表名的表,同时将512条数据按照自己定义的规则进行划分到不同数据库的表中。

    image.png

    3.4. 错误排查

    检查MyCat启动文件/logs/ wrapper.log是否启动成功,出现java.net.UnknownHostException:localhost.fileserver: MySQL-Server1: Name or service not known,在/etc/hosts文件中添加对应报错的host名字,然后重新启动。

    vim /etc/hosts
    
    image.png

    文档下载地址:

    https://wenku.baidu.com/view/cb9d9a2b12a6f524ccbff121dd36a32d7375c7fa

    相关文章

      网友评论

          本文标题:数据库集群中间件之MyCat

          本文链接:https://www.haomeiwen.com/subject/hzsknhtx.html