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.png2. 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.png3. MyCat的安装及数据库集群配置
3.1. 启动Mysql,并创建三个数据库实例
第一步:Linux系统启动Mysql
//启动mysql
service mysqld start
第二步:远程连接Mysql server,并创建三个数据库实例,为数据库集群做准备。
image.png3.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.png3.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
网友评论