.netcore微服务-Mycat
1、前言
1.1 分布式数据库
随着IT行业的迅猛发展,行业应用系统的数据规模呈现爆炸式增长,对数据库的数据处理能力要求越来越高,分布式数据库正是因此应运而生。
分布式数据库特点包括:
透明性:用户不必关心后台数据库的具体实现
扩展性:能够根据系统压力情况进行扩展
可靠性:如果其中一台服务器宕机,备用服务器能够自动切换继续提供服务
高性能:
1.2 Mycat介绍
Mycat(http://www.mycat.io/)是一个支持mysql、sql server等数据库集群化部署的中间件。它由Amoeba和cobar发展而来。
2、负载均衡
3、测试环境
|
服务器 |
Mycat |
Mysql-master |
Mysql-slave |
Mysql-master-standby |
Mysql-master-standby |
|
IP |
127.0.0.1 |
10.3.30.161 |
10.3.30.238 |
120.77.80.215 |
10.3.6.84 |
|
Port |
8066/9066 |
3306 |
3306 |
3306 |
3306 |
|
Account |
root 123456 |
test 123456 |
test 123456 |
test 123456 |
test 123456 |
4、测试脚本
CREATE TABLE `employee` (
`ID` int(11) NOT NULL,
`NAME` varchar(100) default NULL,
`SHARDING_ID` int(11) NOT NULL,
PRIMARY KEY (`ID`)
)
INSERT INTO employee(ID,NAME,SHARDING_ID) VALUES ('6', 'amos', '10000');
5、软件安装
首先安装mycat-server、mycat-eye、zookeeper和navicat for mysql
6、服务启动
6.1 启动mycat
6.1.1安装java环境
1、 安装jdk
2、 配置环境变量
JAVA_HOME=C:\Program Files\Java\jdk1.8.0_131
CLASSPATH=.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;
Path =%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;
6.1.2启动mycat服务
在windows8操作系统上启动mycat服务,命令如下
cmd
cd /d D:\EC-OFC\Java\Mycat\Mycat-server-1.6\mycat\bin
startup_nowrap.bat
6.1.3连接mycat
6.1.3.1navicat连接
使用navicat连接mycat,默认端口为8066,密码123456
6.1.3.2DOS链接
cmd
cd /d C:\Program Files\MySQL\MySQL Server 5.7\bin
mysql -uroot -p123456 -P8066
注意:如果需要使用如show @@datasource命令时,需要连接9066端口而不是8066
6.2 启动zookeeper
D:\EC-OFC\开发工具\zookeeper-3.4.10\bin\zkServer.bat
6.3 启动mycat-eye
D:\EC-OFC\Java\Mycat\mycat-web\start.bat
7、写集群
7.1 拓扑图
7.2 配置文件
<?xml version="1.0"?>
<!DOCTYPEmycat:schemaSYSTEM"schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
<schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100">
<table name="employee" primaryKey="ID" dataNode="dn1,dn2"/>
</schema>
<dataNode name="dn1" dataHost="host1" database="db1"/>
<dataNode name="dn2" dataHost="host2" database="db1"/>
<dataHost name="host1" maxCon="1000" minCon="10" balance="1"
writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
<heartbeat>select user()</heartbeat>
<writeHost host="hostM1" url="120.77.80.215:3306"
user="test" password="123456">
</writeHost>
</dataHost>
<dataHost name="host2" maxCon="1000" minCon="10" balance="1"
writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
<heartbeat>select user()</heartbeat>
<writeHost host="hostM2" url="10.3.30.238:3306"
user="test" password="123456">
</writeHost>
</dataHost>
</mycat:schema>
8、主从配置
8.1 业务要求
Master挂掉时,Slave还能提供读服务。
8.2 配置步骤
注意每台mysql服务器的server-id必须唯一
第一步:
在10.3.30.161中创建一个10.3.30.238主机中可以登录的MySQL用户
用户:mysql238
密码:123456
mysql>GRANT REPLICATION SLAVE ON *.* TO ‘mysql238’@’10.3.30.238’ IDENTIFIED BY ‘123456’;
mysql>FLUSH PRIVILEGES;
第二步:
需要先在C:\ProgramData\MySQL\MySQL Server 5.7\my.ini文件中添加log-bin=mysql-bin
查看10.3.30.161MySQL服务器二进制文件名与位置
mysql>SHOW MASTER STATUS;
第三步:
告知二进制文件名与位置
在10.3.30.238中执行:
mysql>CHANGE MASTER TO
MASTER_HOST='10.3.30.161',
MASTER_USER='mysql238',
MASTER_PASSWORD='123456',
MASTER_LOG_FILE='mybin.000001',
MASTER_LOG_POS=154;
完成主从复制配置
8.3 验证配置
在10.3.30.238中
mysql> START SLAVE; #开启复制
mysql>SHOW SLAVE STATUS\G #查看主从复制是否配置成功
当看到Slave_IO_Running:
YES、Slave_SQL_Running: YES才表明状态正常
8.4 配置文件
switchType='-1'意味着当主挂掉的时候,不进行自动切换,即hostS1并不会被提升为主,仍只提供读的功能。这就避免了将数据写进slave的可能性,单纯的MySQL主从集群并不允许将数据写进slave中,除非配置的是双master。
<mycat:schema xmlns:mycat="http://io.mycat/">
<schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100">
<table name="employee" primaryKey="ID" dataNode="dn1"/>
</schema>
<dataNode name="dn1" dataHost="host1" database="db1"/>
<dataHost name="host1" maxCon="1000" minCon="10" balance="1"
writeType="0" dbType="mysql" dbDriver="native" switchType="-1" slaveThreshold="100">
<heartbeat>select user()</heartbeat>
<writeHost host="hostM1" url="10.3.30.161:3306"
user="test" password="123456">
<readHost host="hostR1" url="120.77.80.215:3306"
user="test" password="123456"/>
</writeHost>
<writeHost host="hostS1" url="10.3.30.238:3306"
user="test" password="123456">
</writeHost>
</dataHost>
</mycat:schema>
9、Haproxy配置
9.1 拓扑图
9.2 配置文件
此处为haproxy配置文件
#
global
maxconn 1500
nbproc
1
daemon
defaults
mode tcp
retries 3
option abortonclose
maxconn 32000
timeout connect 300000ms
timeout client 300000ms
timeout server 300000ms
log 127.0.0.1 local0 err
listen admin_stats
bind :48800
stats uri /admin-status
stats auth admin:admin
mode http
option httplog
listen mycat_servers
bind :3307 ## 绑定端口
mode tcp
option tcplog
#balance source
server server238 10.3.30.238:8066
check port 8066 weight 1 check
server server84 10.3.6.84:8066
check port 8066 weight 1 check
mysql客户端或者应用程序可以通过如上配置的127.0.0.1:3307端口链接haproxy实现链接mycat集群的目的。
10、注意事项
1、主主复制配置文件中auto_increment_increment和auto_increment_offset只能保证主键不重复,却不能保证主键有序。
2、当配置完成Slave_IO_Running、Slave_SQL_Running不全为YES时,show slave status\G信息中有错误提示,可根据错误提示进行更正。
3、Slave_IO_Running、Slave_SQL_Running不全为YES时,大多数问题都是数据不统一导致。
常见出错点:
1、两台数据库都存在db数据库,而第一台MySQL db中有tab1,第二台MySQL db中没有tab1,那肯定不能成功。
2、已经获取了数据的二进制日志名和位置,又进行了数据操作,导致POS发生变更。在配置CHANGE MASTER时还是用到之前的POS。
3、stop
slave后,数据变更,再start slave。出错。
终极更正法:重新执行一遍CHANGE MASTER就好了。
.netcore微服务-Mycat的更多相关文章
- (1)学习笔记 ) ASP.NET CORE微服务 Micro-Service ---- 什么是微服务架构,.netCore微服务选型
开发工具:VS2017 .Net Core 2.1 什么是微服务?单体结构: 缺点: 1)只能采用同一种技术,很难用不同的语言或者语言不同版本开发不同模块: 2)系统耦合性强,一旦其中一个模块有问题, ...
- (1).NET CORE微服务 Micro-Service ---- 什么是微服务架构,.netCore微服务选型
开发工具:VS2017 .Net Core 2.1 什么是微服务?单体结构: 缺点:1)只能采用同一种技术,很难用不同的语言或者语言不同版本开发不同模块:2)系统耦合性强,一旦其中一个模块有问题,整个 ...
- 什么是微服务架构,.netCore微服务选型
什么是微服务架构,.netCore微服务选型 https://www.cnblogs.com/uglyman/p/9182485.html 开发工具:VS2017 .Net Core 2.1 什么是微 ...
- .NetCore微服务Surging新手傻瓜式 入门教程 学习日志---先让程序跑起来(一)
原文:.NetCore微服务Surging新手傻瓜式 入门教程 学习日志---先让程序跑起来(一) 写下此文章只为了记录Surging微服务学习过程,并且分享给广大想学习surging的基友,方便广大 ...
- .NetCore微服务Surging新手傻瓜式 入门教程 学习日志---结构简介(二)
原文:.NetCore微服务Surging新手傻瓜式 入门教程 学习日志---结构简介(二) 先上项目解决方案图: 以上可以看出项目结构可以划分为4大块,1是surging的核心底层,2,3,4都可以 ...
- .NETCore微服务探寻(一) - 网关
前言 一直以来对于.NETCore微服务相关的技术栈都处于一个浅尝辄止的了解阶段,在现实工作中也对于微服务也一直没有使用的业务环境,所以一直也没有整合过一个完整的基于.NETCore技术栈的微服务项目 ...
- .NETCore微服务探寻(三) - 分布式日志
前言 一直以来对于.NETCore微服务相关的技术栈都处于一个浅尝辄止的了解阶段,在现实工作中也对于微服务也一直没有使用的业务环境,所以一直也没有整合过一个完整的基于.NETCore技术栈的微服务项目 ...
- .NETCore微服务探寻(二) - 认证与授权
前言 一直以来对于.NETCore微服务相关的技术栈都处于一个浅尝辄止的了解阶段,在现实工作中也对于微服务也一直没有使用的业务环境,所以一直也没有整合过一个完整的基于.NETCore技术栈的微服务项目 ...
- .NETCore微服务探寻(三) - 远程过程调用(RPC)
前言 一直以来对于.NETCore微服务相关的技术栈都处于一个浅尝辄止的了解阶段,在现实工作中也对于微服务也一直没有使用的业务环境,所以一直也没有整合过一个完整的基于.NETCore技术栈的微服务项目 ...
随机推荐
- delphi多版本安装方法
delphi tokyo和其他版本并存的安装方法 1.安装delphi 10.2 tokyo 破解后写入D:\Program Files (x86)\Embarcadero\Studio\19.0\b ...
- C++函数不写bool返回值,居然编译运行全部通过,但判断结果就不对了
bool MyStart::IsCoorectParam(QString strParam) { if (strParam=="-aa" || strParam=="-b ...
- AnmpServer 0.9.3 发布
摘要: AnmpServer是一款集成Apache服务器.Nginx服务器.MySQL数据库.PHP解释器的整合软件包.免去了开发人员将时间花费在繁琐的配置环境过程,从而腾出更多精力去做开发,助力PH ...
- 使用VS2012开发基于Office 2013的AddIn程序
默认VS2012开发的Office Add是基于2010的,如下所示: 如果你机器上安装的Office版本是2013,那么使用VS2012创建的工程是无法运行的,弹出如下的错误: 那么此时怎么办呢?将 ...
- EF 6.0 Code First 迁移MySql数据库
一.准备工作 使用NUGET安装Entity Framework 6,下载MySql Connector/Net 6.9.5 二.创建实体 我们在下面创建了两个类(博客和文章),并 ...
- 高可用的zookeeper
Install zookeeper wget http://mirrors.hust.edu.cn/apache/zookeeper/zookeeper-3.4.13/zookeeper-3.4.13 ...
- java之继承中的静态变量
package Test; /** * Created by wangbin10 on 2018/7/9. * 我们知道静态变量属于类级别变量,对应每个类只有一份,类的所有实例共有一份,而成员变量则分 ...
- 高并发 Nginx+Lua OpenResty系列(3)——模块指令
Nginx Lua 模块指令 Nginx共11个处理阶段,而相应的处理阶段是可以做插入式处理,即可插拔式架构:另外指令可以在http.server.server if.location.locatio ...
- 纯CSS制作加<div>制作动画版哆啦A梦
纯CSS代码加上<div>制作动画版哆啦A梦(机器猫) 哆啦A梦(机器猫)我们大家一定都很熟悉,今天给大家演示怎么用纯CSS代码,来做一个动画版的哆啦A梦. 效果图: ###下面代码同学可 ...
- 系统学习 Java IO (十六)----这么多类,应该用哪个?
目录:系统学习 Java IO---- 目录,概览 Java IO目的和功能 Java IO 包含 InputStream,OutputStream,Reader 和 Writer 类的许多子类. 原 ...