菜单

JAVAEE——宜立方商城13:Mycat数据库分片、主从复制、读写分离、100%Linux中成安装Mysql的方

2018年11月19日 - MySQL

海量数据的蕴藏问题

今日趁着互联网的上扬,数据的量级也是支撑指数的增长,从GB到TB到PB。对数码的各种操作也是尤为的困顿,传统的关系性数据库已经无法满足快速查询与插入数据的求。这个上NoSQL的产出小解决了当下无异于危机。它经过降落数据的安全性,减少针对工作之支撑,减少对复杂查询的支撑,来博性能达到的升级。

唯独,在聊场合NoSQL一些低头是心有余而力不足满足使用状况的,就仍有些使用状况是绝对要是产生工作和安康指标的。这个时候NoSQL肯定是无法满足的,所以还是要利用关系性数据库。如果以关系项目数据库解决海量存储的问题吗?此时即使需要开数据库集群,为了提高查询性能将一个数据库的数据分散到不同之数据库中贮存。

转自http://blog.csdn.net/jaysonhu/article/details/52858535

1.1 哟是数据库分片

简单的话,就是恃经某种特定的标准化,将我们存放于与一个数据库中之数码分散存放到多单数据库(主机)上面,以达疏散单台设备负载的功用。

数的切分(Sharding)根据其切分规则之类型,可以分成两种切分模式。

(1)一栽是按不同的说明(或者Schema)来切分到不同的数据库(主机)之上,这种纯属得叫做数据的垂直(纵向)切分

图片 1

 

 

 

(2)另外一种则是依据表中的多少的逻辑关系,将与一个表中的数据论某种条件拆分及大半雅数据库(主机)上面,这种切分称之为数据的程度(横向)切分。

 图片 2

 

mysql安装

  1. 下载mysql

  2. 解压
    tar -zxvf mysql-5.6.32-linux-glibc2.5-x86_64.tar.gz

  3. 将mysql文件夹移动及 /usr/local/ 下
    mv mysql-5.6.32-linux-glibc2.5-x86_64 /usr/local/mysql

  4. 始建mysql用户与组

    groupadd mysql
    adduser -r -g mysql mysql
    chown -R mysql.mysql /usr/local/mysql  //修改mysql目录所属mysql用户
    
  5. 安装

    /usr/local/mysql/scripts/mysql_install_db

  6. 改配置文件my.cnf,必须要改才会应用mycat

    最终一执上加

    lower_case_table_names = 1

  7. 设置mysql服务

    cp -f /usr/local/mysql/support-files/mysql.server  /etc/init.d/mysqld
    
  8. 启动mysql

    service mysqld start

  9. 管mysql命令在环境变量

    改/etc/profile文件,最后行添加
    export PATH=$PATH:/usr/local/mysql/bin

    接下来实施

    source /etc/profile

    万一配置立即生效

  10. 登陆mysql如果提示错误
    Can't connect to local MySQL server through socket '/tmp/mysql.sock'
    执行命令
    ln /var/lib/mysql/mysql.sock /tmp/mysql.sock
    晚更登陆

  11. root用户初始密码为空,修改密码使用mysqladmin命令
    mysqladmin -uroot -p password

  12. 登陆客户端

    mysql -uroot -p

  13. 创建测试数据库

 CREATE database db1;
 CREATE database db2;
 CREATE database db3;

至此mysql已经装完成了

1.2 怎么落实数据库分片

当数据库分片后,数据由一个数据库分散到几近个数据库被。此时网如查询时得切换不同之数据库进行询问,那么网如何知道如果查询的数据以哪个数据库中?当上加相同修记下时若奔哪个数据库中插入呢?这些问题处理起来还是挺之辛苦。

这种情景下足行使一个数据库中件mycat来缓解相关的题材。接下来了解一下呀是mycat。

安装java

Mycat介绍

mycat安装

  1. 下载mycat

  2. 解压

    tar -zxvf Mycat-server-1.6-RELEASE-20161012170031-linux.tar.gz

  3. 把mycat文件夹移动及 /usr/local/ 下
    mv Mycat-server-1.6-RELEASE-20161012170031-linux /usr/local/mycat

  4. 新建用户和组

    groupadd mycat
    adduser -r -g mycat mycat
    chown -R mycat.mycat /usr/local/mycat  //修改mycat目录所属mycat用户
    
  5. 修改配置文件 /usr/local/mycat/conf/schema.xml

    此配置mysql的地方、用户名和密码

    <writeHost host="hostM1" url="localhost:3306" user="root" password="root">
        <readHost host="hostS1" url="localhost:3306" user="root" password="root" />
    </writeHost>
    

    server.xml

    这里配置mycat的用户名密码

    <user name="root">
       <property name="password">digdeep</property>
       <property name="schemas">TESTDB</property>
    </user>
    
  6. 启动mycat

    /usr/local/mycat/bin/mycat start

  7. 连接mycat

    mysql -uroot -pdigdeep -h127.0.0.1 -P8066 -DTESTDB

    顾这里 -h 后面要是ip,使用localhost会出错

  8. 始建测试数据

use TESTDB;
create table company(id int not null primary key,name varchar(50),addr varchar(255));
insert into company values(1,"facebook","usa");
  1. 结果:查看mysql上的数据库db1,db2,db3达成且创了表company

2.1 什么是Mycat?

 

Mycat 背后是阿里都开源之大名鼎鼎产品——Cobar。Cobar 的着力职能与优势是 MySQL 数据库分片,此产品都传出,据说最早的发起者对
Mysql 很会,后来于阿里跳槽了,阿里随即开源的
Cobar,并保障至 2013 年年初,然后,就不曾然后了。

Cobar 的思绪以及实现路径的确对。基于
Java 开发的,实现了 MySQL 公开之二进制传输协议,巧妙地拿团结伪装成一个
MySQL Server,目前市场上绝大多数 MySQL 客户端工具及运还能够匹配。比自己实现一个初的数据库协议要明智的基本上,因为生态环境在何摆在。

 

Mycat 是根据 cobar 演变而来,对 cobar 的代码进行了干净底重构,使用 NIO 重构了网模块,并且优化了 Buffer 内核,增强了集聚,Join 等着力特性,同时配合绝大多数数据库成为通用的数据库中件。

简短的游说,MyCAT就是:

·一个新型的数据库中件产品支持mysql集群,或者mariadb cluster,提供高可用性数据分片集群。你可像下mysql一样用mycat。对于开发人员来说根本感觉不至mycat的在。

 图片 3

mysql主从服务器配置

  1. 修改主mysql配置文件my.cnf

    [mysqld]
    log_bin = mysql-bin  #记录操作日志
    binlog_ignore_db =  mysql  #不同步mysql系统数据库
    server_id = 1
    
  2. 起步主mysql,在主mysql创建一个用户user让从mysql连接,执行sql

    grant replication slave on *.* to 'user'@'%' identified by 'password'
    
  3. 改由mysql配置文件my.cnf

    log_bin = mysql-bin  #记录操作日志
    replicate_ignore_db = mysql #不同步mysql系统数据库
    slave_skip_errors = all 
    server_id = 2
    
  4. 主mysql执行sql

    show master status;\G

    图片 4

    1.jpg

  5. 从mysql连接主mysql

    根据第2步配创建的user,password 和 第4步获取的file,position
    连接主mysql

//如果是mysql5.5
change master to master_host='node1',master_user='user',master_password='password',master_log_file='mysql-bin.000004',master_log_pos=120;
//如果是mysql5.6即以上可以不需要master_log_file和master_log_pos,mysql会自动识别
change master to master_host='node1',master_user='user',master_password='password';
  1. 开启从mysql,从mysql中执行

    start slave;

  2. 查看从mysql状态,从mysql执行

    show slave status\G;

    图片 5

    2.png

`红色下划线部分为yes则开启成功`
  1. 测试成果

    先是在基本mysql上都新建数据库testdb

    主mysql:use testdb;create table user(id int not null primary key,name varchar(50));

    于mysql上也会见出user表,主从mysql配置成功!

2.2 Mycat支持之数据库

 图片 6

 

读写分离配置

  1. 注意事项

    远程 mysql 必须允许 mycat主机
    远程连接,修改mysql.user表中之用户数据,执行sql

    update mysql.user set host = '%' where user = 'root'
    
  2. schema.xml配置

    <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="hostM1" url="node1:3306" user="root" password="root">
            <readHost host="hostS1" url="node2:3306" user="root" password="root" />
        </writeHost>
    </dataHost>
    

    dbDriver

    属性

    指定连接后端数据库使用的 Driver,目前可卜的价值有 native 和 JDBC。使用
    native 的讲话,因为这个价值执行之是二进制的 mysql 协议,所以可以动用
    mysql 和 maridb。其他品种的数据库则用采取 JDBC 驱动来支撑。

    由 1.6 版本开始支持 postgresql 的 native 原始协议。

    若运用 JDBC 的说话需要将符合 JDBC 4 标准的教 JAR 包放到 MYCAT\lib
    目录下,并检查驱动 JAR
    包中连如下目录结构的公文:META-INF\services\java.sql.Driver。在此文件内写及具体的
    Driver 类名,例如:com.mysql.jdbc.Driver。

    balance

    属性

    负载均衡型,目前之取值有 3 种:

    1. balance=”0”, 不起启读写分离机制,所有读操作都发送到即可用之
      writeHost 上。

    2. balance=”1”,全部底 readHost 与 stand by writeHost 参与 select
      语词之载重均衡,简单的说,当对主双从模式(M1->S1,M2->S2,并且
      M1 暨 M2 互为主备),正常状况下,M2,S1,S2 都与 select
      语句之载重均衡。

    3. balance=”2”,所有读操作都随意的当 writeHost、readhost 上散发。

    4. balance=”3”,所有读请求随机的散发到 wiriterHost 对应之 readhost
      执行,writerHost 不负责读压

      力,注意 balance=3 只以 1.4 及其以后版本有,1.3 没有。

    writeType

    属性

    负载均衡型,目前底取值有 3 种:

    1. writeType=”0”, 所有写操作发送到布置的第一只
      writeHost,第一只挂了绝对到还生的亚独

      writeHost,重新开动后曾切换后的啊仍,切换记录在布局文件被:dnindex.properties
      .

    2. writeType=”1”,所有写操作都随意的殡葬到布置的 writeHost,1.5
      以后废除不引进。

    switchType

    属性

    • -1 表示不自动切换

    • 1 默认值,自动切换

    • 2 基于 MySQL 主从同步的状态控制是否切换

      中心跳语句也 show slave status

  3. 据悉主从延时切换技术

    Mycat1.4发端支持
    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
    主从复制时延, 当Seconds_Behind_Master>slaveThreshold
    时,读写分离筛选器会了滤掉这Slave机器,防止读到特别长远之前的故数据,而当主节点宕机后,切换逻辑会检查Slave上的Seconds_Behind_Master是否为0,为0时虽说表示主从同步,可以高枕无忧切换,否则不会见切换。

  4. 双重开mycat,连接创建测试数据

    use TESTDB;
    create table company(id int not null primary key,name varchar(50),addr varchar(255));
    insert into company values(1,"facebook","usa");
    
  5. 结果:查看主从mysql上的db1,db2,db3达成都创了表company

  6. 比方您的mysql的复制模式为STATEMENT(可以在my.cnf中安排binlog_format="STATEMENT"),还可以如此测试。

    mycat执行sql :

    insert into company values(1,@@hostname,"usa");`
    select * from company ;
    

图片 7

3.jpg

 可以看出,读取数据是从从mysql读出的

2.3 Mycat的分片策略

 图片 8

 

 

 

2.4 概念说明

2.4.1 逻辑库(schema) :

面前一节约讲了数据库中件,通常对实在用来说,并不需要知道中间件的留存,业务开发人员只待了解数据库的定义,所以数据库中件好让看成是一个要么多独数据库集群构成的逻辑库。

2.4.2 逻辑表(table):

既是有逻辑库,那么就会有逻辑表,分布式数据库被,对动来说,读写多少的阐发就是逻辑表。逻辑表,可以是数码切分后,分布于一个或多只分片库中,也堪无开多少切分,不分片,只出一个表构成。

分片表:是据那些老的老要命数据的发明,需要切分到多单数据库的说明,这样,每个分片都发一些数额,所有分片构成了总体的数目。
总而言之就是要开展分片的阐明。

非分片表:一个数据库被连无是富有的表都很特别,某些表是可以不用进行切分的,非分片是对立分片表来说的,就是那些无欲展开数据切分的表。

2.4.3 分片节点(dataNode)

数量切分后,一个大表被剪切及不同的分片数据库方面,每个表分片所在的数据库就是分片节点(dataNode)。

2.4.4 节点主机(dataHost)

数码切分后,每个分片节点(dataNode)不必然都见面占据一台机械,同一机器上面可以出多独分片数据库,这样一个或多个分片节点(dataNode)所于的机就是节点主机(dataHost),为了躲开单节点主机并发数限制,尽量以读写压力大之分片节点(dataNode)均衡的在不同的节点主机(dataHost)。

2.4.5 分片规则(rule)

前说了数量切分,一个大表被分为多只分片表,就用一定的条条框框,这样按某种业务规则把数量分到某个分片的平整就是分片规则,数据切分选择合适的分片规则不行重大,将大的免后续数据处理的难度。

Mycat的下载和安装

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 插数据 

 

以是文件中之多少插入到数据库:

 图片 9

 

 

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只读节点的布

 图片 10

 

Mycat读写分离与机动切换机制,需要mysql的主从复制机制配合。

 图片 11

 

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对应的值)。

 

老二步:启动自服务器复制功能

Mysql>start slave;

 

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

mysql> show slave status

 

……………………(省略部分)

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文件,重新启动服务。

 

 图片 12

 

上述操作过程,从服务器配置好。

 

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

(图片 13)此附件可保存

 图片 14

 

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’ 需要替换成实际上的用户称以及密码。

 

相关文章

标签:

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图