Linux下Mysql主从复制及Mycat读写分离配置

发布时间:2018-11-17  栏目:MySQL  评论:0 Comments

海量数据的蕴藏问题

如今趁互联网的上进,数据的量级也是支撑指数的增高,从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地图