2019独角兽企业重金招聘Python工程师标准>>>
关系型数据库分布式中间件 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
如果链接失效,请登录 http://mycat.io 手动下载
2 安装 MySQL 节点
一共有三个 mysql 节点,分别是
IP地址 主机名
10.20.17.129 centos-broker1
10.20.17.139 centos-broker2
10.20.17.149 centos-broker3
三个节点都做如下安装:
# 禁用并停止防火墙
systemctl disable firewalld
systemctl stop firewalld
# 安装数据库
# 数据库安装
yum install mariadb mariadb-server
#配置
nano /etc/my.cnf
[mysqld]
bind-address = 0.0.0.0
default-storage-engine = innodb
innodb_file_per_table
collation-server = utf8_general_ci
init-connect = 'SET NAMES utf8'
character-set-server = utf8
lower_case_table_names = 1 # 忽略大小写
# 启动数据库服务,并将其配置为开机自启
systemctl enable mariadb.service
systemctl start mariadb.service
# 设置root用户密码,并进行初始设置
mysql_secure_installation
# 设定初始密码为 1
mysqladmin -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-broker1
10.20.17.139 centos-broker2
10.20.17.149 centos-broker3
...
# 测试 ping 主机名
ping centos-broker1
ping centos-broker2
ping centos-broker3
# 解压到指定位置
cp Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz /usr/local
cd /usr/local
tar -xvf Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz
rm -rf Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz
# 修改 /etc/profile 加入环境变量
nano /etc/profile
MYCAT_HOME=/usr/local/mycat
# 如下:
# /etc/profile
# System wide environment and startup programs, for login setup
# Functions and aliases go in /etc/bashrc
MYCAT_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 数量修改
。
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.239
PORT: 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`)
)