46.MyCat

1.什么是数据库中间件
	应用和数据库之间的代理层,这个代理层可以帮助我们完成很多事情,比如说,数据监控,心跳感应,分库分表,
  读写分离,sql拦截注入

  //mycat 官网
  http://www.mycat.io/

2.MyCat 安装
	//下载mycat .tgz 安装包
	http://www.mycat.io/

	解压
	移动到 /usr/local 下

	//修改配置文件
	主要是 server.xml 和 schema.xml

	//启动
	bin/mycat start

	//查看日志
	logs/wrapper.log

server.xml 配置

 

scheme.xml 配置

<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
	<!-- 
	这里的name="shop" 跟刚刚 server.xml 配置的要一样
	这里要指定一个 dataNode="dn1"	
	-->
	<schema name="shop" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1"></schema>
	<!-- 
	name="dn1" 
	dataHost="localhost1"
	database="test" // 实际的数据库名称
	-->
	<dataNode name="dn1" dataHost="localhost1" database="test" />
	<!-- 
	name="localhost1"

	-->
	<dataHost name="localhost1" maxCon="1000" minCon="10" balance="0"
			  writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">
	    <!--
		心跳,执行了一个sql语句
	    -->
		<heartbeat>select user()</heartbeat>
		<!-- 
			写的主机
		-->
		<writeHost host="hostM1" url="192.168.0.113:3306" user="mycat"
				   password="123456" />
	</dataHost>
</mycat:schema>
//在真实主机给mycat主机授权
grant all on *.* to mycat@192.168.0.106 identified by '123456';

//启动
bin/mycat start

//查看日志是否启动成功
vim logs/wrapper.log

 

//查看状态
bin/mycat status

//mycat 监听的端口
netstat -anp | grep 8066


//从其他主机连接mycat 主机
mysql -h 192.168.0.106  -u root -p -P8066

 

配置读写分离

scheme.xml 配置

<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
        <!--
                这里的name="shop" 跟刚刚 server.xml 配置的要一样
        这里要指定一个 dataNode="dn1"
        -->
        <schema name="shop" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1"></schema>
        <!--
                name="dn1"
        dataHost="localhost1"
        database="test" // 实际的数据库名称
        -->
        <dataNode name="dn1" dataHost="localhost1" database="test" />
        <!--
                name="localhost1"

        -->
        <dataHost name="localhost1" maxCon="1000" minCon="10" balance="3"
                          writeType="0" dbType="mysql" dbDriver="native" switchType="2"  slaveThreshold="100">
            <!--
                                心跳,执行了一个sql语句
            -->
                <!-- <heartbeat>select user()</heartbeat> -->
                <heartbeat>show slave status</heartbeat>
                <!--
                                        写的主机
                -->
                <writeHost host="hostM1" url="192.168.0.113:3306" user="mycat" password="123456" >
                <readHost host="hostS1" url="192.168.0.108:3306" user="mycat" password="123456"/>
                </writeHost>
        </dataHost>
</mycat:schema>

 

	1.主库和从库分别对mycat服务器授权
	grant replication slave on *.* to slave@192.168.0.106 identified by '123456';

可以到日志已经在从库读
tail -f logs/mycat.log

 

mycat 双主:

<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
        <!--
                这里的name="shop" 跟刚刚 server.xml 配置的要一样
        这里要指定一个 dataNode="dn1"
        -->
        <schema name="shop" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1"></schema>
        <!--
                name="dn1"
        dataHost="localhost1"
        database="test" // 实际的数据库名称
        -->
        <dataNode name="dn1" dataHost="localhost1" database="test" />
        <!--
                name="localhost1"

        -->
        <dataHost name="localhost1" maxCon="1000" minCon="10" balance="3"
                          writeType="0" dbType="mysql" dbDriver="native" switchType="2"  slaveThreshold="100">
            <!--
                                心跳,执行了一个sql语句
            -->
                <!-- <heartbeat>select user()</heartbeat> -->
                <heartbeat>show slave status</heartbeat>
                <!--
                                        写的主机
                -->
                <writeHost host="hostM1" url="192.168.0.113:3306" user="mycat" password="123456" >
                <readHost host="hostS1" url="192.168.0.108:3306" user="mycat" password="123456"/>
                </writeHost>
                <writeHost host="hostM1" url="192.168.0.113:3306" user="mycat" password="123456" >
                <readHost host="hostS1" url="192.168.0.108:3306" user="mycat" password="123456"/>
                </writeHost>
        </dataHost>
</mycat:schema>
这时候可以人为的停掉一台机器测试

 

mycat 分片操作
 

1.先创建3个数据库
	create database test1;
	create database test2;
	create database test3;
	
	并在3个库里面创建表a
	CREATE TABLE `a` (
	  `id` int(11) NOT NULL AUTO_INCREMENT,
	  `name` varchar(11) DEFAULT NULL,
	  PRIMARY KEY (`id`)
	) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1

	按哈希分表;

scheme.xml

 

conf/rule.xml

 

注意主键id冲突问题, server.xml,配置为0,使用本地文件来进行配置

 

conf/sequence_conf.properties(本地配置文件)

#default global sequence
GLOBAL.HISIDS=
#最小id
GLOBAL.MINID=10001
#最大id
GLOBAL.MAXID=20000
#当前id
GLOBAL.CURID=10000

# self define sequence
TEST.HISIDS=
TEST.MINID=1001
TEST.MAXID=2000
TEST.CURID=1000
插入数据
insert into a (id,name) values(next value for MYCATSEQ_TEST,'c');

 

 

 

 

 

 

 

 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值