mycat实现读写分离_mybatis读写分离实现

mycat实现读写分离_mybatis读写分离实现环境:四台主机,两台mysql做主从:master和slave一台mysql做测试,ip:10.30.162.142一台mycat做读写分离,ip:192.168.122.230客户端访问mycat端的虚拟数据库mycat端虚拟数据库设定如下:user:adminpassword:redhatmycat通过一个真实数据库授过权的用户来对数据库端进行数据的操作,在这个实验中这个用户为m…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

环境:四台主机,两台mysql做主从:master和slave
一台mysql做测试,ip:10.30.162.142
一台mycat做读写分离,ip:192.168.122.230

客户端访问mycat端的虚拟数据库
mycat端虚拟数据库设定如下:
user:admin
password:redhat

mycat通过一个真实数据库授过权的用户来对数据库端进行数据的操作,在这个实验中这个用户为mycatuser,密码为123,能访问的数据库是mycat。
一、实现mysal主从,创建mycat库。
过程略,master:192.168.122.82
slave: 192.168.122.217
二、在master端对mycatuser授权给mycatuser授权,
mysql> GRANT all ON *.* TO "mycatuser"@"%" IDENTIFIED BY "123"; Query OK, 0 rows affected, 1 warning (0.11 sec)
(授权最好是针对mycat端,某个具体的数据库。也可以给所有库所有表,如上)
三、mycat端进行登陆测试

[root@mycat ~]# mysql -umycatuser -p'123' -h 192.168.122.82
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 20
Server version: 5.7.17-log Source distribution

Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mycat              |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.00 sec)

四、配置mycat
4.1、安装
MyCat的官方网站:http://www.mycat.org.cn/
(mycat需要jdk环境的支持)
4.2、启动服务
不一定成功,一定要看端口,或者jps命令看java进程

/usr/local/mycat/bin/mycat  start
[root@kvm3 mycat]# ss -antp | grep -E "8066|9066"
LISTEN     0      100         :::9066                    :::*                   users:(("java",pid=18644,fd=72))
LISTEN     0      100         :::8066                    :::*                   users:(("java",pid=18644,fd=76))

4.3、修改配置文件()
server.xml:配置虚拟数据库的用户名和密码,让客户端通过虚拟的用户名和密码进行访问。

#主要修改
[root@mycat ~]# vim  /usr/local/mycat/conf/server.xml
        <user name="admin">
                <property name="password">redhat</property>
                <property name="schemas">game</property>
          </user> 

user name=”admin”指定虚拟用户名
redhat 指定admin用户的密码是redhat
game 指定admin用户相应的schema是game
在server.xml中一套 必须对应schema.xml配置中相应的schemal
否则有语法错误。
server.xml本来有配置如下:

<user name="user">
                <property name="password">user</property>
                <property name="schemas">TESTDB</property>
                <property name="readOnly">true</property>
        </user>

但在schema.xml中没有做相应的schema配置,则出现语法错误,这一段不用则必须删掉。
在schema.xml中设置与后端数据库相连的真实用户等。

[root@kvm3 ~]# cat /usr/local/mycat/conf/schema.xml
<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
	<schema name="game" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1">
	</schema>
	<!-- <dataNode name="dn1$0-743" dataHost="localhost1" database="db$0-743"
		/> -->
	<dataNode name="dn1" dataHost="localhost1" database="mycat" />
	<dataHost name="localhost1" maxCon="1000" minCon="10" balance="1"
			  writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">
		<heartbeat>select user()</heartbeat>
		<writeHost host="hostM1" url="192.168.122.82:3306" user="mycatuser" password="123">
			<readHost host="hostS2" url="192.168.122.217:3306" user="mycatuser" password="123" />
		</writeHost>
	</dataHost>
</mycat:schema>
<schema name="game" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1">

给server.xml中配置的scheal(game)设置相应的节点为dn1。

<dataNode name="dn1" dataHost="localhost1" database="mycat" />

给dn1设置对应的主机池localhost1(逻辑上的,并不真实存在),对应的真实数据库mycat

<dataHost name="localhost1" maxCon="1000" minCon="10" balance="1"
			  writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">

对该主机池的设置,balance=1表示开启读写分离,默认为0指不开启。

<writeHost host="hostM1" url="192.168.122.82:3306" user="mycatuser" password="123">
			<readHost host="hostS2" url="192.168.122.217:3306" user="mycatuser" password="123" />
		</writeHost>

配置后端真实的数据库用于读写,用mycat端用后端数据库中的真实用户mycatuser和密码去连接后端数据库对mycat库进行读写。
4.4、重启服务
五、客户端进行测试
首先在master端的mycat数据库创建一个表

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mycat              |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.01 sec)
mysql> use  mycat
Database changed
mysql> create table table1(name int(3),age tinyint);
Query OK, 0 rows affected (0.05 sec)

客户端可以通过虚拟帐号登陆来查看

[root@chenjiaqi ~]# mysql -uadmin -p -h 192.168.122.230 -P 8066
MySQL [(none)]> show databases;
+----------+
| DATABASE |
+----------+
| game     |
+----------+
MySQL [(none)]> show tables from game;
+-----------------+
| Tables_in_mycat |
+-----------------+
| table1          |
+-----------------+

在客户端插入数据

MySQL [game]> insert into table1 values(777,12);
Query OK, 1 row affected (0.02 sec)

master端查看

mysql> use mycat
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> select * from table1;
+------+------+
| name | age  |
+------+------+
|  777 |   12 |
+------+------+
1 row in set (0.00 sec)
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/182357.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 大数据面试题——HBase面试题总结

    大数据面试题——HBase面试题总结1、HBase的特点是什么?1)大:一个表可以有数十亿行,上百万列;2)无模式:每行都有一个可排序的主键和任意多的列,列可以根据需要动态的增加,同一张表中不同的行可以有截然不同的列;3)面向列:面向列(族)的存储和权限控制,列(族)独立检索;4)稀疏:空(null)列并不占用存储空间,表可以设计的非常稀疏;5)数据多版本:每个单元中的数据可以有多个版本,默认情况下版本号自动分配,是单元格插入时的时间戳;6)数据类型单一:Hbase中的数据都是字符串,没有类型。2…

  • 编程是程序设计吗_做软件必须先设计再编程吗

    编程是程序设计吗_做软件必须先设计再编程吗常在电脑前工作,总有那么几天会对未来迷茫,可能是每天静止的坐着,感觉自己在变老,而电脑总想个孩子,每天能冒出无数个想法,让你去琢磨它,跟上它的节奏,真有点TheBigBangTheory的味儿,

  • Pycharm设置自动代码提示(超详细)

    Pycharm设置自动代码提示(超详细)【前言】最近在使用pycharm这款编译器的时候,发现在学习python过程中没有代码提示就很烦,所以网上收集资料加上自身的实践总结出以下方法如何在pycharm中设置代码提示。【步骤一】起初看到网上很多教程都是这样点击File然后将PowerSaveMode旁边的√去掉就可以,实际上确实是这样的,当我们敲代码的时候比如import就会有自动提示。【注意】但是可能有些小伙伴按照这样的提示可是还是不显示代码自动提示,为什么会这样呢,原因是你的Python环境没有配置好,我们按照下面

  • C#开发微信门户及应用(32)–微信支付接入和API封装使用

    C#开发微信门户及应用(32)–微信支付接入和API封装使用

  • 【Oracle】OCR的备份和恢复之导出导入

    【Oracle】OCR的备份和恢复之导出导入

  • 如何在线将XPS转换成Word文档?

    如何在线将XPS转换成Word文档?怎么将XPS转成Word?这个比较难,xps是通过虚拟打印机生成的电子文件,与PDF文件类似,但是却不支持直接编辑,要转换只能借助工具。那么什么工具可以转换,不下载软件有没有在线转换的方法?目前XPS转换的工具比较难找,但是小编仍然给大家找到了,不仅可以转换,还有免费试用的呢,下面一起来看看怎么转吧。搜索speedpdf在线转换工具就能进入转换首页,选择最后一排右下的XPStoWord进入转换页面;可以不用登录,直接根据页面提示点击上传需要转换的XPS文件,可以一次性上传多个,或者直接将文件拖到

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号