mysql+mycat实现读写分离
| centos7 | |||
| master | slave | mycat1.6 | client |
| 192.168.41.10 | 192.168.41.11 | 192.168.41.12 | 192.168.41.13 |
实验环境关闭自己的防火墙
配置所有主机hosts文件:
192.168.41.10 master
192.168.41.11 slave
192.168.41.12 mycat
192.168.41.13 client
1、master(41.10):
vim /etc/my.cnf
[mysqld]
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
server_id =
socket = /usr/local/mysql/mysql.sock
log-error = /usr/local/mysql/data/mysqld.err
log-bin = mysql-bin
systemctl restart mysqld \重启服务读取配置文件参数
1)配置复制用户以及root用户权限

2、slave(41.11)
配置/etc/my.cnf配置文件
[mysqld]
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
server_id =
socket = /usr/local/mysql/mysql.sock
log-error = /usr/local/mysql/data/mysqld.err
relay-log = relay-log-bin
relay-log-index = slave-relay-bin.index
systemctl restart mysqld
mysql> change master to master_host='192.168.41.10',master_user='myslave',master_password='123.com',master_log_file='mysql-bin.000002',master_log_pos=1334;
mysql> start slave ;
mysql> show slave status\G;
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
mysql> grant all on . to root@'%' identified by '123.com';
mysql> flush privileges;
回到master主机创建test库
mysql> create database test;
3、配置mycat(41.12)
1)部署mycat
wget http://dl.mycat.io/1.6-RELEASE/Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz
[root@192 ~]# tar zxf Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz -C /usr/local
2)加载环境变量
[root@192 ~]# vi /etc/profile
.....
export PATH=$PATH:/usr/local/java/bin
export JAVA_HOME=/usr/local/java
export MYCAT_HOME=/usr/local/mycat
export PATH=$PATH:/usr/local/mycat/bin
[root@192 ~]# source /etc/profile
3)配置serve.xml
[root@192 ~]# cd /usr/local/mycat/conf/
[root@192 conf]# vim server.xml
<user name="root">
<property name="password">.com</property>
<property name="schemas">test</property> !-- 表级 DML 权限设置 --!--
privileges check="false"schema name="TESTDB" dml="" table name="tb01" dml=""/tabletable name="tb02" dml=""/table/schema/privileges--/useruser name="user"property name="password"user/propertyproperty name="schemas"test/propertyproperty name="readOnly"true/property/user</mycat:server>
4)配置schema.xml
[root@192 conf]# vim schema.xml
<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">;
<schema name="test" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1">
</schema> <dataNode name="dn1" dataHost="host01" database="test" /> <dataHost name="host01" maxCon="1000" minCon="10" balance="1"
writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
<heartbeat>show slave status</heartbeat>
<writeHost host="hostM1" url="192.168.41.10:3306" user="root" password="123.com">
<readHost host="hostS1" url="192.168.41.11:3306" user="root" password="123.com"/>
</writeHost>
</dataHost>
</mycat:schema>balance 属性负载均衡类型,目前的取值有 4 种:
balance="0", 不开启读写分离机制,所有读操作都发送到当前可用 的writeHost 上。 balance="1",全部的 readHost 与 stand by writeHost 参与 select 语句的负载均衡,简单的说,当双主双从模式(M1 ->S1 , M2->S2,并且 M1 与 M2 互为主备),正常情况下, M2,S1,S2 都参与 select 语句的负载均衡。 balance="2",所有读操作都随机的在 writeHost、 readhost 上分发。 balance="3", 所有读请求随机的分发到 wiriterHost 对应的 readhost 执行,writerHost 不负担读压力,注意 balance=3 只在 1.4 及其以后版本有, 1.3 没有。
writeType 属性,负载均衡类型,目前的取值有 3 种:
writeType="0", 所有写操作发送到配置的第一个 writeHost,第一个挂了切到还生存的第二个writeHost,重新启动后已切换后的为准,切换记录在配置文件中:dnindex.properties . writeType="1",所有写操作都随机的发送到配置的 writeHost。 writeType="2",没实现。
switchType 属性
-1 表示不自动切换 1 默认值,自动切换 2 基于MySQL 主从同步的状态决定是否切换
5)启动mycat服务器
[root@192 logs]# mycat start
[root@192 logs]# tailf wrapper.log #观察启动日志,便于排错
[root@192 logs]# ss -anpt | grep java
LISTEN 0 1 127.0.0.1:32000 : users:(("java",pid=40133,fd=4))
LISTEN 0 50 :::50632 ::: users:(("java",pid=40133,fd=51))
LISTEN 0 100 :::9066 ::: users:(("java",pid=40133,fd=69))
LISTEN 0 50 :::33782 ::: users:(("java",pid=40133,fd=53))
LISTEN 0 50 :::1984 ::: users:(("java",pid=40133,fd=52))
LISTEN 0 100 :::8066 :::* users:(("java",pid=40133,fd=73))
4、客户端(41.13)验证读写分离
①登录到连接端口
[root@ ~]# mysql -h 192.168.41.12 -P -uroot -p123.com
mysql> show databases;
+----------+
| DATABASE |
+----------+
| test |
+----------+
row in set (0.01 sec) mysql> use test
Database changed
mysql> create table tb (id int);
Query OK, rows affected (0.03 sec) mysql> insert into tb values ();
Query OK, row affected (0.05 sec) mysql> select * from tb;
+------+
| id |
+------+
| |
+------+
row in set (0.02 sec)
②登录管理端口
[root@ ~]# mysql -P9066 -uroot -p123.com -h 192.168.41.12
mysql> show @@datasource ;
+----------+--------+-------+--------------+------+------+--------+------+------+---------+-----------+------------+
| DATANODE | NAME | TYPE | HOST | PORT | W/R | ACTIVE | IDLE | SIZE | EXECUTE | READ_LOAD | WRITE_LOAD |
+----------+--------+-------+--------------+------+------+--------+------+------+---------+-----------+------------+
| dn1 | hostM1 | mysql | 192.168.1.12 | | W | | | | | | |
| dn1 | hostS1 | mysql | 192.168.1.10 | | R | | | | | | |
+----------+--------+-------+--------------+------+------+--------+------+------+---------+-----------+------------+
从管理端口观察两主机负载变化,发现READ_LOAD在hostS1为2, WRITE_LOAD在hostM1为2,说明读写分离已经实现
mysql+mycat实现读写分离的更多相关文章
- MySQL - MyCat 实现读写分离
前言 MyCat是一个彻底开源的,面向企业应用开发的大数据库集群,支持事务.ACID.可以替代MySQL的加强版数据库.其功能有可以视为MySQL集群的企业级数据库,用来替代昂贵的Oracle集群.融 ...
- MySQL主从复制 + Mycat实现读写分离
说明:两台MySQL服务器都是使用CentOS6.5系统,MySQL版本为mysql-5.7.17 MySQL一主一被实现主从复制 注意:写包括insert,delete,update 操作:读只有s ...
- Mysql主从复制,读写分离(mysql-proxy),双主结构完整构建过程
下面介绍MySQL主从复制,读写分离,双主结构完整构建过程,不涉及过多理论,只有实验和配置的过程. Mysql主从复制(转载请注明出处,博文地址:) 原理是master将改变记录到二进制日志(bina ...
- Mycat实现读写分离,主备热切换
实验环境:ubutu server 14 Master IP:172.16.34.212 Slave IP:172.16.34.34.156 Mycat server IP:172.16.34.219 ...
- Mysql主从复制,读写分离(mysql-proxy)
Mysql主从复制,读写分离(mysql-proxy) 下面介绍MySQL主从复制,读写分离,双主结构完整构建过程,不涉及过多理论,只有实验和配置的过程. Mysql主从复制(转载请注明出处,博文地址 ...
- Mycat分布式数据库架构解决方案--Mycat实现读写分离
echo编辑整理,欢迎转载,转载请声明文章来源.欢迎添加echo微信(微信号:t2421499075)交流学习. 百战不败,依不自称常胜,百败不颓,依能奋力前行.--这才是真正的堪称强大!!! 安装完 ...
- 使用docker 实现MySQL主从同步/读写分离
1. 利用 docker 实现 mysql 主从同步 / 读写分离 为了保证数据的完整和安全,mysql 设计了主从同步,一个挂掉还可以用另个.最近重构论坛,想来改成主从吧.担心失误,就先拿 dock ...
- mycat 实现读写分离
mycat 实现读写分离 配置mysql实现主从复制 安装jdk 安装mycat实现读写分离 tar zxf Mycat-server-1.6-RELEASE-20161028204710-sangn ...
- springboot2.0+mycat实验读写分离
声明:用户到达一定程度,架构就必须要考虑,因为在这个前提下,读写分离,尤为重要. 1.搭建mysql主从复制 https://www.cnblogs.com/ywjfx/p/10264383.html ...
随机推荐
- [转] 分代垃圾回收的 新旧代引用问题(原标题:Back To Basics: Generational Garbage Collection)
原文链接: https://blogs.msdn.microsoft.com/abhinaba/2009/03/02/back-to-basics-generational-garbage-colle ...
- Codeforces Round #425 (Div. 2)
A 题意:给你n根棍子,两个人每次拿m根你,你先拿,如果该谁拿的时候棍子数<m,这人就输,对手就赢,问你第一个拿的人能赢吗 代码: #include<stdio.h>#define ...
- 05 详解C# 迭代器
迭代器模式是设计模式中行为模式(behavioral pattern)的一个例子,他是一种简化对象间通讯的模式,也是一种非常容易理解和使用的模式. 简单来说,迭代器模式使得你能够获取到序列中的所有元素 ...
- 了解Serverless架构
1 概述 Serverless中文译为“无服务”是一种新兴起的架构模式,公司ESB产品引入Rest微服务服务机制过程,笔者刚好参与其中,其中Serverless作为一个新起的概念,跟微服务架构相关,为 ...
- 解决Jenkins安装的时区问题
正常情况下,jenkins是Java执行在Java容器,比如tomcat容器之下,只要改了tomcat的时区就行.我这里是为了方便后续的代码可用性测试,用的是Ubuntu中apt在线安装,也只是安装了 ...
- Not posting notification with icon==0问题解决
问题:E/NotificationService: Not posting notification with icon==0: Notification(pri=0 contentView=null ...
- clion打断点不生效
打开CLion的偏好设置(Preferences),选择Build,Execution,Deployment->Toolchains,将Debugger中的Bundled LLDB修改为Bund ...
- Key-Value 数据库简介
1.Aerospike 官方网站:https://www.aerospike.com/ Aerospike是一个以分布式为核心基础,可基于行随机存取内存中索引.数据或SSD存储中数据的数据库. Aer ...
- Python - 搭建Jupyter notebook环境
1- Jupyter简介 HomePage:https://jupyter.org/ 安装指南:https://jupyter.org/install.html 官方文档:https://jupyte ...
- 使用线程统计信息(Thread Statistics)
可在session log中使用线程统计信息来判断source,target或组的性能瓶颈 默认情况下,Integration Service在运行session时,使用一个reader thread ...