MySQL 部署分布式架构 MyCAT (二)
安装 MyCAT
安装 java 环境(db1)
yum install -y java
下载 Mycat-server-1.6.5-release-20180122220033-linux.tar.gz
官网地址在:http://dl.mycat.io/
把 软件上传至 /software 上
cd /data/
tar zxf /software/Mycat-server-1.6.5-release-20180122220033-linux.tar.gz
vi /etc/profile
export PATH=/data/mycat/bin:$PATH
source /etc/profile
mycat 配置文件目录介绍
logs目录:
wrapper.log ---->mycat启动日志
mycat.log ---->mycat详细工作日志
conf目录:
schema.xml
主配置文件(读写分离、高可用、分布式策略定制、节点控制)
server.xml
mycat软件本身相关的配置
rule.xml
分片规则配置文件,记录分片规则列表、使用方法等
测试数据准备(db1)
mysql -S /data/3307/mysql.sock -e "grant all on *.* to root@'192.168.31.%' identified by '123';"
mysql -S /data/3308/mysql.sock -e "grant all on *.* to root@'192.168.31.%' identified by '123';"
mysql -S /data/3307/mysql.sock
create database klvchen;
CREATE TABLE klvchen.t1
(
PersonID int,
Name varchar(255)
);
insert into klvchen.t1 values(1,'lucy'),(2,'lily'),(3,'james');
mysql -S /data/3308/mysql.sock
create database klvchen;
CREATE TABLE klvchen.t1
(
PersonID int,
Name varchar(255)
);
insert into klvchen.t1 values(1,'lucy'),(2,'lily'),(3,'james');
配置 MyCAT 读写分离
配置 schema.xml (db1)
cd /data/mycat/conf
mv schema.xml schema.xml.ori
vi 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="100" dataNode="dn1">
</schema>
<dataNode name="dn1" dataHost="localhost1" database= "klvchen" />
<dataHost name="localhost1" maxCon="1000" minCon="10" balance="1" writeType="0" dbType="mysql" dbDriver="native" switchType="1">
<heartbeat>select user()</heartbeat>
<writeHost host="db1" url="192.168.31.205:3307" user="root" password="123">
<readHost host="db2" url="192.168.31.205:3309" user="root" password="123" />
</writeHost>
</dataHost>
</mycat:schema>
测试(db1)
# 启动
mycat start
# 连接mycat:
mysql -uroot -p123456 -h 127.0.0.1 -P8066
select @@server_id;
+-------------+
| @@server_id |
+-------------+
| 9 |
+-------------+
begin; select @@server_id;commit;
+-------------+
| @@server_id |
+-------------+
| 7 |
+-------------+
1 row in set (0.00 sec)
配置讲解
# 逻辑库:schema
<schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1">
</schema>
# 数据节点:datanode
<dataNode name="dn1" dataHost="localhost1" database= "klvchen" />
# 数据主机:datahost(w和r)
<dataHost name="localhost1" maxCon="1000" minCon="10" balance="1" writeType="0" dbType="mysql" dbDriver="native" switchType="1">
<heartbeat>select user()</heartbeat>
<writeHost host="db1" url="192.168.31.205:3307" user="root" password="123">
<readHost host="db2" url="192.168.31.205:3309" user="root" password="123" />
</writeHost>
</dataHost>
# balance属性
负载均衡类型,目前的取值有3种:
1. balance="0", 不开启读写分离机制,所有读操作都发送到当前可用的writeHost上。
2. balance="1",全部的readHost与standby writeHost参与select语句的负载均衡,简单的说,
当双主双从模式(M1->S1,M2->S2,并且M1与 M2互为主备),正常情况下,M2,S1,S2都参与select语句的负载均衡。
3. balance="2",所有读操作都随机的在writeHost、readhost上分发。
# writeType属性
负载均衡类型,目前的取值有2种:
1. writeType="0", 所有写操作发送到配置的第一个writeHost,第一个挂了切到还生存的第二个writeHost,重新启动后已切换后的为主,切换记录在配置文件中:dnindex.properties
2. writeType=“1”,所有写操作都随机的发送到配置的writeHost,但不推荐使用
# switchType属性
-1 表示不自动切换
1 默认值,自动切换
2 基于MySQL主从同步的状态决定是否切换 ,心跳语句为 show slave status
# datahost其他配置
maxCon="1000":最大的并发连接数
minCon="10" :mycat在启动之后,会在后端节点上自动开启的连接线程
tempReadHostAvailable="1": 如果配置了这个属性 writeHost 下面的 readHost 仍旧可用,默认 0 可配置(0、1)
<heartbeat>select user()</heartbeat> : 监测心跳
配置 MyCAT 读写分离高可用
配置 schema.xml (db1)
cd /data/mycat/conf
cp schema.xml schema.xml.rw
vi 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="100" dataNode="dn1">
</schema>
<dataNode name="dn1" dataHost="localhost1" database= "klvchen" />
<dataHost name="localhost1" maxCon="1000" minCon="10" balance="1" writeType="0" dbType="mysql" dbDriver="native" switchType="1">
<heartbeat>select user()</heartbeat>
<writeHost host="db1" url="192.168.31.205:3307" user="root" password="123">
<readHost host="db2" url="192.168.31.205:3309" user="root" password="123" />
</writeHost>
<writeHost host="db3" url="192.168.31.206:3307" user="root" password="123">
<readHost host="db4" url="192.168.31.206:3309" user="root" password="123" />
</writeHost>
</dataHost>
</mycat:schema>
mycat restart
测试(db1)
mysql -uroot -p123456 -h 127.0.0.1 -P8066
select @@server_id;
+-------------+
| @@server_id |
+-------------+
| 9 |
+-------------+
select @@server_id;
+-------------+
| @@server_id |
+-------------+
| 19 |
+-------------+
select @@server_id;
+-------------+
| @@server_id |
+-------------+
| 17 |
+-------------+
begin; select @@server_id;commit;
+-------------+
| @@server_id |
+-------------+
| 7 |
+-------------+
# 关闭真正的 writehost (db1)
systemctl stop mysqld3307
# 测试
mysql -uroot -p123456 -h 127.0.0.1 -P8066
select @@server_id;
+-------------+
| @@server_id |
+-------------+
| 19 |
+-------------+
select @@server_id;
+-------------+
| @@server_id |
+-------------+
| 19 |
+-------------+
begin; select @@server_id;commit;
+-------------+
| @@server_id |
+-------------+
| 17 |
+-------------+
begin; select @@server_id;commit;
+-------------+
| @@server_id |
+-------------+
| 17 |
+-------------+
结论
真正的 writehost:负责写操作的writehost
standby writeHost :和readhost一样,只提供读服务
当写节点宕机后,后面跟的readhost也不提供服务,这时候standby的writehost就提供写服务,
后面跟的readhost提供读服务
MySQL 部署分布式架构 MyCAT (二)的更多相关文章
- MySQL 部署分布式架构 MyCAT (五)
分片(水平拆分) 4.全局表 业务使用场景: 如果你的业务中有些数据类似于数据字典,比如配置文件的配置, 常用业务的配置或者数据量不大很少变动的表,这些表往往不是特别大, 而且大部分的业务场景都会用到 ...
- MySQL 部署分布式架构 MyCAT (四)
分片(水平拆分) 2.取模分片(mod-long) cd /data/mycat/conf cp schema.xml schema.xml.rang-long vi schema.xml <? ...
- MySQL 部署分布式架构 MyCAT (三)
配置垂直分表 修改 schema.xml (db1) cd /data/mycat/conf cp schema.xml schema.xml.rwh # 修改配置 vi schema.xml < ...
- MySQL 部署分布式架构 MyCAT (一)
架构 环境 主机名 IP db1 192.168.31.205 db2 192.168.31.206 前期准备 开启防火墙,安装配置 mysql (db1,db2) firewall-cmd --pe ...
- MemSQL分布式架构介绍(二)
接上次的MemSQL分布式架构介绍(一),原文在这里:http://docs.memsql.com/latest/concepts/distributed_architecture/ 首先上张图,是我 ...
- Mysql 高可用(MHA)-读写分离(Atlas)-分布式架构(Mycat)
Mysql 高可用(MHA)-读写分离(Atlas) 1. 搭建主从复制(一主两从) 1.1 准备环境 1 主库:10.0.0.51/db01 2 从库:10.0.0.52/db02,10.0.0.5 ...
- MemSQL分布式架构介绍(一)
最近在了解MemSQL架构,看了些官方文档,在这里做个记录,原文在这里:http://docs.memsql.com/latest/concepts/distributed_architecture/ ...
- 分享 : 警惕MySQL运维陷阱:基于MyCat的伪分布式架构
分布式数据库已经进入了全面快速发展阶段.这种发展是与时俱进的,与人的需求分不开,因为现在信息时代的高速发展,导致数据量和交易量越来越大.这种现象首先导致的就是存储瓶颈,因为MySQL数据库实质上还是一 ...
- MySQL for OPS 10:MyCAT 分布式架构
写在前面的话 在学习的索引的时候,有提到,当数据表数据达到 800W 的时候,索引的性能就开始逐步下降.对于一个公司而言,主要业务数据表达到 1000W 都很容易.同时这张表一般都是业务常用的表,操作 ...
随机推荐
- 并发编程~~~多线程~~~守护线程, 互斥锁, 死锁现象与递归锁, 信号量 (Semaphore), GIL全局解释器锁
一 守护线程 from threading import Thread import time def foo(): print(123) time.sleep(1) print('end123') ...
- 获取当前Linux的外网地址
有时候我们在测试配置外网IP是不是成功时,我们需要使用一些命令,使用 ssh 登录可以查看ip, 还有一种可以使用命令: curl ifconfig.me 进行方便获取,公网IP:真的是非常好的服务: ...
- Error 1327 Invalid Drive 的解决办法
出现场景: 当我在安装STM32公司的 STM32 ST-LINK Utility v4.5.0 软件时,弹出了这个错误.弹框的内容大体是说找不到D盘,这里忘记截图了. 我的电脑的硬盘是我另一 ...
- CSRF说明
CSRF: 跨站请求伪造 与XSS区别: XSS:利用用户对站点的信任 CSRF:利用站点对已经经过身份认证客户端的信任 CSRF原理(在用户非自愿.不知情的情况下提交请求): 当client已经与s ...
- (转)vue-router原理
转载地址:https://segmentfault.com/a/1190000014822765 随着前端应用的业务功能起来越复杂,用户对于使用体验的要求越来越高,单面(SPA)成为前端应用的主流形式 ...
- AcWing 791. 高精度加法 解题记录
题目地址 https://www.acwing.com/problem/content/description/793/ 题目描述给定两个正整数,计算它们的和. 输入格式共两行,每行包含一个整数. 输 ...
- Hbase启动出问题 master.HMaster: Failed to become active master
Hbase启动出问题 2019-12-15 09:59:57,183 WARN [hadoop:16000.activeMasterManager] hdfs.DFSClient: DFS Read ...
- ASP.NET CORE HOW TO ADD "ACCESS-CONTROL-EXPOSE-HEADERS" HEADERS?
services.AddCors(options => { options.AddPolicy("AnotherPolicy" ...
- eclipse中的clean操作
在eclipse中写JavaWeb项目时,有时候会出现代码修改了,但是执行的效果还是修改之前的,这时候clean一下就会解决问题 1.clean操作 Project---->clean---&g ...
- 函数基础实战之ATM和购物车系统
username_list = [] prize_dict = { '0': "芭比娃娃", '1': "变形金刚", '2': "psp游戏机&qu ...