数据库:mycat实现读写分离

这篇具有很好参考价值的文章主要介绍了数据库:mycat实现读写分离。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一、mycat

1、mycat实现读写分离原理

2、mycat应用场景

3、mycat作用

4、mycat实现读写分离实战


一、mycat

1、mycat实现读写分离原理

mycat读写分离,数据库,hbase,大数据

①用户进行读操作则由mycat转给配置的从数据库。

②用户进行写操作则由mycat转给配置的主数据库。

③转发规则由mycat配置文件中定义,那台是读那台是写。

2、mycat应用场景

Mycat适用的场景很丰富,以下是几个典型的应用场景

单纯的读写分离,此时配置最为简单,支持读写分离,主从切换

分表分库,对于超过1000万的表进行分片,最大支持1000亿的单表分片

多租户应用,每个应用一个库,但应用程序只连接Mycat,从而不改造程序本身,实现多租户化报表系统,借助于Mycat的分表能力,处理大规模报表的统计

替代Hbase,分析大数据,作为海量数据实时查询的一种简单有效方案,比如100亿条频繁查询的记录需要在3秒内查询出来结果,除了基于主键的查询,还可能存在范围查询或其他属性查询,此时Mycat可能是最简单有效的选择

3、mycat作用

一个彻底开源的,面向企业应用开发的大数据库集群

支持事务、ACID、可以替代MySQL的加强版数据库

一个可以视为MySQL集群的企业级数据库,用来替代昂贵的Oracle集群

一个融合内存缓存技术、NoSQL技术、HDFS大数据的新型SQL Server

结合传统数据库和新型分布式数据仓库的新一代企业级数据库产品

一个新颖的数据库中间件产品

4、mycat实现读写分离实战

①环境准备:

2台安装了相同版本mysql数据库的服务器

主服务器(pc1):192.168.30.11

从服务器(pc2):192.168.30.12

1台服务器备用安装mycat

mycat服务器(pc3):192.168.30.13

1台客户机用于测试读写分离

测试服务器(pc4):192.168.30.14

②首先关闭4台服务器的firewalld以及selinux,重置主从服务器的mysql密码为Admin@123

pc1、pc2执行:
systemctl  stop  firewalld.service 
setenforce 0
systemctl start mysqld
#开启数据库
grep password /var/log/mysqld.log
#在错误日志中找到mysql初始密码,如下图
mysql -uroot  -p'初始密码' 
#登录数据库
alter user root@'localhost'  identified by 'Admin@123';
quit;
#修改root默认密码并退出

③主节点: 

vim  /etc/my.cnf
[mysqld]下一行添加内容:
server_id=11
#serverid建议配置为ip地址最后8位
log-bin=mysql-bin
#开启二进制日志
binlog_format=MIXED
#二进制日志格式
log-slave-updates=true
#开启从服务器同步
systemctl restart mysqld
#重启数据库
mysql -uroot -p'Admin@123'
#登录数据库
show  master status;
#查看主从复制从那个二进制日志的那个初始节点开始,从服务器配置需要依赖此条查看结果
grant replication slave on *.* to 'myslave'@'192.168.30.%' identified by 'Admin@123';
#建立一个myslave用户,并且允许192.168.30.%这个网段的地址来登录(环境不同注意改为自己的网段),密码是Admin@123,一会儿要在slave上使用这个账号
flush privileges;
#刷新一下;
create  database  test;
use test;
create table  lhj(id int,name char(11));
insert  lhj()  values(1,'abc'),(2,'xyz');
quit
#创建test库进入test库创建lhj表并写入2条数据到lhj表中,退出数据库。

④从节点: 

vim /etc/my.cnf
[mysqld]下一行添加内容:
server_id=12
relay-log=relay-log-bin
#添加,开启中继日志,从主服务器上同步日志文件记录到本地
relay-log-index=slave-relay-bin.index
#添加,定义中继日志文件的位置和名称,一般和relay-log在同一目录
systemctl restart mysqld
#重启服务
mysql -uroot -p'Admin@123'
#登录数据库
change master to
master_host='192.168.30.11',
master_user='myslave',
master_password='Admin@123',
master_log_file='master-bin.000001',
master_log_pos=154;
#配置主服务器相关信息包括主机,远程辅助用户和密码以及开始日志及节点,可以使用help change master to 查看模板
start slave;
#开启slave
show slave status \G;
#查看从服务器状态信息
select * from test.lhj
#查看是否将test库中的lhj表内容同步过来

⑤mycat节点:

yum install java -y
#mycat基于java所以要安装java环境
java -version
#查看java版本,确认安装成功
cd /opt
wget http://dl.mycat.org.cn/1.6.7.6/20210303094759/Mycat-server-1.6.7.6-release-20210303094759-linux.tar.gz
#进入/opt目录从官网下载mycat包
mkdir /apps
tar zxvf Mycat-server-1.6.7.6-release-20210303094759-linux.tar.gz -C /apps/
#创建/apps目录并将mycat包解压到/apps中
echo 'PATH=/apps/mycat/bin:$PATH' > /etc/profile.d/mycat.sh
source /etc/profile.d/mycat.sh
#设置并刷新环境变量使得mycat可以补全
mycat start
#启动mycat,注意若服务器内存小于等于2Gmycat服务起不来
tail -f /apps/mycat/logs/wrapper.log
#启动成功日志末尾会出现successfully,mycat只能通过查看日志的方式判断是否启动成功
#修改 mycat 配置文件*/apps/mycat/conf/schema.xml*此文件关联mysql读写分离策略,读写分离、分库分表策略、分片节点都是在此文件中配置的
vim  /apps/mycat/conf/schema.xml
#进入文件将内容全部删除然后复制添加以下文件修改
<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
        <schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1"></schema>
        <dataNode name="dn1" dataHost="localhost1" database="test" />
#定义数据节点名为dn1,物理数据库名为localhost1,物理数据库中数据库名为test,此库主服务器中必须存在
        <dataHost name="localhost1" maxCon="1000" minCon="10" balance="1"
                  writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">
                <heartbeat>select user()</heartbeat>
                <writeHost host="host1" url="192.168.30.11:3306" user="root" password="Admin@123">
#配置写主机名为host1,主机地址为192.168.30.11:3306,登录用户为root,密码为Admin@123
                 <readHost host="host2" url="192.168.30.12:3306" user="root" password="Admin@123"/>
#配置写主机名为host2,主机地址为192.168.30.12:3306,登录用户为root,密码为Admin@123
                </writeHost>
        </dataHost>
</mycat:schema>

⑤主节点授权mycat登录:

mysql -uroot -p'Admin@123'
#登录数据库
GRANT ALL ON *.* TO 'root'@'192.168.30.%' IDENTIFIED BY 'Admin@123';
#创建授权一个root远程登录用户网段为192.168.30段,密码为Admin@123
use mysql;
select user,host from user;
#查看是否创建成功

⑥mycat节点授权完成后重启mycat服务:

mycat restart 
tail -f /apps/mycat/logs/wrapper.log
#重启mycat服务并通过日志查看是否重启成功
netstat -antp |grep 3306
#mycat重启成功后可以通过过滤监听3306端口看到mycat有在监听主从俩个服务器的3306端口

⑦测试服务器测试读操作:

mysql -uroot -p123456 -h 192.168.30.13  -P8806
#客户机远程登录mycat,-h指定远程登录地址,-P指定登录端口,mycat默认有个root用户密码为123456
show  databases;
#可以看到有个TESTDB库访问此库即访问主服务器的test库
use TESTDB;
select * from lhj;
#可以看到和主库中lhj表一样的数据
select @@server_id;
#使用select查询语句看提供服务的id即可看到是12提供的服务即从服务器提供的读服务

⑧主从服务器开启通用日志并实时查看,在客户端的表中新增内容可以看到只有主有日志变化显示

主从都执行:
mysql -uroot -pAdin@123
#登录数据库
set global general_log=1;
#打开通用日志,通用日志若为yum安装则会在/var/lib/mysql/本机主机名.log文件
quit;
#退出数据库
主服务即主机名为pc1:
tail -f/var/lib/mysql/pc1.log
#实时查看通用日志
从服务即主机名为pc2:
tail -f/var/lib/mysql/pc2.log
#实时查看通用日志
客户端测试:
mysql -uroot -p123456 -h192.168.30.13 -P8066
#登录mycat
use  TESTDB;
insert lhj() values('3','test');
#进入TESTDB库并在lhj表中加入数据查看主从实时日志只有主日志显示变化则读写分离实现,日志截图如下

mycat读写分离,数据库,hbase,大数据

 文章来源地址https://www.toymoban.com/news/detail-722477.html

到了这里,关于数据库:mycat实现读写分离的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • MySQL-数据库读写分离(上)

    ♥️ 作者:小刘在C站 ♥️ 个人主页:  小刘主页  ♥️ 努力不一定有回报,但一定会有收获加油!一起努力,共赴美好人生! ♥️ 学习两年总结出的运维经验,以及思科模拟器全套网络实验教程。专栏: 云计算技术 ♥️小刘私信可以随便问,只要会绝不吝啬,感谢CSD

    2024年02月16日
    浏览(53)
  • MySQL-数据库读写分离(中)

    ♥️ 作者:小刘在C站 ♥️ 个人主页:  小刘主页  ♥️ 努力不一定有回报,但一定会有收获加油!一起努力,共赴美好人生! ♥️ 学习两年总结出的运维经验,以及思科模拟器全套网络实验教程。专栏: 云计算技术 ♥️小刘私信可以随便问,只要会绝不吝啬,感谢CSD

    2024年02月16日
    浏览(53)
  • 客户端读写HBase数据库的运行原理

    1.HBase的特点 HBase是一个数据库,与RDMS相比,有以下特点: ① 它不支持SQL ② 不支持事务 ③ 没有表关系,不支持JOIN ④ 有列族,列族下可以有上百个列 ⑤ 单元格,即列值,可以存储多个版本的值,每个版本都有对应时间戳 ⑥ 行键按照字典序升序排列 ⑦ 元数据 和 数据 分

    2024年02月10日
    浏览(57)
  • 如何正确使用数据库的读写分离

    在应用系统发展的初期,我们并不知道以后会发展成什么样的规模,所以一开始不会考虑复杂的系统架构,复杂的系统架构费时费力,开发周期长,与系统发展初期这样的一个定位是不吻合的。所以,我们都会采用简单的架构,随着业务不断的发展,访问量不断升高,我们再

    2024年02月02日
    浏览(61)
  • 【MySQL数据库】主从复制与读写分离

    读写分离,基本的原理是让主数据库处理事务性增、改、删操作(INSERT、UPDATE、DELETE),而从数据库处理SELECT查询操作。数据库复制被用来把事务性操作导致的变更同步到集群中的从数据库。 因为数据库的“写”(写10000条数据可能要3分钟)操作是比较耗时的。 但是数据库

    2024年02月11日
    浏览(59)
  • 【数据库】mysql主从复制与读写分离

      读写分离,基本的原理是让主数据库处理事务性增、改、删操作(INSERT、UPDATE、DELETE ),而从数据库处理SELECT查询操作。数据库复制被用来把事务性操作导致的变更同步到集群中的从数据库。   因为数据库的\\\"写”(写10000条数据可能要3分钟)操作是比较耗时的。   

    2024年02月11日
    浏览(72)
  • 项目练习:构建读写分离的数据库集群

    目录 一、目标实现 二、项目准备 三、项目实施 1.配置基础环境 1.1修改主机名 1.2配置3台群集虚拟机的/etc/hosts文件 1.3.配置网卡 1.4.配置本地yum源 2.部署Mycat中间件服务 2.1安装KDJ环境 3.部署MariaDB主从数据库集群服务 3.1安装MariaDB服务 3.2初始化MariaDB数据库 3.3配置数据库集群主

    2024年02月02日
    浏览(54)
  • MySQL数据库 主从复制与读写分离

    读写分离,基本的原理是让主数据库处理事务性增、改、删操作(INSERT、UPDATE、DELETE),而从数据库处理SELECT查询操作。数据库复制被用来把事务性操作导致的变更同步到集群中的从数据库。 因为数据库的“写”(写10000条数据可能要3分钟)操作是比较耗时的。 但是数据库

    2024年02月10日
    浏览(48)
  • 【数据库七】MySQL主从复制与读写分离

    读写分离,基本的原理是让主数据库处理事务性增、改、删操作 (insert、update、delete),而 从数据库处理select查询操作 。 数据库复制被用来把事务性操作导致的变更同步到集群中的从数据库 。 因为数据库的“写”(写10000条数据可能要3分钟)操作是比较耗时的。 但是数据

    2024年02月11日
    浏览(59)
  • java项目实现读写分离,项目连接Linux部署的数据库异常javax.net.ssl.SSLHandshakeException: No appropriate protocol

    1、对项目进行优化实现读写分离,项目启动时报错如下: Caused by: javax.net.ssl.SSLHandshakeException: No appropriate protocol (protocol is disabled or cipher suites are inappropriate) 原因:javax.net.ssl.SSLHandshakeException:没有适当的协议(协议被禁用或密码套件不合适) 2、bug解决:     注意: useSSL=f

    2024年02月04日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包