安装 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 (二)的更多相关文章

  1. MySQL 部署分布式架构 MyCAT (五)

    分片(水平拆分) 4.全局表 业务使用场景: 如果你的业务中有些数据类似于数据字典,比如配置文件的配置, 常用业务的配置或者数据量不大很少变动的表,这些表往往不是特别大, 而且大部分的业务场景都会用到 ...

  2. MySQL 部署分布式架构 MyCAT (四)

    分片(水平拆分) 2.取模分片(mod-long) cd /data/mycat/conf cp schema.xml schema.xml.rang-long vi schema.xml <? ...

  3. MySQL 部署分布式架构 MyCAT (三)

    配置垂直分表 修改 schema.xml (db1) cd /data/mycat/conf cp schema.xml schema.xml.rwh # 修改配置 vi schema.xml < ...

  4. MySQL 部署分布式架构 MyCAT (一)

    架构 环境 主机名 IP db1 192.168.31.205 db2 192.168.31.206 前期准备 开启防火墙,安装配置 mysql (db1,db2) firewall-cmd --pe ...

  5. MemSQL分布式架构介绍(二)

    接上次的MemSQL分布式架构介绍(一),原文在这里:http://docs.memsql.com/latest/concepts/distributed_architecture/ 首先上张图,是我 ...

  6. 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 ...

  7. MemSQL分布式架构介绍(一)

    最近在了解MemSQL架构,看了些官方文档,在这里做个记录,原文在这里:http://docs.memsql.com/latest/concepts/distributed_architecture/ ...

  8. 分享 : 警惕MySQL运维陷阱:基于MyCat的伪分布式架构

    分布式数据库已经进入了全面快速发展阶段.这种发展是与时俱进的,与人的需求分不开,因为现在信息时代的高速发展,导致数据量和交易量越来越大.这种现象首先导致的就是存储瓶颈,因为MySQL数据库实质上还是一 ...

  9. MySQL for OPS 10:MyCAT 分布式架构

    写在前面的话 在学习的索引的时候,有提到,当数据表数据达到 800W 的时候,索引的性能就开始逐步下降.对于一个公司而言,主要业务数据表达到 1000W 都很容易.同时这张表一般都是业务常用的表,操作 ...

随机推荐

  1. FCC---Use the CSS Transform Property skewX to Skew an Element Along the X-Axis

    The next function of the transform property is skewX(), which skews the selected element along its X ...

  2. flex三个对齐属性的记忆方式

    今天在群里聊天有人说 flex的那几个居中属性好难记,时不时都要尝试一下,或者查看一下文档,现在我把我自己的记忆方式分享一下... 1. flex的居中主要是通过这三个属性来实现的: justify- ...

  3. ios11下适配UItableView

    参考链接: https://www.cnblogs.com/spider-pei/p/7592906.html

  4. Jupyter Notebooks 配置

    重装了三遍(破音) 一.首先进行Anaconda的下载 然后安装,将环境配置到系统变量上,如下 然后,打开 windows 的终端,检查是否配置成功 conda -V 然后就可以开始 Jupyter ...

  5. bay——巡检RAC命令_版本.txt

    df -lhhostnamecat /etc/hostsifconfig ps -ef | grep tnsps -ef | grep asmps -ef | grep ora_ ls -l /dev ...

  6. 示例:Oracle表锁、行锁模拟和处理

    for update模拟锁表 --session 1 SQL> select * from tt for update; --session 2 SQL> update tt set id ...

  7. webpack打包 The 'mode' option has not been set, webpack will fallback to

    webpack 打包报错 The 'mode' option has not been set, webpack will fallback to 'production' for,Module no ...

  8. sched_yield()和nanosleep()对进程调度的影响

    关键词:sched_yield().nanosleep()等等. sched_yield()主动放弃CPU执行权,nanosleep()是睡眠一段时间后再唤醒. 1. sched_yield()实现 ...

  9. mysql用户数据库只读权限提升全局权限

    1.只读用户登录数据库 2.执行命令: mysql> unlock tables;mysql> set global read_only=0;

  10. python调用C++ DLL 传参技巧

    结构体传参:http://www.jb51.net/article/52513.htm 准备工作: C++文件(cpp):(注意在函数声明上加上extern "C" 的修饰) #i ...