mysql+mycat+keepalive+haproxy高可用集群搭建(五)

Mysql部署高可用-Mycat安装

Mycat部署架构图

下载Mycat

下载地址http://dl.mycat.org.cn/1.6.7.3/20190927161129/Mycat-server-1.6.7.3-release-20190927161129-linux.tar.gz

[root@mysql-150-master home]# wget http://dl.mycat.org.cn/1.6.7.3/20190927161129/Mycat-server-1.6.7.3-release-20190927161129-linux.tar.gz
​
2021-03-02 00:22:00 (7.72 MB/s) - 已保存 “Mycat-server-1.6.7.3-release-20190927161129-linux.tar.gz” [17820584/17820584])
​
[root@mysql-150-master home]# ll
总用量 17404
-rw-r--r--. 1 root  root  17820584 9月  27 2019 Mycat-server-1.6.7.3-release-20190927161129-linux.tar.gz

安装java

因为mycat是java开发的,需要安装java

mycat 主机设置host

[root@mysql-150-master home]# vi /etc/hosts
###追加
192.168.1.150 mysql-150-master
192.168.1.151 mysql-151-master
192.168.1.152 mysql-152-slave
192.168.1.153 mysql-153-slave
192.168.1.154 mysql-154-slave
[root@mysql-151-master ~]# vi /etc/hosts
###追加
192.168.1.150 mysql-150-master
192.168.1.151 mysql-151-master
192.168.1.152 mysql-152-slave
192.168.1.153 mysql-153-slave
192.168.1.154 mysql-154-slave

解压安装mycat

[root@mysql-150-master home]# tar -zxvf Mycat-server-1.6.7.3-release-20190927161129-linux.tar.gz 
​
[root@mysql-150-master home]# ll
总用量 588
drwx------. 2 haproxy haproxy     62 3月   3 01:17 haproxy
drwxr-xr-x. 8 root    root       255 3月   2 00:27 jdk1.8.0
-rw-r--r--. 1 root    root    601873 6月  23 2020 keepalived-1.2.24.tar.gz
drwxr-xr-x. 7 root    root        85 3月   3 13:22 mycat
drwx------. 4 mysql   mysql      110 3月   2 11:24 mysql
[root@mysql-150-master home]# 

配置Mycat环境变量

[root@mysql-150-master home]# vi /etc/profile
### 在末尾追加
export MYCAT_HOME=/home/mycat
PATH=$PATH:$MYCAT_HOME/bin
​
export PATH
​
###保存并立即生效
[root@mysql-150-master home]# source /etc/profile

配置MyCat

配置之前要确保mysql的主从搭建是Ok。架构如下图:

补充: (1) MySQL主从复制配置中,如果涉及到函数或存储过程的同步复制,需要在/etc/my.cnf中的[mysqld]段中增加配置log_bin_trust_function_creators=true 或在客户端中设置 set global log_bin_trust_function_creators = 1; (2) 如果要做读写分离下的主从切换,那么从节点也有可能会变为写节点,因此从节点就不能设置为只读 read_only=1 。 (3) Linux版本的MySQL,需要设置为MySQL大小写不敏感,否则可能会发生找不到表的问题。可在/etc/my.cnf的[mysqld]段中增加lower_case_table_names=1 。

配置schema.xml

<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://org.opencloudb/">
 
      <!-- 定义MyCat的逻辑库,逻辑库的概念与MySQL中的 database 概念相同 -->
      <!-- schema name="rc_schema1" checkSQLschema="false" sqlMaxLimit="100" dataNode="rc_dn1"></schema -->
        <!--schema name="pay_schema1" checkSQLschema="false" sqlMaxLimit="100" dataNode="pay_dn1"></schema-->
      <schema name="lyz_schema1" checkSQLschema="false" sqlMaxLimit="100" dataNode="lyz_dn1"></schema>
      <schema name="lyz_schema2" checkSQLschema="false" sqlMaxLimit="100" dataNode="lyz_dn2"></schema>
 
        <!-- 其中checkSQLschema表明是否检查并过滤SQL中包含schema的情况,如逻辑库为 TESTDB,则可能写为select * from TESTDB.edu_user,此时会自动过滤TESTDB,SQL变为select * from edu_user,若不会出现上述写法,则可以关闭属性为false -->
 
        <!--sqlMaxLimit默认返回的最大记录数限制,MyCat1.4版本里面,用户的Limit参数会覆盖掉MyCat的sqlMaxLimit默认设置-->
 
      <!-- 定义MyCat的数据节点 -->
      <dataNode name="lyz_dn1" dataHost="dtHost2" database="lyzdb1" />
      <dataNode name="lyz_dn2" dataHost="dtHost2" database="lyzdb2" />
    <!-- dataNode 中的 name 数据表示节点名称, dataHost表示数据主机名称, database表示该节点要路由的数据库的名称 -->
 
 
      
 
      <!-- 使用MyCat托管MySQL主从切换 -->
      <!-- 定义数据主机dtHost2,连接到MySQL读写分离集群,并配置了读写分离和主从切换 -->
      <dataHost name="dtHost2" maxCon="500" minCon="20" balance="1"
           writeType="0" dbType="mysql" dbDriver="native" switchType="2" slaveThreshold="100">
           <!-- 通过show slave status检测主从状态,当主宕机以后,发生切换,从变为主,原来的主变为从,这时候show slave status就会发生错误,因为原来的主没有开启slave,不建议直接使用switch操作,而是在DB中做主从对调。 -->
 
           <heartbeat>show slave status</heartbeat>
           <!-- can have multi write hosts -->
           <writeHost host="hostM2" url="192.168.209.131:3306" user="root" password="root" />
           <writeHost host="hostS2" url="192.168.209.132:3306" user="root" password="root" />
      </dataHost>
 
      <!-- 参数balance决定了哪些MySQL服务器参与到读SQL的负载均衡中 -->
      <!-- balance="0",为不开启读写分离,所有读操作都发送到当前可用的writeHost上-->
      <!-- balance="1",全部的readHost与stand by writeHost参与select语句的负载均衡-->
      <!-- balance="2",所有读操作都随机的在writeHost、readHost上分发-->
      <!-- writeType="0",所有写操作都发送到可用的writeHost上 -->
      <!-- writeType="1",仅仅对于galera for mysql集群这种多主多节点都能写入的集群起效,此时Mycat会随机选择一个writeHost并写入数据,对于非galera for mysql集群,请不要配置writeType=1,会导致数据库不一致的严重问题 -->
 
 
 <!-- dataHost配置的是实际的后端数据库集群(当然,也可以是非集群) -->
      <!-- 注意:schema中的每一个dataHost中的host属性值必须唯一,否则会出现主从在所有dataHost中全部切换的现象 -->
      
      <!-- 定义数据主机dt150master-->
      <dataHost name="dt150master" maxCon="500" minCon="20" balance="1"
           writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
           <heartbeat>select user()</heartbeat>
           <writeHost host="hostM1" url="192.168.1.150:3306" user="root" password="ruanjie@0511" />
      </dataHost>
      
      <dataHost name="dt151master" maxCon="500" minCon="20" balance="1"
           writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
           <heartbeat>select user()</heartbeat>
           <writeHost host="hostM1" url="192.168.1.151:3306" user="root" password="ruanjie@0511" />
      </dataHost>
</mycat:schema>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

畅游未来

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

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

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

打赏作者

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

抵扣说明:

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

余额充值