MySQL - MyCat 实现读写分离
前言
MyCat是一个彻底开源的,面向企业应用开发的大数据库集群,支持事务、ACID、可以替代MySQL的加强版数据库.
其功能有可以视为MySQL集群的企业级数据库,用来替代昂贵的Oracle集群.融合了内存缓存技术、NoSQL技术、HDFS大数据的新型SQL Server,结合传统数据库和新型分布式数据仓库的新一代企业级数据库产品.
◆案例1◆ 配置MyCat实现读写分离
安装JDK
tar -xzvf jdk-8u171-linux-x64.tar.gz -C /usr/local/ mv /usr/local/jdk1.8.0_171/ /usr/local/jdk
配置JAVA环境变量
vim /etc/profile #=============================================================================
#Java-JDK-Path export JAVA_HOME=/usr/local/jdk
export JAVA_BIN=/usr/local/jdk/bin
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME JAVA_BIN PATH CLASSPATH
#============================================================================= source /etc/profile
进入所有数据库依次创建远程登陆权限
grant all on *.* to "lyshark"@"%" identified by ""; create database lysharkdb; #创建测试数据库
解压MyCat
tar -xzvf Mycat-server-1.6.5-release-20180122220033-linux.tar.gz -C /usr/local/
修改MyCat配置文件
a. 修改用户授权文件,写入MyCat登陆账号
vim /usr/local/mycat/conf/server.xml
<user name="root" defaultAccount="true"> #指定MyCat登陆用户名
<property name="password">123456</property> #指定密码
<property name="schemas">lysharkDB</property> #指定同步数据库
</user>
<user name="user"> #指定MyCat登陆用户名
<property name="password">123456</property> #指定密码
<property name="schemas">lysharkDB</property> #指定同步数据库
<property name="readOnly">true</property> #指定只读
</user>
b. 修改MyCat读写分离策略
vim /usr/local/mycat/conf/schema.xml <?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/"> <schema name="lysharkDB" checkSQLschema="false" sqlMaxLimit="" dataNode="dn_test"> </schema>
<dataNode name="dn_test" dataHost="dh_43" database="lysharkDB" /> <dataHost name="dh_43" maxCon="" minCon="" balance="" writeType="" dbType="mysql" dbDriver="native" switchType="" slaveThreshold=""> <heartbeat>select user()</heartbeat> <writeHost host="43_M" url="192.168.1.13:3306" user="lyshark" password=""> # 配置写主机
<readHost host="45_S1" url="192.168.1.14:3306" user="lyshark" password="" /> # 配置读主机
<readHost host="45_S2" url="192.168.1.15:3306" user="lyshark" password="" /> # 配置读主机 </writeHost>
</dataHost>
</mycat:schema> schema name="lysharkDB" # 指定你要同步的数据库
database="lysharkDB" # 同上 dataNode="dn_test"
dataNode name="dn_test"
dataHost="dh_43"
启动MyCat
/usr/local/mycat/bin/mycat start
查看端口
netstat -an |grep "" #虚拟schema管理端口
netstat -an |grep "" #虚拟schema登陆端口
登录MyCat管理端
mysql -uroot -p123456 -h127.0.0.1 -P 9066 MySQL [(none)]> show @@heartbeat; #RS_CODE为1表示心跳正常
+-------+-------+--------------+------+---------+-------+--------+---------+--------------+---------------------+-------+
| NAME | TYPE | HOST | PORT | RS_CODE | RETRY | STATUS | TIMEOUT | EXECUTE_TIME | LAST_ACTIVE_TIME | STOP |
+-------+-------+--------------+------+---------+-------+--------+---------+--------------+---------------------+-------+
| 43_M | mysql | 192.168.1.12 | 3306 | 1 | 0 | idle | 0 | 173,173,173 | 2018-05-11 09:10:15 | false |
| 45_S1 | mysql | 192.168.1.13 | 3306 | 1 | 0 | idle | 0 | 226,226,226 | 2018-05-11 09:10:15 | false |
| 45_S2 | mysql | 192.168.1.14 | 3306 | 1 | 0 | idle | 0 | 206,206,206 | 2018-05-11 09:10:15 | false |
+-------+-------+--------------+------+---------+-------+--------+---------+--------------+---------------------+-------+ MySQL [(none)]> show @@datasource; #查看读写分离的机器配置情况
+----------+-------+-------+--------------+------+------+--------+------+------+---------+-----------+------------+
| DATANODE | NAME | TYPE | HOST | PORT | W/R | ACTIVE | IDLE | SIZE | EXECUTE | READ_LOAD | WRITE_LOAD |
+----------+-------+-------+--------------+------+------+--------+------+------+---------+-----------+------------+
| dn_test | 43_M | mysql | 192.168.1.12 | 3306 | W | 0 | 10 | 1000 | 19 | 0 | 0 |
| dn_test | 45_S1 | mysql | 192.168.1.13 | 3306 | R | 0 | 4 | 1000 | 12 | 0 | 0 |
| dn_test | 45_S2 | mysql | 192.168.1.14 | 3306 | R | 0 | 4 | 1000 | 12 | 0 | 0 |
+----------+-------+-------+--------------+------+------+--------+------+------+---------+-----------+------------+
登录MyCat读写分离服务
mysql -uroot -p123456 -h127.0.0.1 -P 8066 [root@localhost ~]# mysql -uroot -p123456 -h127.0.0.1 -P 8066
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.6.29-mycat-1.6.5-release-20180122220033 MyCat Server (OpenCloundDB) Copyright (c) 2000, 2015, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MySQL [(none)]>
◆案例2◆ 配置MyCat-Web监控页面
前戏:下载MyCat以及Zookeeper
wget http://www-eu.apache.org/dist/zookeeper/zookeeper-3.4.12/zookeeper-3.4.12.tar.gz wget http://dl.mycat.io/1.6.5/Mycat-server-1.6.5-release-20180122220033-linux.tar.gz wget http://dl.mycat.io/mycat-web-1.0/Mycat-web-1.0-SNAPSHOT-20170102153329-linux.tar.gz
安装JDK
tar -xzvf jdk-8u171-linux-x64.tar.gz -C /usr/local/ mv /usr/local/jdk1.8.0_171/ /usr/local/jdk
配置JAVA环境变量
vim /etc/profile #=============================================================================
#Java-JDK-Path export JAVA_HOME=/usr/local/jdk
export JAVA_BIN=/usr/local/jdk/bin
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME JAVA_BIN PATH CLASSPATH
#============================================================================= source /etc/profile
安装MySQL并配置my.cnf
yum install -y mariadb mariadb-server vim /etc/my.cnf [mysqld]
lower_case_table_names = 1
安装zookeeper
tar -xzvf zookeeper-3.4.12.tar.gz -C /usr/local/ cd /usr/local/zookeeper-3.4.12/conf/ cp zoo_sample.cfg zoo.cfg 修改其中的↓ dataDir=/usr/local/... dataLogDir=/usr/local/...
运行zookeeper
cd /usr/local/zookeeper-3.4.12/bin/ ./zkServer.sh start 查看状态:netstat -ant | grep 2181 tcp 0 0 :::2181 :::* LISTEN 如果出现错误:nohup: failed to run command `java’: No such file or directory 可以在zkServer.sh中的首行添加如下代码 export JAVA_HOME=/usr/lib/jdk
export PATH=$JAVA_HOME/bin:$PATH
安装并运行Mycat-Web
tar -xzvf Mycat-web-1.0-SNAPSHOT-20170102153329-linux.tar.gz -C /usr/local cd /usr/local/mycat-web ./start.sh & netstat -an | grep 8082 客户访问 http://localhost:8082/mycat
博客搬运地址
MySQL - MyCat 实现读写分离的更多相关文章
- mysql+mycat实现读写分离
centos7 master slave mycat1.6 client 192.168.41.10 192.168.41.11 192.168.41.12 192.168.41.13 实 ...
- 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 ...
随机推荐
- eclipse导入项目时报错不能运行问题的一个记录
一直用学校的云桌面,但是还是有一些地方不是很方便,必须要校园网以及需要离线保存: 碰到的问题:重新安装和云桌面一样版本的jdk9.0.4,以及tomcat9.0.12,以及eclipse-oxygen ...
- Python数据结构--链表
class Node(): def __init__(self, dataval=None): self.dataval = dataval self.nextval = None class SLi ...
- CentOS7 Failed to start LSB: Bring up/down解决方法(真正有效的方法)
刚刚装好的虚拟机突然不能上网了,报错很诡异,具体报错如下: /etc/init.d/network restart Restarting network (via systemctl): Job f ...
- python基础示例
7.写代码 (1)实现用户输入用户名和密码,当用户名为 seven 且 密码为 123 时,显示登陆成功,否则登陆失败! _name = "seven" _pwd = " ...
- mvc 下 使用kindeditor 配置信息
先去下载: http://code.google.com/p/kindeditor/downloads/list引用: LitJSON.dll文件<script src="~/kind ...
- hdu 4435 bfs+贪心
/* 题意:给定每个点在平面内的坐标,要求选出一些点,在这些点建立加油站,使得总花费最少(1号点必须建立加油站).在i点建立加油站需要花费2^i. 建立加油站要求能使得汽车从1点开始走遍全图所有的点并 ...
- Linux下汇编语言学习笔记60 ---
这是17年暑假学习Linux汇编语言的笔记记录,参考书目为清华大学出版社 Jeff Duntemann著 梁晓辉译<汇编语言基于Linux环境>的书,喜欢看原版书的同学可以看<Ass ...
- hdu - 1394 Minimum Inversion Number(线段树水题)
http://acm.hdu.edu.cn/showproblem.php?pid=1394 很基础的线段树. 先查询在更新,如果后面的数比前面的数小肯定会查询到前面已经更新过的值,这时候返回的sum ...
- 创建Django项目(二)——数据库配置
2013-08-05 20:53:44| 1.数据库配置 举例是用MySQL数据库,首先在settings文件中做配置,如下: DATABASES = { ' ...
- php文件上传判断类型
上传文件对象在$_FILES['Filedata']对象中,临时路径是tmp_name,判断是上传文件是否为真实图片方法很多,我用的是这个: if( !@getimagesize( $_FILES[' ...