阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Mycat入门配置之读写分离配置

397次阅读
没有评论

共计 6398 个字符,预计需要花费 16 分钟才能阅读完成。

1、Mycat 的分片

两台数据库服务器:

192.168.80.11

192.168.80.4

操作系统版本环境:CentOS6.5

数据库版本:5.6

mycat 版本:1.4 release

数据库:db1,db2,db3

说明:db1.db2 在 192.168.80.11 服务器上,db3 在 192.168.80.4 服务器上

1、schema.xml 配置:

Schema.xml 作为 MyCat 中重要的配置文件之一,管理着 MyCat 的逻辑库、表、分片规则、DataNode 以及 DataSource。弄懂这些配置,是正确使用 MyCat 的前提。这里就一层层对该文件进行解析。

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

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

dataNode 标签定义了 MyCat 中的数据节点,也就是我们通常说所的数据分片。

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

<?xml version=”1.0″?>
<!DOCTYPE mycat:schema SYSTEM “schema.dtd”>
<mycat:schema xmlns:mycat=”http://org.opencloudb/”>
<!– 起一个名字,作为 mycat 的数据库名 –>
<schema name=”mycat001″ checkSQLschema=”false” sqlMaxLimit=”100″>
        <!– 一个表的名字,以 id 为分片依据,数据节点:d1,d2,d3,rule 拆分规定 // 此处为默认  –>
        <table name=”mycat_test” primaryKey=”id” dataNode=”d1,d2,d3″ rule=”auto-sharding-long” />
       
    </schema>
    <!– <dataNode name=”dn1$0-743″ dataHost=”localhost1″ database=”db$0-743″
        /> –>
<!– 配置数据节点,name 和上面的对照,datahost 和下面的对照,database 为数据节点中的数据库中的真实名字 –>
    <dataNode name=”d1″ dataHost=”centos_1″ database=”db1″ />
    <dataNode name=”d2″ dataHost=”centos_2″ database=”db2″ />
    <dataNode name=”d3″ dataHost=”centos_3″ database=”db3″ />
    <!– 配置 datahost 的信息,连接数据库的配置,name 和上面的对照,因为 db1 和 db2 在一台机器上,可以配置一成台 datahost–>
    <dataHost name=”centos_1″ maxCon=”1000″ minCon=”10″ balance=”0″
        writeType=”0″ dbType=”mysql” dbDriver=”native” switchType=”1″  slaveThreshold=”100″>
<heartbeat>show slave status</heartbeat><!– 配置心跳,保持状态 –>
        <!– can have multi write hosts –><!– 配置服务器 ip 和数据库端口,用户名和密码 –>
        <writeHost host=”hostM1″ url=”192.168.80.11:3306″ user=”root” password=”123456″>
            <!– can have multi read hosts –><!– 上面的 writehost 是写 –>
        </writeHost>
        <!– <writeHost host=”hostM2″ url=”localhost:3316″ user=”root” password=”123456″/> –>
    </dataHost>
   
    <dataHost name=”centos_2″ 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=”192.168.80.11:3306″ user=”root” password=”123456″>
            <!– can have multi read hosts –>
        </writeHost>
        <!– <writeHost host=”hostM2″ url=”localhost:3316″ user=”root” password=”123456″/> –>
    </dataHost>
   
    <dataHost name=”centos_3″ 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=”hostM3″ url=”192.168.80.4:3306″ user=”root” password=”123456″>
            <!– can have multi read hosts –>
        </writeHost>
        <!– <writeHost host=”hostM2″ url=”localhost:3316″ user=”root” password=”123456″/> –>
    </dataHost>
   
</mycat:schema>

2、server.xml 配置

配置用户:name=”schemas” 和前面配置的 schemas.xml 中的 name 对应

<user name=”dongrunhua”>
    <property name=”password”>123456</property>
    <property name=”schemas”>mycat001</property>
    <property name=”readOnly”>false</property>
</user>

3、rule.xml 配置

rule.xml 里面就定义了我们对表进行拆分所涉及到的规则定义。我们可以灵活的对表使用不同的分片算法,或者对表使用相同的算法但具体的参数不同。这个文件里面主要有 tableRule 和 function 这两个标签。在具体使用过程中可以按照需求添加 tableRule

和 function。

此配置文件可以不用修改,使用默认即可。

4、测试:

所建的表,要在 schemas.xml 中的 schemas 节点内的 tables 节点配置

由于配置的分片规则为“auto-sharding-long”,所以 mycat 会根据此规则自动分片。

每个 datanode 中保存一定数量的数据。根据 id 进行分片

经测试 id 范围为:

db1:1~5000000

db2:5000001~10000000

db3:10000001~15000000

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

[Err] 1064 – can’t find any valid datanode :mycat_test -> id -> 15000001

此时需要添加节点了。

2、mycat 配置读写分离

数据库读写分离对于大型系统或者访问量很高的互联网应用来说,是必不可少的一个重要功能。对于 MySQL 来说,标准的读写分离是主从模式,一个写节点 Master 后面跟着多个读节点,读节点的数量取决于系统的压力,通常是 1 - 3 个读节点的配置。

1、先配置 MySQL 的主从模式

说明:此配置为 192.168.80.11 的 db1 为主,192.168.80.4 的 db1 为从

2、配置主服务器

第一步:配置 my.cnf 文件

如果在 /etc 文件先没有 my.cnf 这个文件,从 /usr/share/mysql 下复制一个过来 /etc/, 改一下名字即可 my-default.cnf 然后在 [mysqld] 下面添加:

# 配置数据库
binlog-do-db=db1
binlog-ignore-db=mysql
# 启用二进制日志
log-bin=mysql-bin
# 服务器唯一 ID,一般取 IP 最后一段
server-id=11

第二步:重启 MySQL 服务

service mysql restart

第三步:建立一个账户并授权 slave,在这个时候一般不会取用 root 用户,建立一个专用账号。

可以设置为 % 表示所有客户端可以连,只要用户名密码正确,也可以设置一个 ip 代替,加强安全。

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

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

刷新:FLUSH PRIVILEGES;

查看有哪些用户:

mysql>select user,host from mysql.user;

第四步:查看 master 的状态

mysql> show master status;

Mycat 入门配置之读写分离配置

3、配置从服务器

第一步:修改 my.cnf 文件, 唯一 id

文件路径和上面一样:然后在 [mysqld] 段下面添加:server-id=4

第二步:配置从服务器

mysql>change master to master_host=’192.168.80.11′,master_port=3306,master_user=’backup’,master_password=’123456′,master_log_file=’mysql-bin.000003′,master_log_pos=2669

注意:语句中间不要断开,master_host 为主服务器的 ip,master_port 为端口(无引号),master_user 为执行同步操作的数据库账户,在此为刚创建的 backup, master_log_file 为刚刚 file 内的值,master_log_pos 为刚刚 position 内的值

启动从服务器的复制功能:

mysql>start slave;

检查从服务器的复制功能:

mysql>show slave status\G

查看 Slave_IO_Running:yes // 此状态必须为 yes

Slave_SQL_Running:yes // 此状态必须 yes

注:Slave_IO 及 Slave_SQL 进程必须正常运行,即 YES 状态,否则都是错误的状态(如:其中一个 NO 均属错误)。

Mycat 入门配置之读写分离配置

注意:删除 slave

stop slave; // 停止 slave

reset slave all; // 删除 slave

start slave; // 启动 slave

在 mysql 主从复制时,在 192.168.80.4 上建一个 db1 作为从服务器,名字 db1 和 192.168.80.11 上的主服务器名字相同,都为 db1

Mycat 配置:

Mycat 1.4 支持 MySQL 主从复制状态绑定的读写分离机制,让读更加安全可靠,配置如下:

  配置如下:

<dataHost name=”centos_1″ maxCon=”1000″ minCon=”10″ balance=”1″
        writeType=”0″ dbType=”mysql” dbDriver=”native” switchType=”2″  slaveThreshold=”100″>
        <heartbeat>show slave status</heartbeat>
        <!– can have multi write hosts –>
        <writeHost host=”hostM1″ url=”192.168.80.11:3306″ user=”root” password=”123456″>
            <!– can have multi read hosts –>
            <readHost host=”hostS1″ url=”192.168.80.4:3306″ user=”root” password=”123456″ />

        </writeHost>
        <!– <writeHost host=”hostM2″ url=”localhost:3316″ user=”root” password=”123456″/> –>
</dataHost>

说明:

(1)设置 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 分上发。

“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 主从复制时延。“

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-22发表,共计6398字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19348
评论数
4
阅读量
7806509
文章搜索
热门文章
开发者必备神器:阿里云 Qoder CLI 全面解析与上手指南

开发者必备神器:阿里云 Qoder CLI 全面解析与上手指南

开发者必备神器:阿里云 Qoder CLI 全面解析与上手指南 大家好,我是星哥。之前介绍了腾讯云的 Code...
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
云服务器部署服务器面板1Panel:小白轻松构建Web服务与面板加固指南

云服务器部署服务器面板1Panel:小白轻松构建Web服务与面板加固指南

云服务器部署服务器面板 1Panel:小白轻松构建 Web 服务与面板加固指南 哈喽,我是星哥,经常有人问我不...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
从“纸堆”到“电子化”文档:用这个开源系统打造你的智能文档管理系统

从“纸堆”到“电子化”文档:用这个开源系统打造你的智能文档管理系统

从“纸堆”到“电子化”文档:用这个开源系统打造你的智能文档管理系统 大家好,我是星哥。公司的项目文档存了一堆 ...
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
飞牛NAS玩转Frpc并且配置,随时随地直连你的私有云

飞牛NAS玩转Frpc并且配置,随时随地直连你的私有云

飞牛 NAS 玩转 Frpc 并且配置,随时随地直连你的私有云 大家好,我是星哥,最近在玩飞牛 NAS。 在数...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
每天一个好玩的网站-手机博物馆-CHAZ 3D Experience

每天一个好玩的网站-手机博物馆-CHAZ 3D Experience

每天一个好玩的网站 - 手机博物馆 -CHAZ 3D Experience 一句话介绍:一个用 3D 方式重温...
三大开源投屏神器横评:QtScrcpy、scrcpy、escrcpy 谁才是跨平台控制 Android 的最优解?

三大开源投屏神器横评:QtScrcpy、scrcpy、escrcpy 谁才是跨平台控制 Android 的最优解?

  三大开源投屏神器横评:QtScrcpy、scrcpy、escrcpy 谁才是跨平台控制 Andr...
240 元左右!五盘位 NAS主机,7 代U硬解4K稳如狗,拓展性碾压同价位

240 元左右!五盘位 NAS主机,7 代U硬解4K稳如狗,拓展性碾压同价位

  240 元左右!五盘位 NAS 主机,7 代 U 硬解 4K 稳如狗,拓展性碾压同价位 在 NA...
星哥带你玩飞牛NAS硬件 01:捡垃圾的最爱双盘,暴风二期矿渣为何成不老神话?

星哥带你玩飞牛NAS硬件 01:捡垃圾的最爱双盘,暴风二期矿渣为何成不老神话?

星哥带你玩飞牛 NAS 硬件 01:捡垃圾的最爱双盘,暴风二期矿渣为何成不老神话? 前言 在选择 NAS 用预...
星哥带你玩飞牛NAS-12:开源笔记的进化之路,效率玩家的新选择

星哥带你玩飞牛NAS-12:开源笔记的进化之路,效率玩家的新选择

星哥带你玩飞牛 NAS-12:开源笔记的进化之路,效率玩家的新选择 前言 如何高效管理知识与笔记,已经成为技术...