IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> Mycat双主双从读写分离配置 -> 正文阅读

[大数据]Mycat双主双从读写分离配置

Mycat双主双从读写分离配置

1.修改mycat的schema.xml文件

vim /usr/mycat/conf/schema.xml 

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 主从同步的状态决定是否切换。

switchType 属性
-1 表示不自动切换
1 默认值,自动切换
2 基于 MySQL 主从同步的状态决定是否切换
心跳语句为 show slave status
3 基于 MySQL galary cluster 的切换机制(适合集群)(1.4.1)
心跳语句为 show status like ‘wsrep%’

  • 修改dataHost的 balance=“1”
<?xtiveml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">

        <schema name="TESTDB" checkSQLschema="true" sqlMaxLimit="100" dataNode="dn1">
        </schema>
        <dataNode name="dn1" dataHost="host1" database="centos7" />
        <dataHost name="host1" maxCon="1000" minCon="10" balance="1"
                          writeType="0" dbType="mysql" dbDriver="native" switchType="3"  slaveThreshold="100">
                <heartbeat>select user()</heartbeat>
                <!-- can have multi write hosts -->
                <writeHost host="hostM1" url="192.168.148.134:3306" user="root"
                                   password="password">
                          <readHost host="hostS1" url="192.168.148.133:3306"  user="root" password="password"/>
                </writeHost>
                 <writeHost host="hostM2" url="192.168.148.136:3306" user="root"
                                   password="password">
                          <readHost host="hostS2" url="192.168.148.137:3306"  user="root" password="password"/>
                </writeHost>
        </dataHost>
</mycat:schema>

2.启动mycat

[root@mycat bin]# /usr/mycat/bin/mycat console
Running Mycat-server...
Removed stale pid file: /usr/mycat/logs/mycat.pid
wrapper  | --> Wrapper Started as Console
wrapper  | Launching a JVM...
jvm 1    | Wrapper (Version 3.2.3) http://wrapper.tanukisoftware.org
jvm 1    |   Copyright 1999-2006 Tanuki Software, Inc.  All Rights Reserved.
jvm 1    | 
jvm 1    | MyCAT Server startup successfully. see logs in logs/mycat.log

3.登录mycat

mysql -umycat -p -P8066 -h127.0.0.1 --default_auth=mysql_native_password

4.验证数据

//查看数据库
mysql>  show databases;
+----------+
| DATABASE |
+----------+
| TESTDB   |
+----------+
1 row in set (0.00 sec)
//使用数据库
mysql> use TESTDB
//查看已有表格
show tables;
+-------------------+
| Tables_in_centos7 |
+-------------------+
| location          |
+-------------------+
//插入数据
insert into location values(@@hostname);

  • 每台实体机上分别查看数据
//master1
mysql> select * from location;
+----------+
| location |
+----------+
| master1  |
+----------+
1 row in set (0.00 sec)
//master2
mysql> select * from location;
+----------+
| location |
+----------+
| master2  |
+----------+
1 row in set (0.00 sec)
//slave1
mysql> select * from location;
+----------+
| location |
+----------+
| slave1   |
+----------+
1 row in set (0.00 sec)
//slave2
mysql> select * from location;
+----------+
| location |
+----------+
| slave2  |
+----------+
1 row in set (0.00 sec)

  • mycat上查看数据
mysql> select * from location;
+----------+
| location |
+----------+
| master2  |
+----------+
1 row in set (0.01 sec)

mysql> select * from location;
+----------+
| location |
+----------+
| slave2   |
+----------+
1 row in set (0.00 sec)

mysql> select * from location;
+----------+
| location |
+----------+
| slave2   |
+----------+
1 row in set (0.00 sec)

mysql> select * from location;
+----------+
| location |
+----------+
| slave1   |
+----------+
1 row in set (0.01 sec)

mysql> select * from location;
+----------+
| location |
+----------+
| master2  |
+----------+
1 row in set (0.01 sec)

  • 可以看到,master2,slave1,slave2都有作为读主机出现
  • 此时master1为写主机

5.测试双主切换

  • master1上
[root@master1 ~]# systemctl stop mysqld.service 
[root@master1 ~]# systemctl status mysqld.service 
● mysqld.service - MySQL Server
   Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
   Active: inactive (dead) since 三 2022-04-13 00:33:05 CST; 20s ago
     Docs: man:mysqld(8)
           http://dev.mysql.com/doc/refman/en/using-systemd.html
  Process: 1521 ExecStart=/usr/sbin/mysqld $MYSQLD_OPTS (code=exited, status=0/SUCCESS)
  Process: 1030 ExecStartPre=/usr/bin/mysqld_pre_systemd (code=exited, status=0/SUCCESS)
 Main PID: 1521 (code=exited, status=0/SUCCESS)
   Status: "Server shutdown complete"

413 00:33:03 master1 mysqld[1521]: 2022-04-12T16:33:03.976262Z 0 [Warning] [MY-010909] [Server] /usr/sbin/mysqld: Forcing close of thread 43  user: 'root'.
413 00:33:03 master1 mysqld[1521]: 2022-04-12T16:33:03.986751Z 0 [Warning] [MY-010909] [Server] /usr/sbin/mysqld: Forcing close of thread 44  user: 'root'.
413 00:33:04 master1 mysqld[1521]: 2022-04-12T16:33:03.997422Z 0 [Warning] [MY-010909] [Server] /usr/sbin/mysqld: Forcing close of thread 37  user: 'root'.
413 00:33:04 master1 mysqld[1521]: 2022-04-12T16:33:04.008225Z 0 [Warning] [MY-010909] [Server] /usr/sbin/mysqld: Forcing close of thread 45  user: 'root'.
413 00:33:04 master1 mysqld[1521]: 2022-04-12T16:33:04.019027Z 0 [Warning] [MY-010909] [Server] /usr/sbin/mysqld: Forcing close of thread 46  user: 'root'.
413 00:33:04 master1 mysqld[1521]: 2022-04-12T16:33:04.023009Z 0 [Warning] [MY-010909] [Server] /usr/sbin/mysqld: Forcing close of thread 38  user: 'root'.
413 00:33:04 master1 mysqld[1521]: 2022-04-12T16:33:04.029128Z 0 [Warning] [MY-010909] [Server] /usr/sbin/mysqld: Forcing close of thread 39  user: 'root'.
413 00:33:04 master1 mysqld[1521]: 2022-04-12T16:33:04.040287Z 0 [Warning] [MY-010909] [Server] /usr/sbin/mysqld: Forcing close of thread 47  user: 'root'.
413 00:33:05 master1 mysqld[1521]: 2022-04-12T16:33:05.587799Z 0 [System] [MY-010910] [Server] /usr/sbin/mysqld: Shutdown complete (mysqld 8.0.28)  MySQL Community Server - GPL.
413 00:33:05 master1 systemd[1]: Stopped MySQL Server.

  • mycat上插入数据测试
mysql> insert into location values(@@hostname);
Query OK, 1 row affected, 1 warning (0.00 sec)
  • 可以成功插入

  • 测试读主机
mysql> select * from location;
+----------+
| location |
+----------+
| slave2   |
| slave2   |
+----------+
2 rows in set (0.00 sec)

mysql> select * from location;
+----------+
| location |
+----------+
| slave2   |
| slave2   |
+----------+
2 rows in set (0.00 sec)

mysql> select * from location;
+----------+
| location |
+----------+
| slave2   |
| slave2   |
+----------+
2 rows in set (0.00 sec)

  • slave1仅作为master1的备份,未关联master2的操作,此时读主机均为slave2

6.重启master1的mysql服务进行测试

  • master1上
[root@master1 ~]# systemctl start mysqld.service 

  • mycat上
mysql> insert into location values(@@hostname);
Query OK, 1 row affected, 1 warning (0.00 sec)

mysql> select * from location;
+----------+
| location |
+----------+
| master1  |
| master1  |
| master1  |
+----------+
3 rows in set (0.01 sec)

mysql> select * from location;
+----------+
| location |
+----------+
| slave1   |
| slave1   |
| slave1   |
+----------+
3 rows in set (0.00 sec)

mysql> select * from location;
+----------+
| location |
+----------+
| slave1   |
| slave1   |
| slave1   |
+----------+
3 rows in set (0.00 sec)

mysql> select * from location;
+----------+
| location |
+----------+
| slave2   |
| slave2   |
| slave2   |
+----------+
3 rows in set (0.01 sec)

  • 成功插入数据,并且master1,slave1,slave2都有作为读主机出现
  • 此时master2为写主机
  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-04-15 00:05:37  更:2022-04-15 00:12:15 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 3:15:04-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码