关系型数据库分布式中间件 mycat 部署
本指南主要针对 mysql 数据库
1 平台需求
- (1) 操作系统:CentOS 7.2 (1511)
- (2) JDK:1.8(1.7以上均可)
注:安装 可使用
yum install java-1.8.0-openjdk-devel.x86_64
- (3) mycat
下载
wget http://dl.mycat.io/1.6-RELEASE/Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz
如果链接失效,请登录 手动下载
2 安装 MySQL 节点
一共有三个 mysql 节点,分别是
IP地址 主机名 10.20.17.129 centos-broker1 10.20.17.139 centos-broker2 10.20.17.149 centos-broker3
三个节点都做如下安装:
# 禁用并停止防火墙systemctl disable firewalldsystemctl stop firewalld# 安装数据库# 数据库安装yum install mariadb mariadb-server#配置nano /etc/my.cnf[mysqld]bind-address = 0.0.0.0default-storage-engine = innodbinnodb_file_per_tablecollation-server = utf8_general_ciinit-connect = 'SET NAMES utf8'character-set-server = utf8lower_case_table_names = 1 # 忽略大小写# 启动数据库服务,并将其配置为开机自启systemctl enable mariadb.servicesystemctl start mariadb.service# 设置root用户密码,并进行初始设置mysql_secure_installation# 设定初始密码为 1mysqladmin -u root password 1# 此时会要求你输入老的密码,第一次设定没有老密码,直接按回车就好# 登陆数据库mysql -u root -p1# 创建数据库 create database db1 character set utf8;# 赋root远程访问权GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '1';
3 安装(Mycat节点)
mycat 节点 IP 为 10.20.17.239
# 修改 hosts 添加下列项目nano /etc/hosts...10.20.17.129 centos-broker110.20.17.139 centos-broker210.20.17.149 centos-broker3...# 测试 ping 主机名ping centos-broker1ping centos-broker2ping centos-broker3# 解压到指定位置cp Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz /usr/localcd /usr/localtar -xvf Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gzrm -rf Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz# 修改 /etc/profile 加入环境变量nano /etc/profileMYCAT_HOME=/usr/local/mycat# 如下:# /etc/profile# System wide environment and startup programs, for login setup# Functions and aliases go in /etc/bashrcMYCAT_HOME=/usr/local/mycat# 刷新环境变量source /etc/profile
4 配置 mycat
mycat 的主要配置文件存放于 /etc/local/mycat/conf
下,这里主要涉及三个配置文件,分别是 server.xml
,schema.xml
和 rule.xml
。
server.xml
是 mycat 的系统配置
下面说明,定义了一个 mycat 的逻辑用户 root, 其密码为 123456,并拥有一个 database 为 TESTDB。
123456 TESTDB
schema.xml
是 mycat 的系统配置
数据节点配置
定义了三个 dataNode 分别为 dn1, dn2, dn3, 分别对应 三个主机 mysql 服务器中的 db1 数据库。
数据主机配置
下面部分是对 dataHost 的配对说明,以 centos-broker2
为例子,它的writeHost
中定义了centos-broker2
中mysql数据库的连接配置,用户名是 root,密码是 1。
select user() select user() select user()
逻辑表规则配置
配置了 逻辑表 travelrecord, 对应数据节点 dn1, dn2, dn3, 使用 mod-long (取模)规则,此规则与 dataHost 数量是相关的
注意 rule.xml
中的配置
这是初始定义的规则,说明内容使用的方法,根据那个字段起作用。
id mod-long
真正的算法实现,要根据 dataHost 数量修改 <property name="count">3</property>
。
3
5 启动关闭 mycat
cd /etc/usr/local/mycat/bin# 启动, 关闭可以使用 ./mycat stop./mycat start
6 使用 navicat for mysql 访问 mycat
mycat 作为一个总 mysql 网关,管理起来背后三个 mysql 节点,此时访问 mysql 只看到了一个逻辑上的数据库和内部的逻辑表。
使用 navicat 时,配置如下:
IP: 10.20.17.239PORT: 8066数据库: TESTDB
mycat 中的逻辑表初始创建
在进入 navicat 后,你会看到 travelrecord 等相关 逻辑表,但是其实是不可使用的,必须进行创建。创建后,才会在 三个数据节点上创建真正的 物理表。之后,您就可以进行任意的 SQL 操作了。
CREATE TABLE `travelrecord` (`id` bigint(20) NOT NULL ,`user_id` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,`traveldate` date NULL DEFAULT NULL ,`fee` decimal(10,0) NULL DEFAULT NULL ,`days` int(11) NULL DEFAULT NULL ,PRIMARY KEY (`id`))