返回ProxySQL系列文章:http://www.cnblogs.com/f-ck-need-u/p/7586194.html 1.ProxySQL简介 之前的文章里,介绍了一个MySQL的中间件:MySQL Router.详细内容参见:MySQL Router实现MySQL的读写分离. 这里准备用一个系列来详细介绍一个能实实在在用在生产环境的MySQL中间件:ProxySQL.它有两个版本:官方版和percona版,percona版是在官方版的基础上修改的,添加了几个比较实用的工具.在我这个…
返回ProxySQL系列文章:http://www.cnblogs.com/f-ck-need-u/p/7586194.html ProxySQL有原生的集群功能,但是这个原生的集群功能还正在试验阶段.本文会详细介绍这个原生集群的实现细节. 1.ProxySQL部署在哪 在拓扑结构中,ProxySQL部署在应用程序和MySQL集群的中间位置.应用程序向ProxySQL发起SQL语句,ProxySQL分析收到的SQL语句,进行匹配.重写等操作,然后路由给后端MySQL集群中的某实例. 如图: 上图…
返回ProxySQL系列文章:http://www.cnblogs.com/f-ck-need-u/p/7586194.html 1.实现一个简单的读写分离 这里通过一个简单的示例实现ProxySQL的读写分离功能,算是ProxySQL的快速入门.即使是快速入门,需要配置的内容也很多,包括:后端MySQL配置.监控配置.发送SQL语句的用户.SQL语句的路由规则.所以,想要实现一个ProxySQL+MySQL,即使只实现最基本的功能,步骤也是挺多的,不过配置的逻辑都很简单. 实验环境: 角色 主…
返回ProxySQL系列文章:http://www.cnblogs.com/f-ck-need-u/p/7586194.html 1.ProxySQL的Admin管理接口 当ProxySQL启动后,将监听两个端口: (1).admin管理接口,默认端口为6032.该端口用于查看.配置ProxySQL. (2).接收SQL语句的接口,默认端口为6033,这个接口类似于MySQL的3306端口. ProxySQL的admin管理接口是一个使用MySQL协议的接口,所以,可以直接使用mysql客户端.…
返回ProxySQL系列文章:http://www.cnblogs.com/f-ck-need-u/p/7586194.html 1.ProxySQL中的库 使用ProxySQL的Admin管理接口连上ProxySQL,可查看ProxySQL拥有的库. mysql -uadmin -padmin -h127.0.0.1 -P6032 --prompt 'admin> ' admin> show databases; +-----+---------------+----------------…
返回ProxySQL系列文章:http://www.cnblogs.com/f-ck-need-u/p/7586194.html 1.ProxySQL的线程 ProxySQL由多个模块组成,是一个多线程的daemon类程序.每个模块都有一个或多个线程去执行任务. 例如,以下是刚启动ProxySQL时的进程情况,一个main进程,一个主线程,21个线程. [root@s1 ~]# pstree | grep proxy |-proxysql---proxysql---21*[{proxysql}]…
返回ProxySQL系列文章:http://www.cnblogs.com/f-ck-need-u/p/7586194.html 1.配置后端节点前的说明 为了让ProxySQL能够找到后端的MySQL节点,需要将后端的MySQL Server加入到ProxySQL中.ProxySQL的一切配置行为都是在修改main库中的对应的表,所以添加节点到ProxySQL中实际上也是通过修改相关表来实现的. 管理后端节点有几个过程: 将后端MySQL Server的主从复制结构配置好. 将后端MySQL…
返回ProxySQL系列文章:http://www.cnblogs.com/f-ck-need-u/p/7586194.html 1.关于ProxySQL路由的简述 当ProxySQL收到前端app发送的SQL语句后,它需要将这个SQL语句(或者重写后的SQL语句)发送给后端的MySQL Server,然后收到SQL语句的MySQL Server执行查询,并将查询结果返回给ProxySQL,再由ProxySQL将结果返回给客户端(如果设置了查询缓存,则先缓存查询结果). ProxySQL可以实现…
返回ProxySQL系列文章:http://www.cnblogs.com/f-ck-need-u/p/7586194.html 1.ProxySQL+PXC 本文演示ProxySQL代理PXC(Percona XtraDB Cluster)的方法,不涉及原理,纯配置过程,所以如有不懂之处,请先掌握相关理论. ProxySQL要代理PXC,需要使用ProxySQL额外提供的脚本/usr/share/proxysql/tools/proxysql_galera_checker.sh做健康检查并动态…
准备服务器: docker run -d --privileged -v `pwd`/mysql_data:/data -p 3001:3306 --name mysql5-master --hostname mysql5-master --net staticnet --ip 192.168.0.101 eiki/mysql:5.7.23 /usr/sbin/init docker run -d --privileged -v `pwd`/mysql_data:/data -p 3002:33…
文章转载自:https://blog.csdn.net/u012280685/article/details/113520692?spm=1001.2014.3001.5501 实现一个简单的读写分离 这里通过一个简单的示例实现ProxySQL的读写分离功能,算是ProxySQL的快速入门.即使是快速入门,需要配置的内容也很多,包括:后端MySQL配置.监控配置.发送SQL语句的用户.SQL语句的路由规则.所以,想要实现一个ProxySQL+MySQL,即使只实现最基本的功能,步骤也是挺多的,不…
文章转载自:https://www.cnblogs.com/f-ck-need-u/p/9362822.html ProxySQL有原生的集群功能,但是这个原生的集群功能还正在试验阶段.本文会详细介绍这个原生集群的实现细节. ProxySQL部署在哪 在拓扑结构中,ProxySQL部署在应用程序和MySQL集群的中间位置.应用程序向ProxySQL发起SQL语句,ProxySQL分析收到的SQL语句,进行匹配.重写等操作,然后路由给后端MySQL集群中的某实例. 如图: 上图描述的是多个appl…
proxysql 是一个比较强大的mysql proxy 服务,支持动态mysql 实例调整,查询重写,查询cache,监控,数据镜像,读写分离 以及ha,最近已经发布了2.0 ,很值得试用下 环境准备 docker-compose 文件 version: "3" services: mysql: image: mysql:5.7.16 ports: - 3306:3306 command: --character-set-server=utf8mb4 --collation-serv…
[详细解析]MySQL索引详解( 索引概念.6大索引类型.key 和 index 的区别.其他索引方式) MySQL索引的概念: 索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针.更通俗的说,数据库索引好比是一本书前面的目录,能加快数据库的查询速度. 索引分为:聚簇索引.非聚簇索引.聚簇索引是按照数据存放的物理位置为顺序的,而非聚簇索引就不一样了:聚簇索引:能提高多行检索的速度,非聚簇索引:单行的检索很快. 要注意的是,建立太多的索…
MySQL基本命令操作及数据库基本概念 1.数据库的基本概念 2.主流数据库介绍 3.关系型非关系型数据库介绍 4.Mysql 安装方法 5.Mysql 基本操作命令 1.数据库的基本概念: 数据库的组成 数据:     描述事物的符号记录    包括数字,文字.图形.图像.声音.档案记录等        以"记录"形式按统一格式进行存储 表:        将不同的记录组织在一起,用来存储具体数据 数据库: 表的集合,是存储数据的仓库   以一定的组织方式存储的相互有关的数据集合  …
返回ProxySQL系列文章:http://www.cnblogs.com/f-ck-need-u/p/7586194.html 1.不同类型的读写分离 数据库中间件最基本的功能就是实现读写分离,ProxySQL当然也支持.而且ProxySQL支持的路由规则非常灵活,不仅可以实现最简单的读写分离,还可以将读/写都分散到多个不同的组,以及实现分库sharding(分表sharding的规则比较难写,但也能实现). 本文只描述通过规则制定的语句级读写分离,不讨论通过 ip/port, client,…
返回ProxySQL系列文章:http://www.cnblogs.com/f-ck-need-u/p/7586194.html 1.为什么要重写SQL语句 ProxySQL在收到前端发送来的SQL语句后,可以根据已定制的规则去匹配它,匹配到了还可以去重写这个语句,然后再路由到后端去. 什么时候需要重写SQL语句? 对于下面这种简单的读.写分离,当然用不上重写SQL语句. 这样的读写分离,实现起来非常简单.如下: mysql_replication_hostgroups: +----------…
返回ProxySQL系列文章:http://www.cnblogs.com/f-ck-need-u/p/7586194.html ProxySQL支持查询缓存的功能,可以将后端返回的结果集缓存在自己的内存中,在某查询的缓存条目被清理(例如过期)之前,前端再发起同样的查询语句,将直接从缓存中取数据并返回给前端.如此一来,ProxySQL处理的性能会大幅提升,也会大幅减轻后端MySQL Server的压力. 1.开启query cache功能 ProxySQL的查询缓存功能由mysql_query_…
返回ProxySQL系列文章:http://www.cnblogs.com/f-ck-need-u/p/7586194.html 1.理解链式规则 在mysql_query_rules表中,有两个特殊字段"flagIN"和"flagOUT",它们分别用来定义规则的入口和出口,从而实现链式规则(chains of rules). 链式规则的实现方式如下: 当入口值flagIN设置为0时,表示开始进入链式规则.如未显式指定规则的flagIN值,则默认都为0. 当语句匹配…
返回ProxySQL系列文章:http://www.cnblogs.com/f-ck-need-u/p/7586194.html 1.multiplexing multiplexing,作用是将语句分多路路由.开启了multiplexing开关,读/写分离.按规则路由才能进行.但有时候,有些语句要求路由到同一个主机组,甚至是同一个主机组中的同一个节点上.这时会自动禁用multiplexing.禁用multiplexing后,语句会根据同一个连接进行路由. 也就是说,在禁用multiplexing…
返回ProxySQL系列文章:http://www.cnblogs.com/f-ck-need-u/p/7586194.html 1.ProxySQL+组复制前言 在以前的ProxySQL版本中,要支持MySQL组复制(MGR,MySQL Group Replication)需要借助第三方脚本对组复制做健康检查并自动调整配置,但是从ProxySQL v1.4.0开始,已原生支持MySQL组复制的代理,在main库中也已提供mysql_group_replication_hostgroups表来控…
先在主从节点安装mysql [root@master-mariadb ~]# yum install mariadb-server -y [root@slave-mariadb ~]# yum install mariadb-server -y 配置主节点和从节点 [root@master-mariadb ~]# vim /etc/my.cnf [mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock server_id=2…
文章转载自: https://www.cnblogs.com/f-ck-need-u/p/9314459.html ProxySQL支持查询缓存的功能,可以将后端返回的结果集缓存在自己的内存中,在某查询的缓存条目被清理(例如过期)之前,前端再发起同样的查询语句,将直接从缓存中取数据并返回给前端.如此一来,ProxySQL处理的性能会大幅提升,也会大幅减轻后端MySQL Server的压力. 开启query cache功能 ProxySQL的查询缓存功能由mysql_query_rules表中的c…
本文对常用数据库操作及相关基本概念进行总结:MySQL和PostgreSQL对SQL的支持有所不同,大部分SQL操作还是一样的. 选择要用的数据库(MySQL):use database_name; help show; 显示可用的数据库列表:show databases; 显示一个数据库内可用的表的列表:show tables; 显示表列:show columns from 一个表名; /describe 表名;  示例:show columns from customers;    desc…
原文来自于:http://hualong.iteye.com/blog/2102798 这几天研究了下Cobar, Cobar是阿里巴巴研发的关系型数据的分布式处理系统(Amoeba的升级版,该产品成功替代了原先基于Oracle的数据存储方案,目前已经接管了3000+个MySQL数据库的schema,平均每天处理近50亿次的SQL执行请求.)(github上面的是源码,大家下来需要自己用maven2编译后运行.者放Eclipse里面运行,一开始我用maven3没有执行成功.) 首先,使用Coba…
目前在从事数据库中间件的开发和维护工作,我们使用的数据库中间件就是由cobar改造而来,所以对于cobar的一些说明一看就明白了: 下面是看到的一个很不错的分析文档 这里整理了下方便自己学习使用. Cobar是阿里巴巴研发的关系型数据的分布式处理系统(Amoeba的升级版,该产品成功替代了原先基于Oracle的数据存储方案,目前已经接管了3000+个MySQL数据库的schema,平均每天处理近50亿次的SQL执行请求.)(github上面的是源码,大家下来需要自己用maven2编译后运行.者放…
随着互联网的发展,数据量的不断增大. 单台实例已经远远无法满足业务的需要. 对数据库分库分表的需求不断的增加随之而来的就是数据库中间件的开发. 一. 单台实例主要面临下面几个问题: 1.  数据量太大单台机器无法承载 2.  数据查询效率太低,单表数据达到一定的量业务性能就无法满足 3.  数据库优化上的瓶颈 4. 数据安全的问题,大量数据放置在一台机器如果数据出问题回复周期会特别长,对业务影响太大. 随之而来的就是需要分库分表 但是分库分表就四个字做起来可真没有这么简单. 二. 分库分表面临的…
MySQL 中间件Atlas 实现读写分离 原创 MySQL 作者:神谕丶 时间:2016-08-05 17:07:51  2410  0 〇 Atlas架构介绍 <span "="">Atlas是Qihoo360开发的一个中间件,位于Client和MySQL Server中间层,可以作为读写分离,分库分表中间件.<span "="">对于MySQL Server而言,Atlas像是个Client,而对于Client而言,…
一,什么是mycat 一个彻底开源的,面向企业应用开发的大数据库集群 支持事务.ACID.可以替代MySQL的加强版数据库 一个可以视为MySQL集群的企业级数据库,用来替代昂贵的Oracle集群 一个融合内存缓存技术.NoSQL技术.HDFS大数据的新型SQL Server 结合传统数据库和新型分布式数据仓库的新一代企业级数据库产品 一个新颖的数据库中间件产品 以上是官方说明.其实就是数据库的连接池.mysql proxy也是一种连接池,但是效率很低. 二,mycat 安装 1,下载地址myc…
悲观锁与乐观锁是两种常见的资源并发锁设计思路,也是并发编程中一个非常基础的概念.本文将对这两种常见的锁机制在数据库数据上的实现进行比较系统的介绍. 悲观锁(Pessimistic Lock) 悲观锁的特点是先获取锁,再进行业务操作,即“悲观”的认为获取锁是非常有可能失败的,因此要先确保获取锁成功再进行业务操作.通常所说的“一锁二查三更新”即指的是使用悲观锁.通常来讲在数据库上的悲观锁需要数据库本身提供支持,即通过常用的select … for update操作来实现悲观锁.当数据库执行selec…