mariadb读写分离
2024-10-07 04:48:29
mycat
maraidb主从架构,是主负责写,从负责读,但前端如果没有调度器的话,是无法实现读写分离的。这就涉及到了中间站,它就是mycat。一定要在主从架构的基础之上实现读写分离。
配置三台的主从架构后。
mycat端配置:
一、在hosts文件中添加(每台机器都添加)
mycat:192.168.24.10 hostM1:192.168.24.8 hostM2:192.168.24.9
二、需要安装java1.8版本或以上
三、下载mycat源码包
wget http://dl.mycat.io/1.6-RELEASE/Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz tar -zxvf Mycat-server-1.6-RELEASE--linux.tar.gz mv mycat /usr/local/
四、vim /usr/local/mycat/conf/server.xml设置如下参数
<user name="testuser1"> <property name="password">testuser1</property> <property name="schemas">testdb,testdb1</property> </user> <user name="testuser2"> <property name="password">testuser2</property> <property name="schemas">testdb,testdb1</property> <property name="readOnly">true</property> </user>
#testuser1用来写的用户
#testuser2用来读的用户
#testdb是mycat是逻辑库
五、vim /usr/local/mycat/conf/schema.xml配置(请先备份cp schema.xml schema.xml.bak,然后把schema.xml文件清空,粘贴以下内容)
<?xml version="1.0"?> <!DOCTYPE mycat:schema SYSTEM "schema.dtd"> <mycat:schema xmlns:mycat="http://io.mycat/"> <schema name="testdb" checkSQLschema="false" sqlMaxLimit="" dataNode="dn1"> </schema> <schema name="testdb1" checkSQLschema="false" sqlMaxLimit="" dataNode="dn2"> </schema> <dataNode name="dn1" dataHost="hostM1" database="test" /> <dataNode name="dn2" dataHost="hostM1" database="test1" /> <dataHost name="hostM1" maxCon="" minCon="" balance="" writeType="" dbType="mysql" dbDriver="native" switchType= "" slaveThreshold=""> <heartbeat>select user()</heartbeat> <writeHost host="hostM1" url="192.168.24.8:3306" user="testuser1" password="testuser1"> <readHost host="hostS1" url="192.168.24.9.:3306" user="testuser2" password="testuser2" /> </writeHost> </dataHost> </mycat:schema>
六、启动mycat服务
/usr/local/mycat/bin/mycat start
七、登录
8066是管理端口
9066是连接后端数据库的端口,默认是9066,登录该端口后直接用show @@datasource;语句即可查询主从库的读写状态
mysql -h 192.168.24.10 -P8066 -utestuser1 -ptestuser1 (可以执行增删改查) mysql -h 192.168.24.10 -P9066 -utestuser1 -ptestuser1 (可以查看节点状态)
查看心跳状态
show @@heartbeat\G
查看前端连接状态
show @@connection\G
#查看后端状态
show @@backend\G
#查看数据库资源状态
show @@datasource
主节点端:创建用户
grant all on *.* to testuser1@'%' identified by 'testuser1'; grant all on *.* to testuser2@'%' identified by 'testuser;
最新文章
- 解决 ERROR: JDWP Transport dt_socket failed to initialize, TRANSPORT_INIT(510)异常
- PAT乙级 1003. 我要通过!(20)
- 记录一些容易忘记的属性 -- UIKeyboard
- [原创]C语言利用pcre正则表达式库
- 在Struts2中使用poi进行excel操作下载的时候报getOutputStream() has already been called for this response 错误 [转]
- CentOS系统通过PXE实现批量无人值守安装
- MySQL5.7下修改root密码
- Python数据结构应用3——链表
- RecycleView的notifyItemRemoved使用注意
- 从零学习Fluter(二):win10上环境搭建以及模拟器和真机调试
- [物理学与PDEs]第1章第9节 Darwin 模型 9.2 Maxwell 方程组的一个定解问题
- Java Spring Boot VS .NetCore (二)实现一个过滤器Filter
- eclipse 中 大小写切换:ctrl+shift+x 转为大写 ctrl+shift+y 转为小写
- ArrayMap代替HashMap
- 求助:将以下ES5格式代码转换为ES6格式!!!
- ThinkPHP实现事务回滚示例代码
- 64位系统下同时使用64位和32位的eclipse
- 【Networking】(转)一个非常好的epoll+线程池服务器Demo
- JQuery获取和设置Select选项的常用方法总结
- CentOS7关闭默认防火墙启用iptables防火墙
热门文章
- java实现二分法查找
- 使用多块GPU进行训练 1.slim.arg_scope(对于同等类型使用相同操作) 2.tf.name_scope(定义名字的范围) 3.tf.get_variable_scope().reuse_variable(参数的复用) 4.tf.py_func(构造函数)
- Android Context完全解析与各种获取Context方法
- 使用bloomfilter
- 学习笔记 - Git
- 【5】标题上的小logo
- zabbix服务端安装
- java 接口default的判断规则
- cosbench 安装
- [开发技巧]&#183;Python实现信号滤波(基于scipy)