关系型数据库分布式中间件 mycat 部署

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

关系型数据库分布式中间件 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.xmlrule.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


	
		
		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`)
)

转载于:https://my.oschina.net/crooner/blog/839747

你可能感兴趣的:(关系型数据库分布式中间件 mycat 部署)