博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
读写分离
阅读量:4978 次
发布时间:2019-06-12

本文共 2662 字,大约阅读时间需要 8 分钟。

mycat,proxy,altas可以实现读写分离

逻辑数据库

1.实验环境

以下配置都是建立在mariadb主从没有问题的情况下:

1.三台主机:

在三台机器/etc/hosts添加以下3条主机信息

mycat:192.168.254.24

hostM1:192.168.254.28

hostS1:192.168.254.29

2.需要安装java1.8版本或以上

3.下载mycat源码包

(1)wget

(2)tar -zxvf Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz

(3)mv mycat /usr/local/

2.mycat配置

vim /usr/local/mycat/conf/server.xml设置如下参数

<user name="testuser1">

<property name="password">testuser1</property>

<property name="schemas">testdb,testdb1</property> #testdb,testdb1时逻辑库

</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="1000" dataNode="dn1">

</schema>

<schema name="testdb1" checkSQLschema="false" sqlMaxLimit="1000" dataNode="dn2">

</schema>

<dataNode name="dn1" dataHost="hostM1" database="test" />

<dataNode name="dn2" dataHost="hostM1" database="test1" />

<dataHost name="hostM1" maxCon="2000" minCon="1" balance="1" writeType="1" dbType="mysql" dbDriver="native" switchType=

"1" slaveThreshold="100">

<heartbeat>select user()</heartbeat>

<writeHost host="hostM1" url="192.168.254.28:3306" user="testuser1" password="testuser1">

<readHost host="hostS1" url="192.168.254.29:3306" user="testuser2" password="testuser2" />

</writeHost>

</dataHost>

</mycat:schema>

server.xml和schema.xml标绿色处要一致,都是逻辑库,我这里创建了2个逻辑库

dataHost为数据节点名称,database为真实数据库名称即后台数据库test和test1

balance:

0表示不开启读写分离,都在master上执行读写操作

1表示都参与select

2表示所有读请求随机在readhost和writehost分担

3表示所有读请求对应到readhost里去

writeType

0,所有写操作发送到配置的第一个writeHost

1,所有写操作都随机的发送到配置的writeHost

2,不执行写操作。

switchType

-1,不自动切换

1,默认值,自动切换

2,基于MySQL 主从同步的状态决定是否切换

3,基于MySQL galary cluster的切换机制(适合集群)(1.4.1),心跳语句为 show status like &lsquo;wsrep%&rsquo;

writeHost和readHost分别配置对应后台的mysql主从真实用户密码

3.创建用户并赋予权限(主创建同步到从)

grant all on *.* to testuser1@'%' identified by 'testuser1';

grant all on *.* to testuser2@'%' identified by 'testuser2';

4.启动mycat服务并查看端口

/usr/local/mycat/bin/mycat start #启动服务

8066是管理端口

9066是连接后端数据库的端口,默认是9066,登录该端口后直接用show @@datasource;语句即可查询主从库的读写状态

mysql -h 192.168.254.24 -P8066 -utestuser1 -ptestuser1 (可以执行增删改查)

mysql -h 192.168.254.24 -P9066 -utestuser1 -ptestuser1 (可以查看节点状态)

查看心跳状态

show @@heartbeat\G

#查看前端连接状态

show @@connection\G

#查看后端状态

show @@backend\G

#查看数据库资源状态

show @@datasource

转载于:https://www.cnblogs.com/liangzb310/p/11026926.html

你可能感兴趣的文章
iOS 电话在后台运行时,我的启动图片被压缩
查看>>
poj-1700 crossing river(贪心题)
查看>>
Cheese Aizu - 0558 (搜索题)
查看>>
不使用storyboard模式或更换默认ViewController
查看>>
PHP数组实际占用内存大小的分析
查看>>
文本比较算法三——SUNDAY 算法
查看>>
用bcdedit.exe重建bcd
查看>>
关于元素透明
查看>>
Leetcode 516. Longest Palindromic Subsequence
查看>>
MinDoc文档管理系统搭建
查看>>
[HNOI2011] 数学作业
查看>>
在IDEA中创建Maven项目和添加tomcat
查看>>
ADO MFC SQL2000
查看>>
Hie with the Pie
查看>>
2019.01.04 bzoj2962: 序列操作(线段树+组合数学)
查看>>
ThinkPHP5集成支付宝手机网站支付接口
查看>>
hdu 3584 Cube (三维树状数组,更新区间,查询单点)
查看>>
lvs基础
查看>>
接口测试 rest-assured 使用指南
查看>>
Java 8简明教程
查看>>