mysql双机热备和负载均衡_数据库 读写分离

mysql双机热备和负载均衡_数据库 读写分离全部的readHost与stand by writeHost参与select语句的负载均衡,简单的说,当双主双从模式(M1->S1,M2->S2,并且M1与 M2互为主备),正常情况下,M2,S1,…

	MySQL-mycat读写分离[数据库教程]

Mycat 需要安装JDK 1.7 或者以上版本

第一步:下载jdk-8u131-linux-x64.tar.gz文件 http://haixi.sfkcn.com:8080/201704/tools/jdk-linux-x64.tar.gz

第二步:新建/usr/java文件夹,将jdk-8u131-linux-x64.tar.gz放到该文件夹中,并解压到当前目录下

第三步:配置环境变量 在/etc/profile底部加入如下内容:

JAVA_HOME=/usr/java/jdk1.8.0_131 PATH=$JAVA_HOME/bin:$PATH CLASSPATH=$JAVA_HOME/jre/lib/ext:$JAVA_HOME/lib/tools.jar export PATH JAVA_HOME CLASSPATH[[email protected] java]# source /etc/profile #使环境变量生效

查看java –version

服务启动与启动设置
MyCAT在Linux中部署启动时,首先需要在Linux系统的环境变量中配置MYCAT_HOME,操作方式如下:
1)vi /etc/profile,在系统环境变量文件中增加
MYCAT_HOME=/usr/local/mycat PATH=$MYCAT_HOME/bin:$PATH
2) 执行 source /etc/profile 命令,使环境变量生效。
如果是在多台Linux系统中组建的MyCAT集群,那需要在MyCAT Server所在的服务器上配置对其他ip和主机名的映射,配置方式如下:
vi /etc/hosts
例如:我有3台机器,配置如下:
IP 主机名:
192.168.12.110 Master.cn
192.168.12.111 Slave.cn
192.168.12.112 Slave-2.cn
编辑完后,保存文件。
(mycat的用户账号和授权信息是在conf/server.xml文件中配置
Vim /usr/local/mycat/conf/server.xml
<?xml version=”1.0″ encoding=”UTF-8″?>
<!DOCTYPE mycat:server SYSTEM “server.dtd”>
<mycat:server xmlns:mycat=”http://org.opencloudb/”>
<system>
<property name=”defaultSqlParser”>druidparser</property>
</system>
<user name=”root”>
<property name=”password”>123456</property>
<property name=”schemas”>ha</property>
</user>
<user name=”user”>
<property name=”password”>user</property>
<property name=”schemas”>ha</property>
<property name=”readOnly”>true</property>
</user>
</mycat:server>
编辑MyCAT的配置文件schema.xml,关于dataHost的配置信息如下:
Vim /usr/local/mycat/conf/schema.xml
<?xml version=”1.0″?>
<!DOCTYPE mycat:schema SYSTEM “schema.dtd”>
<mycat:schema xmlns:mycat=”http://org.opencloudb/”>
<schema name=”ha” checkSQLschema=”false” sqlMaxLimit=”100″ dataNode=‘dn1‘>
</schema>
<dataNode name=”dn1″ dataHost=”dthost” database=”ha”/>
<dataHost name=”dthost” maxCon=”500″ minCon=”10″ balance=”1″ writeType=”0″ dbType=”mysql” dbDriver=”native” switchType=”-1″ slaveThreshold=”100″>
<heartbeat>select user()</heartbeat>
<writeHost host=”Slave.cn” url=”localhost:3306″ user=”root” password=”123456″>
</writeHost>
<writeHost host=”Slave.cn” url=”192.168.12.111:3306″ user=”root” password=”123456″ />
</dataHost>
</mycat:schema>
有两个参数需要注意,balance和 switchType。
其中,balance指的负载均衡类型,目前的取值有4种:

  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不负担读压力
    switchType指的是切换的模式,目前的取值也有4种:
  5. switchType=‘-1‘ 表示不自动切换
  6. switchType=‘1‘ 默认值,表示自动切换
  7. switchType=‘2‘ 基于MySQL主从同步的状态决定是否切换,心跳语句为 show slave status
  8. switchType=‘3‘基于MySQL galary cluster的切换机制(适合集群)(1.4.1),心跳语句为 show status like ‘wsrep%‘。
    经过以上两个步骤的配置,就可以到/usr/local/mycat/bin 目录下执行:
    ./mycat start
    即可启动mycat服务!
    MySQL-mycat读写分离

配置MYSQL主从
SLAVE上创建数据库和表,用于实现写操作:
[[email protected] ~]# mysql -uroot -p123456
mysql> create database ha;
mysql> use ha;
mysql> create table test(id int,name varchar(20));
mysql> insert into test values(1,’man’);
授权给mycat登陆数据库使用的帐号
mysql> GRANT ALL PRIVILEGES ON . TO ‘mycat‘@”%” IDENTIFIED BY “123456”;
mysql> grant replication slave on . to [email protected]”10.10.10.%” identified by “123456”;
mysql>flush privileges;
mysqldump –uroot –p123456 -B ha>ha.sql #导出给从库
关闭密码强度审计,在my.cnf添加validate-password=off
SLAVE-2上导入数据库和表,用于实现读操作:
[[email protected] ~]# mysql -uroot -p123456<ha.sql
授权给mycat登陆数据库使用的帐号
mysql> grant all on db. to [email protected]‘%‘ identified by ‘123456‘;
mysql>flush privileges;
mysql>stop slave; #停止slave
mysql> change master to master_host=‘192.168.12.111‘,master_user=‘slave‘,master_password=‘123456‘;
mysql> start slave; #启动slave
mysql> show slave statusG 查看状态 ,有两个yes主从同步成功!
启动服务MYCAT服务
[[email protected] ~]# /usr/local/mycat/bin/mycat start
测试读写分离
当我们SLAVE挂掉后咋样呢
模拟故障:从服务器挂掉了
[[email protected] ~]# systemctl stop mysqld
在客户端上测试读写
[[email protected] ~]# mysql -uroot -p123456 -h 192.168.12.110 -P8066
mysql> use ha;
mysql> select
from t1;
MySQL-mycat读写分离
MySQL-mycat读写分离

模拟故障:主服务器挂掉了
[[email protected] ~]# systemctl stop mysqld
在客户端上测试读写
[[email protected] ~]# mysql -uroot -p123456 -h 192.168.12.110 -P8066
mysql> create table t3(id int);
ERROR 1184 (HY000): 拒绝连接 #主数据库停止了,是无法写操作的,但不影响读.
mysql> use ha;
mysql> select * from t1;
MySQL-mycat读写分离
MySQL-mycat读写分离

MySQL-mycat读写分离

原文地址:https://blog.51cto.com/14483703/2511956

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/7227.html

(0)
上一篇 2023-03-24
下一篇 2023-03-24

相关推荐

  • 谈谈报表工具支持的数据源[通俗易懂]

    谈谈报表工具支持的数据源[通俗易懂]报表工具早期基本都是基于关系型数据库作为数据来源,但现在文件类、newsql、nosql,服务类来源应用越来越广泛。 报表工具也应与时俱进!目前都搞不搞的定?靠 Api 还是有更好的方式? 本篇将介…

    2023-01-25
    146
  • mysqldump使用rsync异地全量备份数据库

    mysqldump使用rsync异地全量备份数据库Mysql 做了本机,同机房全量备份后,想同时做一份异地备份,考虑异地机房的网络不稳定性,使用 rsync 来同步备份的文件; 同机房异机备份,内网速度快可以使用scp,或者mysqldump备份脚…

    2023-03-25
    156
  • 使用Flask中的url_for函数

    使用Flask中的url_for函数当我们在开发Web应用时,页面之间需要相互调用,这时候就需要用到URL路由。Flask是一款轻量级的Web应用框架,使用Python语言编写。在Flask中,像其他Web框架一样,我们可以使用URL路由来定位和处理用户的请求。而在Flask中,使用url_for函数来构建url路径更加方便,本文将介绍如何使用Flask中的url_for函数。

    2024-08-26
    36
  • oracle sqlldr_dba_jobs

    oracle sqlldr_dba_jobs看到题目,你可能会比较懵:TiDB SQL Infra 是什么?TiDB 不就是一个 Infrastructure Project 么?简单说来,TiDB SQL Infra Team 就是 TiD…

    2023-02-05
    151
  • 用Django开发一个简单网站的步骤

    用Django开发一个简单网站的步骤随着互联网和移动互联网的发展,Web开发变得越来越重要,开发者们也开始寻找一个快速、高效、可扩展的框架来简化Web开发。Django是一个MVC框架,为开发人员提供了一种快速开发可扩展、可维护Web应用程序的方式。

    2024-05-20
    66
  • Python中文词频统计

    Python中文词频统计在文本处理中,词频统计是一个重要而常见的任务,可以用于文本分类、数据挖掘等应用。而Python作为一门广泛应用于文本处理的语言,其丰富的开源库和工具使得中文文本处理变得更加简单而高效。

    2024-09-13
    27
  • Python 函数规则:有效的编写和组织函数

    Python 函数规则:有效的编写和组织函数Python 函数是被重复使用的代码块,可以简化编程流程并增强代码可读性。为了让你的代码更易懂、易维护,本文将提供一些Python函数的规则,以及如何使用这些规则来简化函数。

    2023-12-25
    112
  • redis查询速度慢_redis读取速度

    redis查询速度慢_redis读取速度当Redis客户端出现请求超时的时候,需要检查该时间点是否有慢查询,从而分析出由于慢查询导致的命令级联阻塞。

    2023-02-19
    157

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注