读写分离

phalapi-进阶篇5(数据库读写分离以及多库使用)

孤街醉人 提交于 2020-04-07 07:57:24
#phalapi-进阶篇5(数据库读写分离以及多库使用)# ##前言## 先在这里感谢phalapi框架创始人@dogstar,为我们提供了这样一个优秀的开源框架. 读写分离是我们常用的一种解决方案,它可以解决大量读操作的时候数据库瓶颈的问题,我们在真正开发一个项目的过程中可能会遇一个接口或者一个操作中需要用到多个数据库操作的时候怎么办,今天的教程就从这个两个问题出来,来聊聊使用phalapi怎么解决这个问题. 附上: 官网地址: http://www.phalapi.net/ 开源中国Git地址: http://git.oschina.net/dogstar/PhalApi/tree/release ##1. 读写分离## 在我们的生活中无时无刻不面临这并发的问题,比如下班高峰交通问题,人们用了红绿灯来解决的一部分问题**(但是很痛苦这个就和查询的时候阻塞一样的,10秒做update操作,10秒做select操作一样的) ,那么人们有想到了一个方法高架,高架的路线是和正常的路线一致的 (数据相同)** ,高架分两条路而且一条路上的车不能到另外一条路上**(读写分离)** 这样就解决了我们这类常规并发的问题 其实看起来上面这种解决方案是比较好的其实并不是这样的,有两条路但是其实它的宽度是不一样的,我们这里把一个叫做写路,一个叫做读路

基于 Mycat 实现读写分离

牧云@^-^@ 提交于 2020-04-06 12:25:17
之前配置了MySql的 主从同步 ,但是如果我们程序还没实现读写分离。现在可以基于Mycat实现读写分离,Mycat是一个数据库中间件,提供了Mysql分表分库和读写分离等解决方案,下面仅记录Mycat读写分离 首先Linux下载MyCat 用wget命令下载 wget http://dl.mycat.io/1.6.7.3/20190927161129/Mycat-server-1.6.7.3-release-20190927161129-linux.tar.gz 下载后解压 tar -zxvf Mycat-server-1.6.7.3-release-20190927161129-linux.tar.gz 下面是解压后的目录 进入conf文件夹可以看到下面的文件,配置读写分离我们主要使用到了schema.xml与server.xml 文件 server.xml: 主要 配置Mycat服务的参数,例如端口号,Myact用户名和密码使用的逻辑数据库等 schema.xml: 主要配置数据库的信息,例如逻辑数据库名称,物理上真实的数据源以及表和数据源之间的对应关系和路由策略等。 server.xml 配置 找到user节点配置,配置用户信息,说明如下: --name 登录Mycat的用户名 --password 登录Mycat的密码 --schemas 逻辑数据库名

使用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作为目前世界上使用最广泛的免费数据库

实现Web应用的高并发、负载均衡配置(1)

老子叫甜甜 提交于 2020-03-01 06:16:07
第一步:查看Linux自带的JDK是否已安装 (卸载CentOS已安装的jdk版本,重新安装sun公司的jdk。此步不是必须的,只是建议,方便后面jdk升级) (1)先查看 # rpm -qa | grep java 显示如下信息: java-1.4.2-gcj-compat-1.4.2.0-40jpp.115 java-1.6.0-openjdk-1.6.0.0-1.7.b09.el5 (2)卸载 # rpm -e --nodeps java-1.4.2-gcj-compat-1.4.2.0-40jpp.115 # rpm -e --nodeps java-1.6.0-openjdk-1.6.0.0-1.7.b09.el5 还有一些其他的命令 # rpm -qa | grep gcj # rpm -qa | grep jdk 如果出现找不到openjdk source的话,那么还可以这样卸载 # yum -y remove java java-1.4.2-gcj-compat-1.4.2.0-40jpp.115 # yum -y remove java java-1.6.0-openjdk-1.6.0.0-1.7.b09.el5 (3)查看jdk的信息或直接执行 # rpm -qa|grep jdk 或 # rpm -q jdk 或 # java -version (4

MyCat实战--读写分离/数据分片/mycat集群/haproxy负载均衡

£可爱£侵袭症+ 提交于 2020-01-19 11:58:40
目录 简介 优势 关键特性 读写分离 安装mycat 配置mycat server.xml schema.xml rule.xml 启动mycat 停止mycat 连接mycat 测试 数据分片 配置master 配置slave 创建数据库以及表 配置mycat schema.xml rule.xml 测试 MyCat集群 架构 搭建多节点mycat 连接测试 负载均衡 简介 架构 部署安装HAProxy docker安装 配置文件 启动docker haproxy容器 访问ip:4001/dbs ​ Navicat连接haproxy 简介 优势 关键特性 读写分离 安装mycat 配置mycat server.xml schema.xml rule.xml 启动mycat 启动mycat的命令是 ./startup_nowrap.sh 停止mycat 连接mycat 测试 数据分片 比如两台服务器节点,来了4条数据,两个节点的写库各插入2条,这就是分片。 配置master 配置slave 创建数据库以及表 配置mycat schema.xml rule.xml 测试 MyCat集群 mycat做了数据库的代理,在高并发的情况下,必然也会面临单节点的性能问题,所以需要部署多个mycat节点。 架构 搭建多节点mycat 连接测试 虽然搭建了多节点的mycat集群

mysql读写分离,中间件用mycat

旧城冷巷雨未停 提交于 2019-12-22 09:42:35
首先,数据库的读写分离,能让应用对数据库的访问压力下降,较之一台数据库服务器来读写的时候。 2台数据库服务器,1台用来执行写操作,1台用来执行读操作,这样能够分散应用对数据的压力,而且能加强数据库的数据安全性。 所以,面对比较大型的数据读取应用,对其数据库做读写分离,对性能提升是很有好处的。 为什么读写分离可以提高性能? 物理服务器增加,负荷增加 主从只负责各自的写和读,极大程度的缓解X锁和S锁争用 从库可配置myisam引擎,提升查询性能以及节约系统开销 至于你提到的“master所执行的(写)的所有语句,都会在slave被执行一遍”这个只说对一半,从库同步主库的数据和主库直接写还是有区别的,通过主库发送来的binlog恢复数据,但是,最重要区别在于主库向从库发送binlog是异步的,从库恢复数据也是异步的。 读写分离适用与读远大于写的场景,如果只有一台服务器,当select很多时,update和delete会被这些select访问中的数据堵塞,等待select结束,并发性能不高。 对于写和读比例相近的应用,应该部署双主相互复制。 主要步骤 1.mysql主从数据库设置,master用来做写操作,slave用来做读操作。 主从数据库设置,是指slave会通过mysql的主从复制功能,自动去实时去同步master上的数据变更。(单向的slave copy master) 2

基于mycat实现mysql的读写分离

﹥>﹥吖頭↗ 提交于 2019-12-22 04:56:09
需要具备以下环境 1 mysql主从复制 2 jdk安装以及环境变量配置 请参考 mysql主从复制 请参考 linux下安装mysql 以下为我的演示参考: 192.168.142.26 master- mysql 具备主从主从复制条件 192.168.142.25 slave- mysql 具备主从主从复制条件 192.168.142.27 slave- mysql 具备主从主从复制条件 192.168.142.28 mycat 安装了mysql 将压缩包 Mycat-server-1.6.7.3-release-20190828135747-linux.tar.gz 复制到 /usr/local目录下 解压 tar -zvxf Mycat-server-1.6.7.3-release-20190828135747-linux.tar.gz 查看是否安装了jdk 并配置环境变量 jps # 或者 java -version 请参考 linux(centOS7)安装jdk配置环境变量 修改myact/conf下的schema.xml 文件如下 <schema name="TESTDB" checkSQLschema="true" sqlMaxLimit="100" dataNode="dn1"> </schema> <dataNode name="dn1" dataHost=

Mycat入门+读写分离

允我心安 提交于 2019-12-18 03:05:55
1.是什么 数据库中间件,前身是阿里的cobar 2.干什么的 读写分离 数据分片(水平+垂直拆分) 多数据源整合 Mycat的配置文件 schema.xml:定义逻辑库,表、分片节点等内容 rule.xml:定义分片规则 server.xml:定义用户以及系统相关变量,如端口等. 原理 Mycat 的原理中最重要的一个动词是“拦截”,它拦截了用户发送过来的 SQL 语句,首先对 SQL 语句做了 一些特定的分析:如分片分析、路由分析、读写分离分析、缓存分析等,然后将此 SQL 发往后端的真实数据库, 并将返回的结果做适当的处理,最终再返回给用户 PS:这种方式把数据库的分布式从代码中解耦出来,程序员察觉不出来后台使用Mycat还是mysql 读写分离 mysql主从复制(要配置读写分离必须配置主从复制) 原理:slave会从master读取binlog来进行数据同步 MySQL复制过程分成三步: master将改变记录到二进制日志(binary log)。这些记录过程叫做二进制日志事件,binary log events; slave将master的binary log events拷贝到它的中继日志(relay log); slave重做中继日志中的事件,将改变应用到自己的数据库中。 MySQL复制是异步的且串行化的 复制基本原则: 每一个slave只有一个master

mysql中间件汇总

假如想象 提交于 2019-12-16 08:15:37
一、写在前面 mysql作为互联网公司都会用到的数据库,在使用过程中。会用主从复制来提高性能。会用分库分表解决写入问题。以下介绍mysql中间件的一些实现方案 二、Atlas Atlas时 360 公司开发维护的一个基于MySQL协议的数据中间层项目。 2.1 atlas架构 Atlas是一个位于应用程序与MySQL之间中间件。在后端DB看来,Atlas相当于连接它的客户端,在前端应用看来,Atlas相当于一个DB。Atlas作为服务端与应用程序通讯,它实现了MySQL的客户端和服务端协议,同时作为客户端与MySQL通讯。它对应用程序屏蔽了DB的细节,同时为了降低MySQL负担,它还维护了连接池。 2.3 主要功能 1.读写分离 2.从库负载均衡 3.IP过滤 4.自动分表 5.DBA可平滑上下线DB 6.自动摘除宕机的DB 三、Mysql router MySQL Router是mysql官方发布的数据库中间件,是处于应用client和dbserver之间的轻量级代理程序,它能检测,分析和转发查询到后端数据库实例,并把结果返回给client。是mysql-proxy的一个替代品 3.1 mysql router架构 1.Router实现读写分离,程序不是直接连接数据库IP,而是固定连接到mysql router。MySQL Router对前端应用是透明的。 应用程序把MySQL

一步步带你,如何网站架构

风格不统一 提交于 2019-12-04 20:49:27
#何为大型网站# ##大型网站特性## 既然说的是大型网站架构,那么 架构的背后自然是解决人因面对大型网站特性而带来的问题 。这样可以先给大家说下大型网站的特性, 这些特性带来的问题就是人要解决的问题 : 高并发、大流量:PV 量巨大; 高可用:7*24 小时不间断服务; 海量数据:文件数目分分钟 xxTB; 用户分布广泛,网络情况复杂:网络运营商; 安全环境恶劣:黑客的攻击; 需求快速变更,发布频繁:快速适应市场,满足用户需求; 渐进式发展:慢慢地运营出大型网站; ##大型网站目标## 既然说到了大型网站的特性,那么**解决这些特性带来的问题要达到什么目标呢?**如下: 每个目标背后面临着技术、设计、维护等诸多方面的挑战; 而目标本身的期望值也会根据实际情况进行调整,这也意味着网站架构建设是个不断调整的过程。 有了问题,也定了伟大的目标,那么网站在不同阶段面对不同的问题,是如何解决的?又是如何一步步成长为大型网站架构,实现这些伟大的目标呢? ##如何网站架构## 首先,什么是大型网站架构呢? 其实大型网站架构的概念对于每一个开发者来说很笼统、很模糊,正如盲人摸象,看到的、了解到的只是很小的一部分,大部分情况下我们只是负责架构中的一小块内容,所以很难清晰地给出具体定义。这就是所谓“不识庐山真面目 只缘身在此山中”的尴尬吧。所以我们要跳出来,站在宏观的角度