大发体育娱乐在线-大发体育娱乐官方网站-大发体育娱乐登录网址
做最好的网站

要到哪个地方去,主从复制

来源:http://www.dfwstonefabricators.com 作者:数据库 人气:93 发布时间:2019-12-12
摘要:1  海量数据的存款和储蓄问题 今天趁着网络的发展,数据的量级也是撑指数的增进,从GB到TB到PB。对数据的各样操作也是更加的勤奋,古板的关系性数据库已经回天乏术满意火速查询

海量数据的存款和储蓄问题

今天趁着网络的发展,数据的量级也是撑指数的增进,从GB到TB到PB。对数据的各样操作也是更加的勤奋,古板的关系性数据库已经回天乏术满意火速查询与插入数据的必要。那时NoSQL的现身一时半刻缓慢解决了那生龙活虎危害。它通过降落数据的安全性,减弱对事情的支撑,减弱对复杂查询的扶植,来收获质量上的晋升。

而是,在稍稍场地NoSQL一些投降是爱莫能助满足使用境况的,就比如某个使用情状是必定要有事情与莱芜指标的。这时候NoSQL料定是不可能满意的,所以还是须求利用关系性数据库。假设应用关系型数据库解决海量存款和储蓄的难点吧?这时就须要做数据库集群,为了拉长查询质量将叁个数据库的数目分散到不相同的数据库中存放。

【布满式构造初探】

1.1 什么样是数据库分片

归纳的话,就是指通过某种特定的条件,将我们存放在同叁个数据库中的数据分散寄存到七个数据库(主机)上面,以达成疏散单台设备负载的功用。

数据的切分(Sharding)依据其切分准则的种类,能够分成二种切分方式。

(1)后生可畏种是依据分歧的表(也许Schema)来切分到分化的数据库(主机)之上,这种切能够叫做数据的垂直(纵向)切分

图片 1

 

 

 

(2)其余少年老成种则是依据表中的数额的逻辑关系,将同四个表中的数额遵照某种条件拆分到多台数据库(主机)上面,这种切分称之为数据的档期的顺序(横向)切分。

 图片 2

 

第五节-猫从何地来,要到什么地方去(Mycat的前生今生卡塔尔

5.1 MyCAT猫的前世
5.2 MyCAT猫的今生
5.3 十分钟安装使用
5.4 MYCAT下实现读写分离
5.5 切!切!切!MyCAT中分表分库策略
5.6 MyCAT的五脏六腑
5.7 课后作业

1.2 哪些兑现数据库分片

当数据库分片后,数据由二个数据库分散到多个数据库中。此时系统要询问时索要切换分裂的数据库举行查询,那么系统如何晓得要询问的数量在哪些数据库中?当增加一条记下时要向哪个数据库中插入呢?这几个难题管理起来都以卓绝的难为。

这种意况下得以接收三个数据库中间件mycat来减轻相关的主题材料。接下来驾驭一下怎么着是mycat。

5.1 MyCAT猫的前生##


近年猫为啥这么火,Apache的猫,MyCAT的猫。
大多都长那么些样

5.1-01.png

MyCAT原来本未有想着来生做猫的,因为她的前生是Ali的Cobar,
转世之后,成为了MyCAT,并且开源了,就厉害做一个中华的Apache猫.

情商他的前生是Ali的Cobar, Cobar的撰稿者离职了今后,Cobar就差比相当少从未开展继续开辟和维护了,
新生转为开源的MyCAT,又扩充了飞快的升华,现在初始总结有超过300个体系利用mycat,在这之中囊括:
中国移动/中国际联盟通/鹅仔菜传播媒介/天狮公司等等

5.1-02.png

缘何有与此相类似多的资深公司使用mycat 呢, 我们看看她们的业务量,
1.安智账户体系, 数据量单表6000万条,20多张表,上亿条数据, 系统运行优秀,有时有SQL操作迟缓的场所。
2.公安项目,21个表,30多亿条数据,选取适合的事体使用mycat

从这几个种类中大家能够看出,mycat专长对上亿条单表数据量的管理,并提供卓越的实时查询服务。
而大家精通,MYSQL的库中很难管理上亿条数据的询问职业,MYCAT进步了MYSQL数据库的拍卖本事,
从官方的解说来看,MYCAT切合管理千亿条以下的数目,千亿条以上的数码更切合HADOOP那一个体系来管理。

说了半天,什么是MYCAT呢?
MYCAT正是二个设想的MYSQL SEPRADOVE途观, 这么说可能不太明了, 但是对于利用来讲,他正是一个MYSQL SESportageVE兰德Evoque,
利用好似连接普通的MYSQL数据库相似的 去老是他,SQL查询、操作等等同样。

而MYCAT把数据库复杂的结构,以至幕后复杂的分表分库的逻辑全部透明化了,MYCAT中间件连接几个MYSQL数据库,
多少个数据库之间还是能做基本同步,而这生龙活虎体的全体,对选拔来讲,独有贰个数据库,那正是MYCAT。

Mycat介绍

5.2 MyCAT猫的现世##


MYCAT发展到现在已经不只有是MYSQL的代办了,它还扶持SQLSE奔驰M级VE宝马7系/ORACLE/DB2/POSTGRESQL等主流数据库。
MYCAT还足以将三个表定义为任何风流浪漫种MYCAT帮助的存款和储蓄方式,比如MySQL的MyISAM 表、内部存款和储蓄器表、可能MongDB这种
内部存款和储蓄器数据库上。

MYCAT这么强大,那么他的准绳是还是不是专程的头晕目眩,非也,Mycat 的原理可以用一个动词来描写:”拦截“
它阻挡应用发送过来的SQL, 并对SQL语句进行一些一定的深入解析:分片分析、路由剖判、读写抽离深入分析、缓存深入分析等,然后将
解析后的SQL分别发送到不一致的真实性数据库,最终对数据库重返的结果进行拍卖,再次回到给客商。

5.2-01.png

下边罗列多少个MYCAT 规范的行使场景:

  • 无非的读写抽离,在底下大家会有教学如何开展Mycat上边包车型客车读写分离的配置
  • 分表分库,对于超越1000万的表打开分片,最大支撑1000亿的单表分片
  • 多租户应用,每一个应用八个库,但应用程序只连接MYCAT ,进而不改换程序自个儿,完毕多租户
  • 报表系统,依附于MYCAT的分表本领,管理大范围报表的计算
  • 代替HBase, 解析大数据
  • 作为海量数据实时查询的风流倜傥种简易可行的减轻方案, 比如100亿条数据须要在3秒内实时查询出来,那时候得以思虑MYCAT

今昔MYCAT社区活跃,MYCAT 周围的种类也逐年衍生出来,慢慢的演进了MYCAT生态圈了,像MYCAT-WEB 监察和控制,MYCAT-HA
高可用方案等等,所以MYCAT如故很值得我们上学和研商的。

2.1 什么是Mycat?

 

Mycat 背后是Ali早就开源的名牌成品——Cobar。Cobar 的大旨功能和优势是 MySQL 数据库分片,此产物早就传出,听他们说最先的发起者对 Mysql 很精晓,后来从Ali跳槽了,Ali进而开源的 Cobar,并保持到 二零一二 年年终,然后,就从未有过然后了。

Cobar 的思绪和兑现路线的确不易。基于 Java 开荒的,落成了 MySQL 公开的二进制传输公约,美妙地将团结伪装成一个MySQL Server,如今市道上绝大许多 MySQL 顾客端工具和使用都能合作。比本身实现二个新的数据库公约要明智的多,因为生态情况在哪儿摆着。

 

Mycat 是依附 cobar 演化而来,对 cobar 的代码进行了干净的重构,使用 NIO 重构了网络模块,况且优化了 Buffer 内核,加强了聚众,Join 等宗旨特色,同临时候兼容绝大许多数据库成为通用的数据库中间件。

大约的说,MyCAT就是:

·七个最新的数据库中间件成品扶植mysql集群,大概mariadb cluster,提供高可用性数据分片集群。你能够像使用mysql相仿选择mycat。对于开辟人士来讲根本感觉不到mycat的留存。

 图片 3

5.3 十秒钟安装使用##


MYCAT纵然强盛,不过他的安装却不行简短, 下边大家进来我们十分钟安装教程:

2.2 Mycat支持的数据库

 图片 4

 

1.下载MYCAT安装包###

在GitHub 的 MyCATApache项目下,大家找到
https://github.com/MyCATApache/Mycat-download/tree/master/1.5-RELEASE
选取 Mycat-server-1.5.1-RELEASE-20160929233042-linux.tar.gz
linux 版本实行 下载

时下1.6版本有的机能还在付出中,1.5版本比较稳定,建议下载1.5用以临蓐条件使用

2.3 Mycat的分片计策

 图片 5

 

 

 

2. 解压运维MYCAT安装包###

下载文件是一个tar的linux压缩包,用解压命令
tar -zxvf Mycat-server-1.5.1-RELEASE-20160929233042-linux.tar.gz

5.3-01.png

开发银行命令
./mycat start|restart|stop|console 常用几项内容

5.3-02.png

日记文件
logs/wrapper.log mycat服务器日志
logs/mycat.log 数据库操作日志,解析数据库操作路由使用。

起步MyCat最要害的多少个结构文件:
conf/server.xml 服务器顾客、虚构Sechma、端口等配备消息。
conf/sechma.xml 物理数据库映射。

接收MyCAT来讲的话,最器重的正是改善那多个文本,接下去大家兑现MYCAT下的读写抽离。

2.4 概念表明

5.4 MYCAT下降成读写抽离##


率先参照他事他说加以调查上意气风发节MYSQL配置主从复制,配置好主从数据库之间的数量复制成效。

2.4.1 逻辑库(schema) :

日前焕发青大年讲了数据库中间件,平常对实际选择来讲,并无需知道中间件的存在,业务开垦人士只供给精通数据库的概念,所以数据库中间件能够被用作是三个或八个数据库集群构成的逻辑库。

1.登陆主服务器的mysql,查询master的景色###

mysql> show master status;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000010 | 106 | db1,db2,db3 | mysql |
+------------------+----------+--------------+------------------+
Master 重启后会更改mysql-bin(序号加1)

2.4.2 逻辑表(table):

既然如此有逻辑库,那么就能够有逻辑表,遍布式数据库中,对应用来讲,读写多少的表正是逻辑表。逻辑表,能够是多少切分后,遍布在二个或两个分片库中,也能够不做多少切分,不分片,唯有五个表构成。

分片表:是指那多少个原来的相当大数量的表,须要切分到四个数据库的表,那样,每一个分片都有风姿浪漫部分数量,全数分片构成了完整的多寡。 由此可以知道正是内需开展分片的表。

非分片表:三个数据库中并非有着的表都不小,有个别表是能够不用实行切分的,非分片是相对分片表来讲的,就是这一个无需进行数量切分的表。

2.查看Slave机有未有安排成功:###

mysql> show slave statusG
以下四个参数必需为YES:
Slave_IO_Running: Yes
Slave_SQL_Running: Yes

2.4.3 分片节点(dataNode卡塔尔(英语:State of Qatar)

多少切分后,四个大表被分到分化的分片数据库方面,每一个表分片所在的数据库就是分片节点(dataNode)。

3.MyCAT的配置###

不应用Mycat托管的 MySQL主从服务器

schema.xml
<dataNode name="dn1" dataHost="localhost1" database="db1" />
<dataNode name="dn2" dataHost="localhost1" database="db2" />
<dataNode name="dn3" dataHost="localhost1" database="db3" />
<dataHost name="localhost1" maxCon="1000" minCon="10" balance="0"
writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
<heartbeat>select user()</heartbeat>
<writeHost host="hostM" url="172.19.4.239:3306" user="root" password="123456"></writeHost>
</dataHost>

支持MySQL主从复制状态绑定的读写剥离机制,让读尤其安全可信赖,配置如下
<dataNode name="dn1" dataHost="localhost1" database="db1" />
<dataNode name="dn2" dataHost="localhost1" database="db2" />

<dataNode name="dn3" dataHost="localhost1" database="db3" />
<dataHost name="localhost1" maxCon="1000" minCon="10" balance="1"
writeType="0" dbType="mysql" dbDriver="native" switchType="2" slaveThreshold="100">
<heartbeat>show slave status</heartbeat>
<writeHost host="hostM" url="172.19.4.239:3306" user="root" password="123456">
<readHost host="hostS" url="172.19.4.240:3306" user="root" password="123456" />
</writeHost>
</dataHost>

设置 balance="1"与writeType="0"
Balance参数设置:

  1. balance=“0”, 全体读操作都发送到当前可用的writeHost上。
  2. balance=“1”,全体读操作都随便的发送到readHost。
  3. balance=“2”,全体读操作都随便的在writeHost、readhost上散发

WriteType参数设置:

  1. writeType=“0”, 全体写操作都发送到可用的writeHost上。
  2. writeType=“1”,全部写操作都随便的发送到readHost。
  3. writeType=“2”,全数写操作都随便的在writeHost、readhost分上发。

与此相类似布置明白后,就曾经落实了读写分离的成效, 还是能够对数据库举办负荷均衡
起步mycat , 用应用恐怕Navicat等工具 连接mycat ,端口是 8066
insert , select 进行测量试验。

2.4.4 节点主机(dataHost卡塔尔(英语:State of Qatar)

数量切分后,各个分片节点(dataNode)不必然都会攻下生机勃勃台机械,同一机器上面能够有多少个分片数据库,那样叁个或四个分片节点(dataNode)所在的机器就是节点主机(dataHost),为了躲过单节点主机并发数限定,尽量将读写压力高的分片节点(dataNode)均衡的放在不一致的节点主机(dataHost)。

5.5 切!切!切!MyCAT中分表分库战术##


地点只是达成了何等开展读写抽离,基于数据库的大旨同步复制的法规, 大家在在此以前的科目里早就掌握,
主导同步复制的数码是 ,保障从数据库和主库的数码黄金时代致,也等于说数据是多复制了生龙活虎份出来,

而MYCAT 只所以能支撑上百亿的数据量,在于她的另三个功力:分表分库计策
分表分水库蓄水体积易的话,正是MYCAT 上边连接的数据库节点,打举例说有dn1,dn2,dn3, 他们每一种库中的数据
是各不相近的。
把MYCAT当作三个设想数据库来看,travelrecord 是MYCAT上面建的一张表, 应用调用MYCAT
库能够调用到整张表的数额, 然而假若查询某三个节点dn1 , 则只可以查询到有的数量(经常是四分之二卡塔尔(قطر‎的数据
dn1, dn2 , dn3 各自存款和储蓄了风华正茂局地的数额, 不过可以通过MYCAT 来查询到整张表的多寡,
像这种类型加强了每一种数据库的数码存储处理技术, 那正是MYCAT的精干之处,也等于干什么他能够管理上百亿条数据的奥秘。

此处列出三个粗略的分表分库的布署:
schema.xml
<table name="travelrecord" dataNode="dn1,dn2,dn3" rule="auto-sharding-long" />
在schema中 大家须求配置mycat 中的虚构表table ,以致他的rule ,分表法则
auto-sharding-long 的情趣是 事情发生前已经定义好每种dn的 范围,根据范围划分,那个法则在rule.xml中举行配置.

datanode 的配置:
<dataNode name="dn1" dataHost="localhost1" database="db1" />
<dataNode name="dn2" dataHost="localhost2" database="db2" />
<dataNode name="dn3" dataHost="localhost3" database="db3" />

<dataHost name="localhost1" maxCon="1000" minCon="10" balance="0"
          writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">
    <heartbeat>select user()</heartbeat>
    <!-- can have multi write hosts -->
    <writeHost host="hostM1" url="172.19.4.3:3306" user="root" password="123456"></writeHost>
</dataHost>

<dataHost name="localhost2" maxCon="1000" minCon="10" balance="0"
          writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">
    <heartbeat>select user()</heartbeat>
    <!-- can have multi write hosts -->
    <writeHost host="hostM2" url="172.19.4.201:3306" user="root" password="123456"></writeHost>
</dataHost>

<dataHost name="localhost3" maxCon="1000" minCon="10" balance="0"
          writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">
    <heartbeat>select user()</heartbeat>
    <!-- can have multi write hosts -->
    <writeHost host="hostM2" url="172.19.4.86:3306" user="root" password="123456"></writeHost>
</dataHost>

那样数据就是活动切分到那3个不等的datanode中了, select 抽取来也是完好的数码。

分表分库还会有某个秘诀就是,你的数据是纵一贯切,依旧横一直切,
上面讲的要命是 横平素切:正是把一张表的多少 切到不相同的 数据库中。

纵向切更简便,便是以表来分库, 差别的表 放到分化的库中, 表中的数据在有个别库中是全部的。

2.4.5 分片法规(rule卡塔尔国

前边讲了数额切分,叁个大表被分为若干个分片表,就须要一定的规规矩矩,那样根据某种业务法则把数量分到有个别分片的平整就是分片准绳,数据切分采纳适当的分片法规不行重要,将比较大的幸免后续数据管理的难度。

5.6 MyCAT的五藏六府##


学会了MYCAT来做读写分离和分表分库的利用之后,我们理应越来越深刻MYCAT的五藏六府,了然MYCAT的运行机制,那样对线上的运用场理局地
救急事故,以致减轻部分题材提供思路,特别的有帮带,有本事的童鞋还足以涉足到MYCAT的存在延续开荒中来。

5.6-01.png

MYCAT 的后端通讯选择了NIO非窒碍 和AIO 异步通讯格局, 使得通讯功能更加高
SQL解析这一块用到了Ali的Druid进行解析
磋商这一块,对于MYSQL数据库接受原生的二进制左券,还援救驱动格局的接连几日
何况MYCAT还扩充order by , group by ,limit 等聚焦功效的扶持

有野趣的童鞋能够对 MYCAT线程池、网络通讯、路由分发、事务管理、缓存等模块做输入的上学和剖判。

Mycat的下载及安装

5.7 课后作业##


  1. 用MYCAT 实现上生机勃勃节中的 读写分离案例
  2. 用MYCAT 落成八个分表分库的施用

越来越多课程关心民众号【小张网校】
大伙儿号里有Wechat群参加沟通,有大牌亲自引导实战!

barcode.jpg

3.1 安装景况

1、jdk:必要jdk必需是1.7及以上版本

2、Mysql:推荐mysql是5.5之上版本

3、Mycat:

Mycat的官网:

http://www.mycat.org.cn/

下载地址:

https://github.com/MyCATApache/Mycat-download

 

3.2 安装步骤

Mycat有windows、linux各类板子。本课程为linux安装步骤,windows基本相仿。

第一步:下载Mycat-server-xxxx-linux.tar.gz

第二步:将核减包解压缩。指出将mycat放到/usr/local/mycat目录下。

第三步:进入mycat目录,启动mycat

./mycat start

停止:

./mycat stop

mycat 扶助的吩咐{ console | start | stop | restart | status | dump }

Mycat的默许端口号为:8066

Mycat的分片

4.1 需求

把商品表分片存款和储蓄到多个数据节点上。

 

4.2 安装蒙受解析

两台mysql数据库服务器:

Host1:192.168.25.134

Host2:192.168.25.166

 

host1环境

操作系统版本 : centos6.4

数据库版本 : mysql-5.6

mycat版本 :1.4 release

数据库名 : db1、db3

 

 

mysql节点2环境

操作系统版本 : centos6.4

数据库版本 : mysql-5.6

mycat版本 :1.4 release

数据库名 : db2

 

MyCat安装到节点1上(供给设置jdk)

 

4.3 配置schema.xml

4.3.1 Schema.xml介绍

Schema.xml作为MyCat中关键的布局文件之风度翩翩,管理着MyCat的逻辑库、表、分片法规、DataNode以致DataSource。弄懂这几个安顿,是不利接受MyCat的前提。这里就风姿浪漫难得一见对该公文举办解析。

 

schema 标签用于定义MyCat实例中的逻辑库

Table 标签署义了MyCat中的逻辑表

dataNode 标签署义了MyCat中的数据节点,也等于大家平淡无奇说所的数据分片。

dataHost标签在mycat逻辑库中也是作为最尾巴部分的竹签存在,直接定义了现实的数据库实例、读写分离配置和心跳语句。

 

注意:若是LINUX版本的MYSQL,则需要设置为Mysql大小写不敏感,否则可能会发生表找不到的问题。

在MySQL的配置文件中/etc/my.cnf [mysqld] 中增加一行

  lower_case_table_names=1

 

4.3.2 Schema.xml配置

<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://org.opencloudb/">

        <schema name="e3mall" checkSQLschema="false" sqlMaxLimit="100">
                <!-- auto sharding by id (long) -->
                <table name="tb_item" dataNode="dn1,dn2,dn3" rule="auto-sharding-long" />
        </schema>
        <dataNode name="dn1" dataHost="localhost1" database="db1" />
        <dataNode name="dn2" dataHost="localhost2" database="db2" />
        <dataNode name="dn3" dataHost="localhost1" database="db3" />
        <dataHost name="localhost1" maxCon="1000" minCon="10" balance="0"
                writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">
                <heartbeat>select user()</heartbeat>
                <!-- can have multi write hosts -->
                <writeHost host="hostM1" url="192.168.25.134:3306" user="root"
                        password="root">
                        <!-- can have multi read hosts -->

                </writeHost>
        </dataHost>
        <dataHost name="localhost2" maxCon="1000" minCon="10" balance="0"
                writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">
                <heartbeat>select user()</heartbeat>
                <!-- can have multi write hosts -->
                <writeHost host="hostM1" url="192.168.25.166:3306" user="root"
                        password="root">
                        <!-- can have multi read hosts -->

                </writeHost>
        </dataHost>
</mycat:schema>

 

4.4 配置server.xml 

 

4.4.1 Server.xml介绍

server.xml大致保存了装有mycat要求的连串安插消息。最常用的是在那布置顾客名、密码及权限。

 

4.4.2 Server.xml配置

<user name="test">
    <property name="password">test</property>
    <property name="schemas">e3mall</property>
    <property name="readOnly">false</property>
</user>

 

4.5 配置rule.xml 

rule.xml里面就定义了大家对表实行拆分所涉及到的平整定义。大家得以灵活的对表使用不一样的分片算法,或然对表使用相似的算法但现实的参数分裂。这些文件之中根本有tableRule和function那五个标签。在具体使用进程中得以根据须求增加tableRule

和function。

此布署文件能够不用改革,使用暗中同意就能够。

4.6 测量试验分片

4.6.1 创建表

结构达成后,重新起动mycat。使用mysql客商端连接mycat,创建表。

-- ----------------------------
-- Table structure for tb_item
-- ----------------------------
DROP TABLE IF EXISTS `tb_item`;
CREATE TABLE `tb_item` (
  `id` bigint(20) NOT NULL COMMENT '商品id,同时也是商品编号',
  `title` varchar(100) NOT NULL COMMENT '商品标题',
  `sell_point` varchar(500) DEFAULT NULL COMMENT '商品卖点',
  `price` bigint(20) NOT NULL COMMENT '商品价格,单位为:分',
  `num` int(10) NOT NULL COMMENT '库存数量',
  `barcode` varchar(30) DEFAULT NULL COMMENT '商品条形码',
  `image` varchar(500) DEFAULT NULL COMMENT '商品图片',
  `cid` bigint(10) NOT NULL COMMENT '所属类目,叶子类目',
  `status` tinyint(4) NOT NULL DEFAULT '1' COMMENT '商品状态,1-正常,2-下架,3-删除',
  `created` datetime NOT NULL COMMENT '创建时间',
  `updated` datetime NOT NULL COMMENT '更新时间',
  PRIMARY KEY (`id`),
  KEY `cid` (`cid`),
  KEY `status` (`status`),
  KEY `updated` (`updated`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='商品表';

 

4.6.2 插入数据 

 

将此文件中的数据插入到数据库:

 图片 6

 

 

4.6.3 分片测量试验

鉴于配备的分片准则为“auto-sharding-long”,所以mycat会根据此法则自动分片。

每一个datanode中保留一定数量的数据。依照id进行分片

经测试id范围为:

Datanode1:1~5000000

Datanode2:5000000~10000000

Datanode3:10000001~15000000

 

当15000000之上的id插入时报错:

[Err] 1064 - can't find any valid datanode :TB_ITEM -> ID -> 15000001

此刻要求增添节点了。

 

Mycat读写抽离

数据库读写分离对于大型系统或许访谈量相当的高的网络接纳来说,是须要的一个入眼意义。对于MySQL来讲,规范的读写抽离是主导格局,一个写节点Master前边跟着多少个读节点,读节点的数码决议于系统的下压力,平时是1-3个读节点的配备

 图片 7

 

Mycat读写抽离和电动切换机制,必要mysql的主从复制机制同盟。

 图片 8

 

5.1 Mysql的主从复制

 

基本配置需求在意的地点

1、主DB server和从DB server数据库的版本相通

2、主DB server和从DB server数据库数据名称后生可畏致

3、主DB server开启二进制日志,主DB server和从DB server的server_id都一定要唯大器晚成

 

5.2 Mysql主服务器配置

第一步:修改my.cnf文件:

在[mysqld]段下增添:

binlog-do-db=db1

binlog-ignore-db=mysql

#启用二进制日志

log-bin=mysql-bin

#服务器唯一ID,一般取IP最后一段

server-id=134

第二步:重启mysql服务

service mysqld restart

其三步:建设结构帐户并授权slave

mysql>GRANT FILE ON *.* TO 'backup'@'%' IDENTIFIED BY '123456';

mysql>GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* to 'backup'@'%' identified by '123456';

#诚如不要root帐号,“%”表示具备顾客端都只怕连,只要帐号,密码准确,此处可用具体顾客端IP替代,如192.168.145.226,抓好平安。

 

刷新权限

mysql> FLUSH PRIVILEGES;

  

翻看mysql以后有啥客商

mysql>select user,host from mysql.user;

 

第四步:查询master的状态

mysql> show master status;

+------------------+----------+--------------+------------------+-------------------+

| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |

+------------------+----------+--------------+------------------+-------------------+

| mysql-bin.000001 |      120 | db1          | mysql            |                   |

+------------------+----------+--------------+------------------+-------------------+

1 row in set

 

 

 

5.3 Mysql从服务器配置

第一步:修改my.cnf文件

[mysqld]

server-id=166

 

其次步:配置从服务器

mysql>change master to master_host='192.168.25.128',master_port=3306,master_user='backup',master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=120

 

静心语句中间不要断开,master_port为mysql服务器端口号(无引号卡塔尔(قطر‎,master_user为推行同步操作的数据库账户,“120”无单引号(此处的120正是show master status 中看见的position的值,这里的mysql-bin.000001正是file对应的值卡塔尔(英语:State of Qatar)。

 

第二步:运营从服务器复制功能

Mysql>start slave;

 

其三步:检查从服务器复制功用状态:

mysql> show slave status

 

……………………(省略部分卡塔尔(英语:State of Qatar)

Slave_IO_Running: Yes //此状态必需YES

Slave_SQL_Running: Yes //此状态必得YES

……………………(省略部分卡塔尔国

 

注:Slave_IO及Slave_SQL进度必需寻常运维,即YES状态,不然都以乖谬的境况(如:个中二个NO均属不当卡塔尔(قطر‎。

 

错误处理:

如果出现此错误:

Fatal error: The slave I/O thread stops because master and slave have equal MySQL server UUIDs; these UUIDs must be different for replication to work.

因为是mysql是克隆的系统所以mysql的uuid是一样的,所以需要修改。

解决方法:

删除/var/lib/mysql/auto.cnf文件,重新启动服务。

 

 图片 9

 

如上操作进度,从服务器配置完结。

 

5.4 Mycat配置

Mycat 1.4 帮忙MySQL主从复制状态绑定的读写抽离机制,让读越发安全可信赖,配置如下:

 

<dataNode name="dn1" dataHost="localhost1" database="db1" />

<dataNode name="dn2" dataHost="localhost1" database="db2" />

<dataNode name="dn3" dataHost="localhost1" database="db3" />

<dataHost name="localhost1" maxCon="1000" minCon="10" balance="1"

writeType="0" dbType="mysql" dbDriver="native" switchType="2"  slaveThreshold="100">

<heartbeat>show slave status</heartbeat>

<writeHost host="hostM" url="192.168.25.134:3306" user="root"

    password="root">

    <readHost host="hostS" url="192.168.25.166:3306" user="root"

    password="root" />

  </writeHost>

</dataHost>

 

 

 

(1) 设置 balance="1"与writeType="0"

Balance参数设置:

  1. balance=“0”, 全数读操作都发送到当前可用的writeHost上。

2. balance=“1”,全数读操作都随便的发送到readHost。

  1. balance=“2”,全体读操作都随意的在writeHost、readhost上散发

WriteType参数设置:

  1. writeType=“0”, 全体写操作都发送到可用的writeHost上。

  2. writeType=“1”,全体写操作都随便的发送到readHost。

  3. writeType=“2”,所有写操作都随意的在writeHost、readhost分上发。

 “readHost是附归属writeHost的,即意味着它从十二分writeHost获取同步数据,因此,当它所属的writeHost宕机了,则它也不会再参与到读写分离中来,即“不办事了”,那是因为此时,它的多少已经“不可信赖”了。基于那几个考虑,近些日子mycat 1.3和1.4本子中,若想扶植MySQL风流罗曼蒂克主风流洒脱从的标准配置,而且在主节点宕机的意况下,从节点仍为能够读取数据,则须要在Mycat里安插为五个writeHost并设置banlance=1。”

(2) 设置 switchType="2" 与slaveThreshold="100"

switchType 近来有二种选用:

-1:表示不活动切换

1 :暗许值,自动切换

2 :基于MySQL主从同步的景况调整是不是切换

“Mycat心跳检查语句配置为 show slave status ,dataHost 上定义四个新脾性: switchType="2" 与slaveThreshold="100",这时候表示开启MySQL主从复制状态绑定的读写抽离与切换机制。Mycat心跳机制通过检测show slave status 中的 "Seconds_Behind_Master", "Slave_IO_Running", "Slave_SQL_Running" 八个字段来明确当前着力同步的状态以至Seconds_Behind_Master主从复制时延。“

 

 

附:Centos6.5下安装mysql

第一步:查看mysql是还是不是安装。

rpm -qa|grep mysql

其次步:如若mysql的版本不是想要的本子。须要把mysql卸载。

yum remove mysql mysql-server mysql-libs mysql-common

rm -rf /var/lib/mysql

rm /etc/my.cnf

其三步:安装mysql。要求使用yum命令安装。在设置mysql在此之前需求安装mysql的下载源。要求从oracle的官网下载。

1)下载mysql的源包。

我们是centos6.4对应的rpm包为:mysql-community-release-el6-5.noarch.rpm

2)安装mysql下载源:

yum localinstall mysql-community-release-el6-5.noarch.rpm

(图片 10卡塔尔国此附件可保留

 图片 11

 

3)在线安装mysql:

yum install mysql-community-server

第四步:启动mysql

service mysqld start

第五步:供给给root客商安装密码。

/usr/bin/mysqladmin -u root password 'new-password'  // 为root账号设置密码

第六步:远程连接授权。

GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'%' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;

小心:'myuser'、'mypassword' 必要替换成实际的客户名和密码。

 

本文由大发体育娱乐在线发布于数据库,转载请注明出处:要到哪个地方去,主从复制

关键词:

上一篇:MySQL EXPLAIN详解

下一篇:没有了

最火资讯