一:环境准备:

应用 主机
mysql-master 192.168.205.184
mysql-slave 192.168.205.185
mycat-01,keeplived,jdk 192.168.205.182
mycat-02,keeplived,jdk 192.168.205.183

mysql主从环境(略)

二: 主机(192.168.205.183,192.168.205.182)上安装jdk,mycat,keeplived

以192.168.205.183主机为例,另外一台主机配置与183主机一致:

1.安装jdk

上传jdk安装包解压安装到/usr/local/jdk

vim /etc/profile

export JAVA_HOME=/usr/local/jdk

export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

export PATH=$JAVA_HOME/bin:$PATH

. /etc/profile

2.官网下载安装mycat

wget http://dl.mycat.org.cn/1.6.7.4/Mycat-server-1.6.7.4-release/Mycat-server-1.6.7.4-release-20200105164103-linux.tar.gz

tar -zxvf Mycat-server-1.6.7.4-release-20200105164103-linux.tar.gz

mv mycat/ /opt/

3.修改配置文件

cd /opt/mycat/conf

vim server.xml

vim schema.xml

4.启动mycat服务

cd /opt/mycat/bin

./mycat start

mycat启动后会有2个端口8066(数据连接端口),9066(管理端口)

ss -ntupl

5.通过mysql客户端连接8066(我们在mysql-master节点登录mycat试下)

mysql -ulilong -p111111 -P8066 -h 192.168.205.183

6.查看mycat里数据库信息

7.进入TSDB创建表city

crate table city(id int,name varchar(8),area float(5,2),people_num int);

查看数据库中是否创建成功

show tables;

在2台数据库节点看是否已存在此表(由于做了读写分离在创建表时走了写节点也就是主库,从库也同步过来了)

8.通过mysql客户端连接9066可以查看到相关dataNode信息

mysql -ulilong -p111111 -P9066 -h 192.168.205.183

show @@dataNode;

在2台mycat节点上安装keepalived并单独配置日志文件(默认在/var/log/messages日志查看不方便)

192.168.205.182:

yum -y install keepalived

vim /etc/sysconfig/keepalived

KEEPALIVED_OPTIONS="-D -d -S 0"

vim /etc/rsyslog.conf

local0.* /var/log/keepalived.log

systemctl restart rsyslog

vim /etc/keepalived/keepalived.conf

192.168.205.183:

yum -y install keepalived

vim /etc/sysconfig/keepalived

KEEPALIVED_OPTIONS="-D -d -S 0"

vim /etc/rsyslog.conf

local0.* /var/log/keepalived.log

systemctl restart rsyslog

vim /etc/keepalived/keepalived.conf

分别启动2节点keepalived

192.168.205.182:

systemctl start keepalived

可以看到vip接口在182节点上

192.168.205.183:

systemctl start keepalived

在mysql节点上我们通过vip接口登录试下

mysql -ulilong -p111111 -P8066 -h 192.168.205.250

下图我们看到已经登录成功

我们停用192.168.205.182的keepalived试下看是否转移到192.168.205.183上

可以看到182节点vip接口不在了

在看下183节点vip接口已飘逸到此节点上

我们再次启动主节点上keepalived发现vip接口已经飘逸回来,默认情况下keepalived是抢占模式所以主节点恢复后会直接抢占回来

到此为止基本完成配置,可仔细想想如果是所在keepalived的master节点mycat服务有问题那它还会切换到备用节点吗。答案肯定是否定的。这就需要在keepalived 配置脚本来检测mycat服务状态如果所在节点master的mycat服务挂掉了, 那就主动结束所在master节点的keepalived进程切换至备用节点继续提供服务

2节点分别创建存放脚本的文件

mkdir -p /etc/keepalived/scripts

vim /etc/keepalived/scripts/chk_mycat.sh

#!/bin/bash

MYCAT_PORT=ss -ntupl | egrep '8066|9066' | wc -l

if [ $MYCAT_PORT -ne 2 ];then

pkill keepalived

fi

在 /etc/keepalived/keepalived.conf配置文件中将以下内容加入到相应位置

vrrp_script chk_mycat {

script "/etc/keepalived/scripts/chk_mycat.sh"

interval 2

weight -50

fall 3

rise 3

timeout 3

}

track_script {

chk_mycat

}

重新启动keepalived服务

systemctl restart keepalived

验证检测脚本是否生效:

将master节点上mycat服务手动停掉

cd /opt/mycat/bin && ./mycat stop

此时master节点keepalived服务已经停止了

在看下backup节点,发现vip已经飘移到此节点上

从mysql客户端访问正常

配置MASTER<-->slave 相互切换时邮件通知

2个keepalived节点安装postfix邮件服务(默认已安装)和 发送邮件插件mailx

yum -y install mailx

vim /etc/mail.rc

set from=test@hzs.com.cn

set smtp=smtp.exmail.qq.com

set smtp-auth-user=test@hzs.com.cn

set smtp-auth-password=***

smtp-auth=login

将以下配置加入下面相应位置(2台做同样操作)

MASTER,BACKUP,FAULT(大小写均可)

vim /etc/keepalived/keepalived.conf

notify_master "/etc/keepalived/scripts/notify.sh MASTER"

notify_backup "/etc/keepalived/scripts/notify.sh BACKUP"

notify_fault "/etc/keepalived/scripts/notify.sh FAULT"

创建相应脚本文件(2台做同样操作)

cd /etc/keepalived/scripts

vim notify.sh

#!/bin/bash

SEND_to_MAIL='1550789579@qq.com'

notify() {

MAIL_SUBJECT="$(hostname) to be $1, vip 转移"

MAIL_TEXT="$(date +'%F %T'): vrrp transition, $(hostname) changed to be $1"

echo "$MAIL_TEXT" | mail -s "$MAIL_SUBJECT" $SEND_to_MAIL

}

case $1 in

MASTER)

notify MASTER

;;

BACKUP)

notify BACKUP

;;

FAULT)

notify FAULT

;;

*)

echo "Usage: $(basename $0) {MASTER|BACKUP|FAULT}"

exit 1

;;

esac

更改脚本执行权限

chmod +x notify

重新启动keepalived服务

systemctl restart keepalived

已可以看到vip已转移到备用节点上

-------------------------------------------------------------------------------------------------------------------------------------

mycat分表

1.我们以2个dataNode节点为例子在mysql-master库上新建cs1_db,mysql-slave会同步cs1_db库,之前已建过cs_db库,在2个库里分别新建表'wuhan'

2.mycat节点(2台分表做以下配置)

vim schema.xml

vim rule.xml

3.重启mycat服务

cd /opt/mycat/bin && ./mycat restart

4.通过VIP接口连接mycat服务,插入数据

mysql -ulilong -p111111 -P8066 -h 192.168.205.250

insert into wuhan(id,address) values(7,'xx'),(8,'xg'),(9,'lx'),(10,'ob'),(11,'kx'),(12,'hx');

5.查看2个数据库wuhan表中数据,发现数据已经分表插入到了2个数据库中同一表里

6.可以看下mysql-slave库也同步了

到此所有配置已结束

keeplived+mycat+mysql高可用读写分离水平分表(谁看谁都会)的更多相关文章

  1. MySQL高可用读写分离方案预研

    目前公司有需求做MySQL高可用读写分离,网上搜集了不少方案,都不尽人意,下面是我结合现有组件拼凑的实现方案,亲测已满足要求,希望各位多提建议 :) 一.    网上方案整理(搜集地址不详...) 1 ...

  2. DRBD+Heartbeat+Mysql高可用读写分离架构

    声明:本案例仅为评估测试版本 注意:所有服务器之间必须做好时间同步 架构拓扑 IP信息: Heartbeat安装部署 1.安装heartbeat(主备节点同时安装) [root@master1 ~]# ...

  3. 重新学习Mysql数据13:Mysql主从复制,读写分离,分表分库策略与实践

    一.MySQL扩展具体的实现方式 随着业务规模的不断扩大,需要选择合适的方案去应对数据规模的增长,以应对逐渐增长的访问压力和数据量. 关于数据库的扩展主要包括:业务拆分.主从复制.读写分离.数据库分库 ...

  4. mysql使用MRG_MyISAM(MERGE)实现水平分表

    在MySQL中数据的优化尤其是大数据量的优化是一门很大的学问,当然其它数据库也是如此,即使你不是DBA,做为一名程序员掌握一些基本的优化信息,也可以让你在自己的程序开发中受益匪浅.当然数据库的优化有很 ...

  5. 应用集成mycat,实现mycat的高可用与mysql的读写分离

    前言 开心一刻 一个女人自朋友圈写道:我家老公昨天和别人家的老婆出去旅游,迄今未归,我则被别人家的老公折腾了一天,好累哦! 圈子下面,评论无数,老公在下面评论到:能不能好好说话,我只不过陪女儿去毕业旅 ...

  6. Mysql 高可用(MHA)-读写分离(Atlas)-分布式架构(Mycat)

    Mysql 高可用(MHA)-读写分离(Atlas) 1. 搭建主从复制(一主两从) 1.1 准备环境 1 主库:10.0.0.51/db01 2 从库:10.0.0.52/db02,10.0.0.5 ...

  7. mysql高可用架构之MHA,haproxy实现读写分离详解

    MySQL高可用架构之MHA 一.运维人员需要掌握的MySQL技术: 1.基本SQL语句 2.基本的管理[库表数据的管理    权限的管理] 3.容灾       保证数据不丢失. 二.工作中MySQ ...

  8. 【DB宝42】MySQL高可用架构MHA+ProxySQL实现读写分离和负载均衡

    目录 一.MHA+ProxySQL架构 二.快速搭建MHA环境 2.1 下载MHA镜像 2.2 编辑yml文件,创建MHA相关容器 2.3 安装docker-compose软件(若已安装,可忽略) 2 ...

  9. MySQL 高可用:mysql+mycat实现数据库分片(分库分表)

    本文引用于http://blog.csdn.net/kk185800961/article/details/51147029 MySQL 高可用:mysql+mycat实现数据库分片(分库分表) 什么 ...

随机推荐

  1. 基础BaseController

    1.依赖状态枚举 /** * status enum */ public enum Status { SUCCESS(0, "success", "成功"), ...

  2. 可视化反投射:坍塌尺寸的概率恢复:ICCV9论文解读

    可视化反投射:坍塌尺寸的概率恢复:ICCV9论文解读 Visual Deprojection: Probabilistic Recovery of Collapsed Dimensions 论文链接: ...

  3. TensorRT IRNNv2Layer

    TensorRT IRNNv2Layer IRNNv2Layer层实现递归层,如递归神经网络(RNN).门控递归单元(GRU)和长短期记忆(LSTM).支持的类型有RNN.GRU和LSTM.它执行一个 ...

  4. 2、java数据结构和算法:单链表: 反转,逆序打印, 合并二个有序链表,获取倒数第n个节点, 链表的有序插入

    什么也不说, 直接上代码: 功能点有: 1, 获取尾结点 2, 添加(添加节点到链表的最后面) 3, 添加(根据节点的no(排名)的大小, 有序添加) 4, 单向链表的 遍历 5, 链表的长度 6, ...

  5. 像Swing这种已经不太用的技术,大学还在教,到底要不要学?

    一直以来,写日常问题.前沿技术和架构思考类的文章比较多,今天为什么突然来说说Swing这个陈年老技术呢? 因为在CSDN上看到了这样的一篇文章: 可以看到作者对于学Swing还是挺愤怒的,不过确实Sw ...

  6. 【逆向&编程实战】Metasploit中的安卓载荷凭什么吊打SpyNote成为安卓端最强远控

    文章作者:MG1937 QQ:3496925334 CNBLOG:ALDYS4 未经许可,禁止转载 前言 说起SpyNote大家自然不陌生,这款恶意远控软件被利用在各种攻击场景中 甚至是最近也捕获到了 ...

  7. 【Android编程】android平台的MITM瑞士军刀_cSploit源码解析及中间人攻击复现

    /文章作者:Kali_MG1937 作者博客ID:ALDYS4 QQ:3496925334 未经允许,禁止转载/ 何为MITM欺骗,顾名思义,中间人攻击的含义即为在局域网中充当数据包交换中间人的角色 ...

  8. SpringBoot系列——admin服务监控

    前言 springboot项目部署起来后,如何实时监控项目的运行状况呢?本文记录使用springboot-admin对服务进行监控. springboot-admin介绍:https://codece ...

  9. 618技术特辑(三)直播带货王,“OMG买它”的背后,为什么是一连串技术挑战?

    [本期推荐]为什么一到大促,我们的钱包总是被掏空?是大家自制力不够,还是电商平台太会读懂人心,从技术维度,抽丝剥茧一探究竟. 摘要:动辄几十上百万人同时在线的直播间,让所有人能同时公平的去抢购,并且还 ...

  10. 【题解】PIZZA 贪心

    题目描述 Michael请N个朋友吃馅饼,但是每个朋友吃且仅吃一个馅饼的1/4.1/2或3/4.请你编程求出Michael至少需要买多少个馅饼. 输入输出格式 输入格式: 输入文件的第一行是整数N:接 ...