mycat

学会数据库读写分离、分表分库——用Mycat,这一篇就够了!

≡放荡痞女 提交于 2020-03-15 22:47:37
系统开发中,数据库是非常重要的一个点。除了程序的本身的优化,如:SQL语句优化、代码优化,数据库的处理本身优化也是非常重要的。主从、热备、分表分库等都是系统发展迟早会遇到的技术问题问题。Mycat是一个广受好评的数据库中间件,已经在很多产品上进行使用了。希望通过这篇文章的介绍,能学会Mycat的使用。 安装 Mycat官网: http://www.mycat.io/ 可以了解下Mycat的背景和应用情况,这样使用起来比较有信心。 Mycat下载地址: http://dl.mycat.io/ 官网有个文档,属于详细的介绍,初次入门,看起来比较花时间。 下载: 建议大家选择 1.6-RELEASE 版本,毕竟是比较稳定的版本。 安装: 根据不同的系统选择不同的版本。包括linux、windows、mac,作者考虑还是非常周全的,当然,也有源码版的。(ps:源码版的下载后,只要配置正确,就可以正常运行调试,这个赞一下。) Mycat的安装其实只要解压下载的目录就可以了,非常简单。 安装完成后,目录如下: 目录 说明 bin mycat命令,启动、重启、停止等 catlet catlet为Mycat的一个扩展功能 conf Mycat 配置信息,重点关注 lib Mycat引用的jar包,Mycat是java开发的 logs 日志文件,包括Mycat启动的日志和运行的日志。 配置

Mycat 数据库分库分表中间件

心已入冬 提交于 2020-03-14 04:43:34
http://www.mycat.io/ Mycat 国内最活跃的、性能最好的开源数据库中间件! 我们致力于开发高性能的开源中间件而努力! 实体书 Mycat权威指南 » 开源投票支持Mycat 下载 » start » Mycat关键特性 关键特性 支持SQL92标准 支持MySQL、Oracle、DB2、SQL Server、PostgreSQL等DB的常见SQL语法 遵守Mysql原生协议,跨语言,跨平台,跨数据库的通用中间件代理。 基于心跳的自动故障切换,支持读写分离,支持MySQL主从,以及galera cluster集群。 支持Galera for MySQL集群,Percona Cluster或者MariaDB cluster 基于Nio实现,有效管理线程,解决高并发问题。 支持数据的多片自动路由与聚合,支持sum,count,max等常用的聚合函数,支持跨库分页。 支持单库内部任意join,支持跨库2表join,甚至基于caltlet的多表join。 支持通过全局表,ER关系的分片策略,实现了高效的多表join查询。 支持多租户方案。 支持分布式事务(弱xa)。 支持XA分布式事务(1.6.5)。 支持全局序列号,解决分布式下的主键生成问题。 分片规则丰富,插件化开发,易于扩展。 强大的web,命令行监控。 支持前端作为MySQL通用代理

数据库高可用方案

混江龙づ霸主 提交于 2020-03-13 02:43:54
低读低写并发、低数据量方案 方案一:双机高可用方案 1.数据库架构图 2.特点 一台机器A作为读写库,另一台B作为备份库;A库故障后B库作为读写库;A库恢复后A作为备库。 3.开发说明 此种情况下,数据源配置中的数据库IP地址,可采用虚拟的IP地址。虚拟IP地址由两台数据库机器上的keepalive配置,并互相检测心跳。当其中一台故障后,虚拟IP地址会自动漂移到另外一台正常的库上。 数据库的主备配置、故障排除和数据补全,需要DBA和运维人员来维护。而程序代码或配置并不需要修改。 具体配置可参考资料: http://lizhenliang.blog.51cto.com/7876557/1362313 http://database.51cto.com/art/201012/237204.htm http://gaoke.iteye.com/blog/2283890 4.适应场景 读和写都不高的场景(单表数据低于500万),双机高可用。 5.优缺点 优点是一个机器故障了可以自动切换;缺点是只有一个库在工作,读写并未分离,并发有限制。 方案二:主从结构方案 1.数据库架构图 2.特点 一台机器A作为写库,另一台B作为读库;A库故障后B库充当读写,A修复后,B库为写库,A库为读库。 3.开发说明 这种方案的实现,要借助数据库中间件Mycat来实现,Mycat的datahost配置如下

mycat1.6.6.1读写分离

落花浮王杯 提交于 2020-03-09 03:34:33
--mycat1.6.6.1读写分离 --主备库赋予权限 grant all privileges on *.* to root@'%' identified by 'oracle'; flush privileges; vi /etc/profile export JAVA_HOME=/usr/java/latest #export CLASSPATH=.:$JAVA_HOME/lib #export PATH=$JAVA_HOME/bin:$PATH export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$CLASSPATH export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH export MYCAT_HOME=/opt/mycat export PATH=$PATH:$MYCAT_HOME/bin --修改日志为debug: vim /usr/local/mycat/conf/log4j.xml <root> <level value="debug" /> <appender-ref ref="FILE" /> <!--<appender-ref ref="FILE" />--> </root> --我们可以使用mysql客户端连接或者navicat来连接mycat -

使用mycat做Mysql读写分离

人盡茶涼 提交于 2020-03-06 11:42:07
本文转载自: https://www.93bok.com 实验环境: Centos6.5 minimal 64位系统 服务器IP:192.168.10.22(mycat) 192.168.10.27(master) 192.168.10.29(slave) 192.168.10.21(测试客户端) 说明: 1. 安装包已经提前下载好,此文档中不再演示下载步骤 2. 根据笔者习惯,所有的源码包都在/a01/apps/apps_src/ 3. 所有的服务安装路径都在/a01/apps/xxxxxxx 4. 服务器只安装了MySQL,如果不会安装,请参考之前文章 包版本: MySQL: mysql-5.7.19.tar.gz或者mysql-boost-5.7.19.tar.gz Mycat: Mycat-server-1.6.5-release-20171117203123-linux.tar JDK: jdk-8u151-linux-x64.tar.gz JDK去oracle官网下载: http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html Mycat官网下载: http://www.mycat.io/ MySQL读写分离的概述 Mysql作为目前世界上使用最广泛的免费数据库

构建读写分离的数据库集群

夙愿已清 提交于 2020-03-04 19:44:35
4.1实战案例——构建读写分离的数据库集群 使用 Mycat作为数据库中间件服务构建读写分离的数据库集群 使用一台虚拟机部署 Mycat数据库中间件服务,将用户提交的读写操作识别分发给相应的数据库 节点。这样将用户的访问操作、数据库的读与写操作分给 3台主机,只有数据库集群的主节点接 收增、删、改 SQL语句,从节点接收查询语句,分担了主节点的查询压力 基础准备 使用 CentOS 7.2系统, 创建 3台虚拟机进行实验。 其中 2台虚拟机 db1和 db2部署 MariaDB数据库服务,搭建主从数据库集群;一台作为主节点,负 责写入数据库信息;另一台作为从节点,负责读取数据库信息。 基础环境配置 修改主机名 # hostnamectl set-h ostname mycat # hostnamectl set-h ostname db1 # hostnamectl set-h ostname db2 修改完之后使命令生效 # bash 编辑hosts文件(mycat,db1,db2) # vi /etc/hosts 安装JDK环境(mycat) 安装java环境 # yum install -y java-1.8.0-openjdk java-1.8.0-openjdk-devel 查看java版本 # java -version 部署MariaDB主从数据库集群服务

MyCat数据库的基础配置及使用

痴心易碎 提交于 2020-03-04 10:20:18
一、为什么需要分布式数据据库 随着计算机和信息技术的迅猛发展,行业应用系统的规模迅速扩大,行业应用所产生的数据量呈爆炸式增长,动辄达到数百TB甚至数百PB的规模,已远远超出传统计算技术和信息系统的处理能力,集中式数据库面对大规模数据处理逐渐表现出其局限性。因此,人们希望寻找一种能快速处理数据和及时响应用户访问的方法,也希望对数据进行集中分析、管理和维护。这已经成为迫切需求。 分布式数据库是在集中式数据库的基础上发展起来的,是计算机技术和网络技术结合的产物。分布式数据库是指数据在物理上分布而在逻辑上集中管理的数据库系统。物理上分布是指数据分布在物理位置不同并由网络连接的节点或站点上;逻辑上集中是指各数据库节点之间的逻辑上是一个整体,并由统一的数据库管理系统管理。不同的节点分布可以跨不同的机房、城市甚至国家。 二、分布式数据库的特点 分布式数据库具有透明性、数据冗余性、易于扩展性、自治性等特点,还具有经济、性能优越、响应速度更快、灵活的体系结构、易于集成现有系统等特点。 分布式数据库尽管有着天生的高贵血统,但它依赖调整网络,对事务的处理远没有传统数据库成熟,在很长一段时间内分布式数据存储将与传统数据存储共存。 三、MyCat数据库中间件简介 MyCat是一个彻底开源的面向企业应用开发的大数据库集群,支持事务、ACID,是可以替代MySQL的加强版数据库

《App后台开发运维与架构实践》第6章 MySQL数据库

让人想犯罪 __ 提交于 2020-03-02 06:26:52
6.1 基本架构 服务层 大多数基于网络的客户端/服务端工具都有这一层,这一层主要是处理连接和安全验证。 核心层 这层处理MySQL的核心业务。查询分析、优化、缓存和内存的函数;内建的视图,存储过程,触发器。 存储引擎层 存储引擎负责数据的存储和提取。核心层通过存储引擎的API与存储引擎通信,这样子就遮蔽了不同存储引擎的差异,使得这些差异对上层查询是透明的。存储引擎之间不会相互通信,只是简单地响应上层的查询。 6.2 选择版本 MySQL的发展经历了下面的几个里程碑。 1979年,创始人Monty Windenius写了最初的版本。 1996年,发布1.0版本。 1995-2000年,MySQL AB公司成立,引入BDB。 2000年,集成MyISAM和Replication。 2008年,MySQL AB被Sun收购,2009年推出5.1版本。 2009年,Oracle收购Sun,2010年12月推出5.5版本。 MySQL被Oracle收购后,MySQL创始人Monty Windenius主导开发了MariaDB,采用GPL授权许可,完全兼容MySQL,使用XtraDB存储引擎来代替MySQL的InnoDB存储引擎。 由于上面所述的历史原因,造成了现在有4个MySQL的版本。 MySQL社区版:用户群体最大。 MySQL企业版:收费。 Percona Server版:新特性多。

mysql读写分离

二次信任 提交于 2020-03-01 21:03:34
什么是读写分离   在数据库集群架构中,让主库负责处理事务性查询,而从库只负责处理select查询,让两者分工明确达到提高数据库整体读写性能。当然,主数据库另外一个功能就是负责将事务性查询导致的数据变更同步到从库中,也就是写操作。 读写分离的好处    1)分摊服务器压力,提高机器的系统处理效率      读写分离适用于读远比写的场景,如果有一台服务器,当select很多时,update和delete会被这些select访问中的数据堵塞,等待select结束,并发性能并不高,而主从只负责各自的写和读,极大程度的缓解X锁和S锁争用;     假如我们有1主3从,不考虑上述1中提到的从库单方面设置,假设现在1分钟内有10条写入,150条读取。那么,1主3从相当于共计40条写入,而读取总数没变,因此平均下来每台服务器承担了10条写入和50条读取(主库不承担读取操作)。因此,虽然写入没变,但是读取大大分摊了,提高了系统性能。另外,当读取被分摊后,又间接提高了写入的性能。所以,总体性能提高了,说白了就是拿机器和带宽换性能;    2)增加冗余,提高服务可用性,当一台数据库服务器宕机后可以调整另外一台从库以最快速度恢复服务 什么是 Mycat   是一个开源的分布式数据库系统,但是因为数据库一般都有自己的数据库引擎,而Mycat并没有属于自己的独有数据库引擎

大型项目mysql5.6主从读写分离搭建(一主三从)

被刻印的时光 ゝ 提交于 2020-03-01 20:45:52
本篇文章记录博主所负责的一个大型项目最近一次遇到主从失效,重新搭建的整个过程。博主可是干了几个小时才搭建好,但是小伙伴们不要怕,其实搭建主从本身是非常简单的;主要还是数据量十几个G还原数据库花费太多时间。 首先,因为博主负责的该项目服务器几十台的规模,所以批量操作博主都已经做成了自动化脚本。如果大家要想看脚本请到前面博主的文章查看: 大型项目linux自动化版本发布脚本(shell)之tomcat、nginx服务脚本 以下是详细步骤: 一、停止web应用,接口服务器,mycat #执行nginx集群下线脚本(主要解决几台nginx转发问题) sh n_downline_ssh.sh #停止所有web服务器tomcat sh t_kill.sh #停止接口服务器tomcat Kill -9 接口服务器tomcat进程号 #停止mycat服务 ./mycat stop 二、备份主数据库 #备份命令 nohup mysqldump -uxxx -pxxxxx xxerx_wcc_test > /opt/xxerx/dbbackup/xxerx_20181031.sql 1>myout.out 2>/dev/null & #由于博主主了脚本执行,此处就直接运行脚本备份 sh t_xxmp_database_backup.sh 三、通知项目公司运维部门的人上传sql到几台从数据库所在服务器