MyCat安装和部署

MyCat简介

MyCat是一个开源的分布式数据库系统,是一个实现了MySQL协议的服务器,前端用户可以把它看作是一个数据库代理,用MySQL客户端工具和命令行访问,而其后端可以用MySQL原生协议与多个MySQL服务器通信,也可以用JDBC协议与大多数主流数据库服务器通信,其核心功能是分表分库,即将一个大表水平分割为N个小表,存储在后端MySQL服务器里或者其他数据库里。
MyCat发展到目前的版本,已经不是一个单纯的MySQL代理了,它的后端可以支持MySQL、SQL Server、Oracle、DB2、PostgreSQL等主流数据库,也支持MongoDB这种新型NoSQL方式的存储,未来还会支持更多类型的存储。而在最终用户看来,无论是那种存储方式,在MyCat里,都是一个传统的数据库表,支持标准的SQL语句进行数据的操作,这样一来,对前端业务系统来说,可以大幅降低开发难度,提升开发速度


  • 对于DBA来说,可以这么理解Mycat
    Mycat就是MySQL Server,而Mycat后面连接的MySQL Server,就好象是MySQL的存储引擎,如
    InnoDB,MyISAM等,因此,Mycat本身并不存储数据,数据是在后端的MySQL上存储的,因此数据可靠性
    以及事务等都是MySQL保证的,简单的说,Mycat就是MySQL最佳伴侣,它在一定程度上让MySQL拥有了
    能跟Oracle PK的能力。
  • 对于软件工程师来说,可以这么理解Mycat
    Mycat就是一个近似等于MySQL的数据库服务器,你可以用连接MySQL的方式去连接Mycat(除了端
    口不同,默认的Mycat 端口是8066 而非MySQL 的3306,因此需要在连接字符串上增加端口信息),大多数
    情况下,可以用你熟悉的对象映射框架使用Mycat,但建议对于分片表,尽量使用基础的 SQL语句,因为这样能
    达到最佳性能,特别是几千万甚至几百亿条记录的情况下。
  • 对于架构师来说,可以这么理解Mycat
    Mycat是一个强大的数据库中间件,不仅仅可以用作读写分离、以及分表分库、容灾备份,而且可以用于多
    租户应用开发、云平台基础设施、让你的架构具备很强的适应性和灵活性,借助于即将发布的 Mycat智能优化模
    块,系统的数据访问瓶颈和热点一目了然,根据这些统计分析数据,你可以自动或手工调整后端存储,将不同的
    表映射到不同存储引擎上,而整个应用的代码一行也不用改变

MyCat安装

  • 安装JDK(1.7以上及更高)
  • 安装Mysql,如果有就不需要装了
  • 从官网下载MyCat安装包 MyCat
  • 下载好的安装包放到Linux服务器上,并在usr/local目录下解压
  • 解压完成代表安装完成,程序在usr/local/mycat目录中

MyCat配置

MyCAT目前主要通过配置文件的方式来定义逻辑库和相关配置:

  • /conf/schema.xml 中定义逻辑库,表、分片节点等内容.
  • /conf/rule.xml 中定义分片规则.
  • /conf/server.xml 中定义用户以及系统相关变量,如端口等.

安装完成后可以打开这三个文件进行查看,里面都是解释和需要怎么配置。

schema.xml

  • "schema"所有数据库分片节点,每个数据库分片是一个schema
  • table标签的Name属性所有数据表节点,其中包含它的主键(primaryKey)、规则(rule)、逻辑表的类型(type)
	
	<schema name="developmentExam" dataNode="developExam" checkSQLschema="false" sqlMaxLimit="100"/>
	<schema name="developmentAuth" dataNode="developAuth" checkSQLschema="false" sqlMaxLimit="100"/>
	
	
	<schema name="developmentExam" checkSQLschema="false" sqlMaxLimit="100">
		<table name="travelrecord" dataNode="developExam,developAuth" rule="auto-sharding-long" />
		<table name="hotnews" primaryKey="ID" autoIncrement="true" dataNode="developExam"
			   rule="mod-long" />
	schema>
	
  • dataNode 标签定义了 MyCat中的数据节点,也就是我们通常说所的数据分片。
	
	<dataNode name="developExam" dataHost="exam" database="itoo_exam2_dev" />
	<dataNode name="developAuth" dataHost="auth" database="itoo_cloud_dev" />
  • dataHost标签定义了具体的数据库实例、读写分离配置和心跳语句
	
	<dataHost name="exam" maxCon="1000" minCon="10" balance="0"
			  writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">
		<heartbeat>select user()heartbeat>
		
		<writeHost host="hostM1" url="数据库IP:3306" user="账号"
				   password="密码">
	writeHost>

server.xml

  • 插入图片 Ctrl + G
	
	<user name="user">
		<property name="password">userproperty>
		<property name="schemas">developmentExam,developmentAuthproperty>
		<property name="readOnly">trueproperty>
	user>

注意:需要手动上创建数据库,如果连接不到数据库或配置失败则启动mycat服务器报错:无法链接到数据库。

以下命令在MyCat的/bin目录下操作

  • 启动MyCat ./mycat start
  • 查看MyCat状态 ./mycat status
  • 查看MyCat日志 ./mycat console 如果启动失败可以执行这个命令看错误信息

小编也在网上看了很多关于MyCat的文章,里面说的99%都是来自这本书里的内容,它里面介绍非常详细,有时间的小伙伴可以看一下。 —— [ Mycat权威指南 ]

你可能感兴趣的:(运维)