Mycat双主四从高可用详细配置操作

前言

实验环境:
系统:centos7
Mysql版本: 5.7
Mycat版本: 1.6
Mycat主机ip地址: 10.8.161.14
主机1地址: 10.8.161.9
主机2地址: 10.8.161.18
从机1地址: 10.8.161.139
从机2地址: 10.8.161.140
从机3地址: 10.8.161.141
从机4地址: 10.8.161.142

实验目标:
①主机1与主机2互为主从
②从机1、2为主机1的从机。从机3、4为主机2的从机。
③Mycat配置读写分离。 主机1、2为写主机 ,其余从机为读主机。当主机1宕机,主机2顶上。反之一样。

一. 主从配置

主机1
  1. vim /etc/my.cnf 在配置文件下添加以下内容
[mysqld] #这个下面添加
server-id=1                             #server的唯一标识
auto_increment_increment=2              #总共有2台主
auto_increment_offset=1                 #这是第1台
log-slave-updates=1                     # 共联同步 
log-bin = mysql-bin                           #打开二进制功能,MASTER主服务器必须打开此项
max_binlog_size=1024M                          #binlog单文件最大值                  
  1. 进入主机1数据库,创建从机连接主机的账户。
grant replication slave on *.*  TO  'cong'@'%'  identified by 'aA12345678.';
  1. 重启数据库
systemctl restart mysqld
  1. 记下日志名字和起始位置
进入数据库
mysql> show master status\G

在这里插入图片描述

主机2
  1. vim /etc/my.cnf 在配置文件下添加以下内容
[mysqld] #这个下面添加
server-id=1                             #server的唯一标识
auto_increment_increment=2              #总共有2台主
auto_increment_offset=2                 #这是第2台
log-slave-updates=1                     # 共联同步 
log-bin = mysql-bin                           #打开二进制功能,MASTER主服务器必须打开此项
max_binlog_size=1024M                          #binlog单文件最大值                  
  1. 进入主机2数据库,创建从机连接主机的账户。
grant replication slave on *.*  TO  'cong'@'%'  identified by 'aA12345678.';
  1. 重启数据库
systemctl restart mysqld
  1. 记下日志名字和起始位置
进入数据库
mysql> show master status\G

在这里插入图片描述

从机1
  1. vim /etc/my.cnf 在配置文件下添加以下内容
[mysqld] #这个下面添加
server-id=103   # 和其他设备的id不同即可
autocommit=1    # 自动提交事务,相对安全
lower_case_table_names=1    #表不区分大小写
  1. 查看主1的日志起始

  2. 进入数据库,连接主1库

mysql> \e
CHANGE MASTER TO
MASTER_HOST='10.8.161.9',     # 指定库1的地址
MASTER_USER='cong',           # 指定库1创建的用户名  
MASTER_PASSWORD='aA12345678.',   # 指定库1创建的密码
MASTER_LOG_FILE='mysql-bin.000002',    # 指定主1库的日志文件名
MASTER_LOG_POS=321;                    # 指定主1库的日志起始位置
    -> ;
其余从机配置方法类似

配置完毕在从机启动并查看

mysql >  start slave;    #启动
mysql > show slave status\G     #查看

在这里插入图片描述

二. Mycat配置

以下配置jdk包和mycat包已上传的我的资源,可自行下载。
下载地址

https://download.csdn.net/download/qq_26129413/14009842
  1. 部署jdk环境
[root@mycat ~]# tar xzf jdk-8u221-linux-x64.tar.gz -C /usr/local/
[root@mycat ~]# cd /usr/local/
[root@mycat local]# mv jdk1.8.0_221/ java    #改名为java
设置环境变量
[root@mycat local]# vim /etc/profile  #添加如下内容,
JAVA_HOME=/usr/local/java
PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
[root@mycat local]# source /etc/profile
  1. 解压mycat包
tar xf Mycat-server-1.6.5-release-20180122220033-linux.tar.gz -C /usr/local/
  1. 配置mycat

    server.xml:用于配置系统参数、用户信息、访问权限及SQL防火墙和SQL拦截功能等
    schema.xml:用于配置逻辑库、逻辑表相关信息
    rule.xml:如果使用了水平切分,就需要使用该文件配置切分规则
    log4j2.xml:Mycat日志相关的配置,例如日志输出格式、日志级别等

    应用连接Mycat服务时,Mycat首先会通过server.xml中的配置信息进行用户认证。用户通过验证后,所看到的逻辑库、逻辑表都是schema.xml中所配置的。当使用了水平切分时,Mycat会通过rule.xml里配置的规则来定位具体的物理数据库位置,从而完成写入/读取数据。

①server.xml 配置

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mycat:server SYSTEM "server.dtd">
<mycat:server xmlns:mycat="http://io.mycat/">
        <system>
        <property name="useSqlStat">0</property>  <!-- 1为开启实时统计、0为关闭 -->
        <property name="useGlobleTableCheck">0</property>  <!-- 1为开启全加班一致性检测、0为关闭 -->

                <property name="sequnceHandlerType">2</property>
<property name="processorBufferPoolType">0</property>
        <property name="handleDistributedTransactions">0</property>
        <property name="useOffHeapForMerge">1</property>
        <property name="memoryPageSize">1m</property>
        <property name="spillsFileBufferSize">1k</property>

                <property name="useStreamOutput">0</property>

        <property name="systemReserveMemorySize">384m</property>

        <property name="useZKSwitch">true</property>


        </system>

        <user name="root" >
                <property name="password">abc123.456</property>
                <property name="schemas">testdb</property>
</user>
    <!--
        <user name="user">
                <property name="password">user</property>
                <property name="schemas">TESTDB</property>
                <property name="readOnly">true</property>
        </user>
    -->
</mycat:server>

在这里插入图片描述 ②schema.xml配置

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


<!--   1.  设置schema name 要和server.xml 配置的一样     
       2.   配置节点-->

    <schema name="testdb"   sqlMaxLimit="100" dataNode="dn1">
    </schema>


<!--  1.  配置节点 对应的虚拟主机池  
      2.  配置虚拟库 ,这里要对应和实际库一个名字-->
    <dataNode name="dn1" dataHost="localhost1" database="testdb" />



<!--  配置虚拟主机池的读写读写分离方式
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不负担读压力 -->
    <dataHost name="localhost1" maxCon="1000" minCon="10" balance="1"
                                  writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">
    <!-- 心跳检测 -->
    <heartbeat>select user()</heartbeat>
   
     <!-- 设置读写分离,应为上面选择了balance="1"  ,所以这里最少要有连个写主机 ,主1、主2是写主机 ,从机1、2为主机1的从机。从机3、4为主机2的从机。 -->
    <writeHost host="mysql-master" url="10.8.161.9:3306" user="root" password="aA12345678.">
        
    <readHost host="mysql-slave" url="10.8.161.139:3306" user="root" password="aA12345678." />
    <readHost host="mysql-slave3" url="10.8.161.141:3306" user="root" password="aA12345678." />
           </writeHost>

    <writeHost host="mysql-master2" url="10.8.161.18:3306" user="root" password="aA12345678.">
        <!-- can have multi read hosts -->
    <readHost host="mysql-slave2" url="10.8.161.140:3306" user="root" password="aA12345678." />
    <readHost host="mysql-slave3" url="10.8.161.142:3306" user="root" password="aA12345678." />

           </writeHost>

</dataHost>
</mycat:schema>
  1. 启动mycat服务
cd  /usr/local/mycat/bin   # 进入mycat的启动bin目录
./mycat                    # 启动mycat
netstat -lntp              # 查看端口,可以看到有8086端口说明配置成功

在这里插入图片描述
5. 远程连接mycat虚拟库

mysql -uroot -h10.8.161.14 -p'abc123.456' -P 8066  #这里的账号密码是我们在server.xml里配置的

登陆后可以查看到我们创建的testdb这个虚拟库,当我们操作该库时,对应的是几个实体数据库的testdb库。
在这里插入图片描述

======================================================================================================================================================================================================================================================================================================
辛苦浏览观看,如果对你有帮助,请顺手点个赞吧 (σ゚∀゚)σ…:*☆

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

king config

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值