【Mysql之中间件Mycat实现读写分离】

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录
  • 一、Mycat应用场景
  • 二、Mycat 可以简单概括为
  • 三、Mycat实现mysql读写分离
    • 1.环境准备
    • 2. 初始化环境
    • 3.主从配置
    • 3.1主mysql服务器配置(192.168.59.113)
    • 3.2从mysql服务器配置(192.168.59.112)
    • 4.安装mycat(192.168.59.114)
    • 5.第一次在客户机上测试(192.168.59.118)
    • 6.修改 mycat 配置文件
    • 6.1修改 /apps/mycat/conf/server.xml
    • 6.2主服务器上建立一个用户
    • 6.3修改 /apps/mycat/conf/schema.xml
    • 7.客户端测试
    • 7.1查看读来自哪台服务器
    • 7.2测试读写分离

一、Mycat应用场景 Mycat适用的场景很丰富,以下是几个典型的应用场景
单纯的读写分离,此时配置最为简单,支持读写分离,主从切换
分表分库,对于超过1000万的表进行分片,最大支持1000亿的单表分片
多租户应用,每个应用一个库,但应用程序只连接Mycat,从而不改造程序本身,实现多租户化报表系统,借助于Mycat的分表能力,处理大规模报表的统计
替代Hbase,分析大数据,作为海量数据实时查询的一种简单有效方案,比如100亿条频繁查询的记录需要在3秒内查询出来结果,除了基于主键的查询,还可能存在范围查询或其他属性查询,此时Mycat可能是最简单有效的选择
Mycat长期路线图
强化分布式数据库中间件的方面的功能,使之具备丰富的插件、强大的数据库智能优化功能、全面的系统监控能力、以及方便的数据运维工具,实现在线数据扩容、迁移等高级功能进一步挺进大数据计算领域,深度结合Spark Stream和Storm等分布式实时流引擎,能够完成快速的巨表关联、排序、分组聚合等 OLAP方向的能力,并集成一些热门常用的实时分析算法,让工程师以及DBA们更容易用Mycat实现一些高级数据分析处理功能不断强化Mycat开源社区的技术水平,吸引更多的IT技术专家,使得Mycat社区成为中国的Apache,并将Mycat推到Apache基金会,成为国内顶尖开源项目,最终能够让一部分志愿者成为专职的Mycat开发者,荣耀跟实力一起提升
二、Mycat 可以简单概括为 一个彻底开源的,面向企业应用开发的大数据库集群
支持事务、ACID、可以替代MySQL的加强版数据库
一个可以视为MySQL集群的企业级数据库,用来替代昂贵的Oracle集群
一个融合内存缓存技术、NoSQL技术、HDFS大数据的新型SQL Server
结合传统数据库和新型分布式数据仓库的新一代企业级数据库产品
一个新颖的数据库中间件产品
三、Mycat实现mysql读写分离 1.环境准备 【【Mysql之中间件Mycat实现读写分离】】【Mysql之中间件Mycat实现读写分离】
文章图片

2. 初始化环境
#每台服务器上都初始化,关闭防火墙 systemctl stop firewalld systemctl disable firewalld setenforce 0

3.主从配置 3.1主mysql服务器配置(192.168.59.113)
(1)#修改配置文件 vim /etc/my.cnf server-id = 1 log-bin=master-bin binlog_format=MIXED log-slave-updates=true (2)#重启服务 systemctl restart mysqld (3)#进入数据库授权,查看二进制文件及节点号 mysql -uroot -p123123 grant replication slave on *.* to 'myslave'@'192.168.59.%' identified by '123456'; flush privileges; show master status; (4)#在数据库中传入一个数据库文件hellodb source /bak/test.sql

3.2从mysql服务器配置(192.168.59.112)
(1)#修改配置文件 vim /etc/my.cnf server-id = 2 relay-log=relay-log-bin relay-log-index=slave-relay-bin.index (2)#重启服务 systemctl restart mysqld (3)#进入数据库授权,查看二进制文件及节点号 mysql -uroot -p123123 change master to master_host='192.168.59.113',master_user='myslave',master_password='123456',master_log_file='master-bin.000001',master_log_pos=603; start slave; show slave status\G; ##一定要出现 #Slave_IO_Running: Yes #Slave_SQL_Running: Yes

4.安装mycat(192.168.59.114)
(1)#主机上安装java yum install java -y (2)#创建/apps文件夹 mkdir /apps (3)#网络下载mycat包并解压至/apps下 wget http://dl.mycat.org.cn/1.6.7.6/20210303094759/Mycat-server-1.6.7.6-release-20210303094759-linux.tar.gz tar zxvf Mycat-server-1.6.7.6-release-20210303094759-linux.tar.gz -C /apps/ (4)#设置变量环境 echo 'PATH=/apps/mycat/bin:$PATH' > /etc/profile.d/mycat.sh source /etc/profile.d/mycat.sh (5)#启动mycat mycat start (6)#查看日志文件,最后可以看到启动成功 tail -f /apps/mycat/logs/wrapper.log

5.第一次在客户机上测试(192.168.59.118)
#这里密码初始为123456需要加端口 mysql -uroot -p123456 -h 192.168.59.114 -P8066

6.修改 mycat 配置文件 6.1修改 /apps/mycat/conf/server.xml
vim /apps/mycat/conf/server.xml #去掉44行注释,50行末注释,51行末注释 #第45行,修改端口号 3306 #密码用户 在110 和111 可以修改这边不修改了

6.2主服务器上建立一个用户
mysql -uroot -p123123 GRANT ALL ON *.* TO 'root'@'192.168.59.%' IDENTIFIED BY '123456'; #查看创建成功 use mysql; select user,host from user;

6.3修改 /apps/mycat/conf/schema.xml
(1)#删除所有内容,重新写入以下 vim/apps/mycat/conf/schema.xml ="TESTDB" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1"> select user() (2)#如果本地mycat服务器上安装了mysql需要关掉,否则端口会冲突 systemctl stop mysqld.service (3)#重启mycat,并查看3306端口 mycat restart ss -antp|grep 3306

7.客户端测试 7.1查看读来自哪台服务器
#这时可以不加端口直接进入数据库了 mysql -uroot -p123456 -h 192.168.59.114 #看是否能查到表 mysql -uroot -p123456 -h 192.168.59.114 show databases; use TESTDB; show tables; #查看当前的查询来自哪台服务器 select @@server_id;

7.2测试读写分离
#在主、从服务器打开日志 set global general_log=1; #在客户机查看是否开启成功 show variables like 'general%'; #在主从服务器实时查看日志 tail -f /usr/local/mysql/data/localhost.log #在客户机上汪表里插入数据,并查看主从服务器实时日志 insert into teachers values(5,'Xiao Ming',46,'F'); #在客户机查看表信息,并查看主从服务器实时日志 select * from teachers;

    推荐阅读