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\]和引用\[2\]中提供的信息,你可以尝试以下步骤来解决mycat运行出现"io.mycat.replica.ReplicaSelectorRuntime.registerDatasource:268ignored prototypeDs"的问题: 1. 首先,确保你已经正确下载了相关的安装包。你可以从引用\[3\]中提供的链接下载安装包。 2. 解压下载的安装包,并进入解压后的目录。 3. 打开终端或命令行窗口,进入mycat/bin目录。 4. 使用命令"./mycat status"检查mycat的启动状态。如果mycat已经在运行中,可以尝试使用命令"./mycat stop"停止mycat服务。 5. 使用命令"./mycat start"启动mycat服务。 6. 如果问题仍然存在,可以尝试使用命令"./mycat restart"重启mycat服务。 如果问题仍然无法解决,建议查阅mycat的官方文档或寻求相关技术支持。 #### 引用[.reference_title] - *1* [Mycat2.0搭建教程](https://blog.csdn.net/Bejpse/article/details/126075570)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [mycat2读写分离](https://blog.csdn.net/Yourisa/article/details/127611504)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值