mysql读写分离

Atlas做mysql读写分离

烂漫一生 提交于 2020-02-26 15:41:20
Atlas做mysql读写分离: Atlas奇虎360的一个开源中间代理,是在mysql-proxy 0.8.2的基础上进行了优化,增加一些新的功能特性。 wget https://github.com/Qihoo360/Atlas/releases/download/2.2.1/Atlas-2.2.1.el6.x86_64.rpm rpm -i Atlas-2.2.1.el6.x86_64.rpm 安装路径为/usr/local/mysql-proxy /usr/local/mysql-proxy/bin/encrypt xxxxxxx vi /usr/local/mysql-proxy/conf/test.cnf admin-username = ming admin-password = xxxxxx proxy-backend-addresses = 10.0.1.3:3306 proxy-read-only-backend-addresses = 10.0.1.4:3306@1,10.0.1.5:3306@1 pwds = ming:QeoyfAql8w4a8s/oWZlMvQ== proxy-address = 10.0.1.2:1234 admin-address = 10.0.1.2:2345 #client-ips = 127.0.0.1, 192.168.1

详解mycat+haproxy+keepalived搭建高可用负载均衡mysql集群

邮差的信 提交于 2020-02-26 02:35:40
概述 目前业界对数据库性能优化普遍采用集群方式,而oracle集群软硬件投入昂贵,mysql则比较推荐用mycat去搭建数据库集群,下面介绍一下怎么用mycat+haproxy+keepalived搭建一个属于mysql数据库的高可用负载均衡。 主要思路: 简单说,实现mysql主备复制-->利用mycat实现负载均衡。 比较了常用的读写分离方式,推荐mycat,社区活跃,性能稳定。 以下基于centos7操作系统进行演示。 架构图 以下是这次搭建的架构图。 主机1与主机2上的keepalived会为该服务器抢占vip,抢占到vip后,对该主机的访问可以通过原来的ip访问,也可以直接通过vip访问,当其中一台宕机时,vip会漂移到另一台机器上,当我们访问VIP时haproxy会根据配置将请求分发到两台Mycat上实现负载均衡,并且haproxy会检测mycat是否存活。 下面先介绍下后端数据库的搭建部分。 一、安装部署mysql 1、安装依赖 yum install tcl gcc perl perl-JSON.noarch perl-Time-HiRes.x86_64 -y 2、创建基础目录并修改文件夹的属组 mkdir -p /data/datafile mkdir -p /data/log chown -R mysql:mysql /data 3、安装mysql数据库

# IT明星不是梦 # MySQL高可用集群之MMM

▼魔方 西西 提交于 2020-02-26 01:21:32
MySQL高可用集群之MMM 一、MMM简介 MMM即Multi-Master Replication Manager for MySQL(mysql多主复制管理器) ,基于perl实现,关于mysql主主复制配置的监控、故障转移和管理的一套可伸缩的脚本套件(在任何时候只有一个节点可以被写入),MMM也能对从服务器进行读负载均衡,所以可以用它来在一组用于复制的服务器启动虚拟IP,除此之外,它还有实现数据备份、节点之间重新同步功能的脚本。MySQL本身没有提供replication failover的解决方案,通过MMM方案能实现服务器的故障转移,从而实现mysql的高可用。MMM不仅能提供浮动IP的功能,如果当前的主服务器挂掉后,会将你后端的从服务器自动转向新的主服务器进行同步复制,不用手工更改同步配置。这个方案是目前比较成熟的解决方案。详情请看官网: http://mysql-mmm.org 优点: 高可用性,扩展性好,出现故障自动切换。 对于主主同步,在同一时间只提供一台数据库写操作,保证的数据的一致性。 当主服务器挂掉以后,另一个主立即接管,其他的从服务器能自动切换,不用人工干预。 缺点: monitor节点是单点,不过这个也可以结合keepalived或者haertbeat做成高可用; 至少三个节点,对主机的数量有要求,需要实现读写分离,还需要在前端编写读写分离程序。

CentOS 6.8搭建mysql-proxy实现读写分离

柔情痞子 提交于 2020-02-26 01:19:00
CentOS 6.8搭建mysql-proxy实现读写分离: 下载网址: http://ftp.ntu.edu.tw/MySQL/Downloads/MySQL-Proxy 注: 1、10.0.1.2为mysql-proxy服务器ip 2、效果是1个写,2个读 tar zxfv mysql-proxy-0.8.5-linux-el6-x86-64bit.tar.gz -C /space mv /space/mysql-proxy-0.8.5-linux-el6-x86-64bit /space/mysql-proxy mkdir /space/mysql-proxy/logs cp -rv /space/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua /space/mysql-proxy/ vi /space/mysql-proxy/rw-splitting.lua if not proxy.global.config.rwsplit then proxy.global.config.rwsplit = { min_idle_connections = 1, (默认为4,即超过4个才会进行读写分离) max_idle_connections = 1, (默认为8) is_debug = false } end :wq vi

MySQL中间件之MyCat

你。 提交于 2020-02-25 23:37:09
MySQL中间件之MyCat 一、MyCat基础概念 1、什么是MyCat 一个彻底开源的,面向企业应用开发的大数据库集群 支持事务、ACID、可以替代MySQL的加强版数据库 一个可以视为MySQL集群的企业级数据库,用来替代昂贵的Oracle集群 一个融合内存缓存技术、NoSQL技术、HDFS大数据的新型SQL Server 结合传统数据库和新型分布式数据仓库的新一代企业级数据库产品 一个新颖的数据库中间件产品 2、为什么使用MyCat 如今随着互联网的发展,数据的量级也是撑指数的增长,从GB到TB到PB。对数据的各种操作也是愈加的困难,传统的关系性数据库已经无法满足快速查询与插入数据的需求。这个时候NoSQL的出现暂时解决了这一危机。它通过降低数据的安全性,减少对事务的支持,减少对复杂查询的支持,来获取性能上的提升。但是,在有些场合NoSQL一些折衷是无法满足使用场景的(比如有些使用场景是绝对要有事务与安全指标的。这个时候NoSQL肯定是无法满足的)。所以还是需要使用关系性数据库。如何使用关系型数据库解决海量存储的问题呢?此时就需要做数据库集群,为了提高查询性能将一个数据库的数据分散到不同的数据库中存储,为应对此问题就出现了——MyCat MyCat作用: 能满足数据库数据大量存储;提高了查询性能 读写分离 数据分片 垂直拆分(分库)、水平拆分(分表)、垂直+水平拆分

MySQL重要知识点(总结)

拥有回忆 提交于 2020-02-24 20:29:00
最近一段时间都学习mysql,将重要的知识点总结如下: 一、字段、表、索引设计规范相关 二、事务相关 三、锁相关 四、存储引擎相关 五、大表优化相关 六、索引优化相关 七、语句优化相关 一、字段、表、索引设计规范 1、字段设计规范 ① 字段类型优先选择符合存储需要的最小类型 字段类型优先级:整型>date;time >enum>char;varchar>blob 原因:整型,time运算快,节省内存;enum列内部是用整型存储的,char,varchar要考虑字符集的转换和排序的校对集,速度慢;blob无法使用临时表。 ② 够用就行(如smallint,varchar(N)) 原因:大的字段浪费内存,影响速度,如varchar(10),varchar(300),虽然存储的内容一样,但是,在表联查时,varchar(300)要花更多内存 ③ 尽量避免使用允许为null() 原因:null不利于索引,要用特殊的字节标注,在磁盘上占的空间其实更大 例子:建两个相同字段的表,一个允许为null,一个不允许。可以发现为null的索引更大些。 ④ 避免使用ENUM类型 修改ENUM值需要使用ALTER语句 ENUM类型的ORDER BY操作效率低,需要额外操作 禁止使用数值作为ENUM的枚举值 ⑤ 使用TIMESTAMP(4个字节)或DATETIME类型(8个字节)存储时间 TIMESTAMP

使用MyCat进行MySql的读写分离

不问归期 提交于 2020-02-22 14:49:20
读写分离是在主从复制的基础上实现的 一:安装MyCat MyCat下载完解压就能用,但是我们需要进行我们的配置 下载地址 http://dl.mycat.io 下载完成上传并解压就ok了 如果启动失败的的话可以查看logs/wrapper.log文件里的错误信息,百度一搜就可以解决了 我的MyCat安装在mysql主机上ip地址为192.168.118.4 二:配置MyCat 主要配置两个文件 servvice.xml里的东西备份之后,替换成下面的 <mycat:server xmlns:mycat="http://io.mycat/"> <!-- 添加user --> <user name="mycat_master" defaultAccount="true"> <property name="password">mycat_master</property> <property name="schemas">hehe</property> </user> <!-- 添加user --> <user name="mycat_slave"> <property name="password">mycat_slave</property> <property name="schemas">hehe</property> <property name="readOnly">true<

MySQL的高可用实现方案之mysql-mmm

心已入冬 提交于 2020-02-21 07:43:16
一、环境简述 1、工作逻辑图 2、MySQL-MMM优缺点 优点:高可用性,扩展性好,出现故障自动切换,对于主主同步,在同一时间只提供一台数据库写操作,保证的数据的一致性。 缺点:Monitor节点是单点,可以结合Keepalived实现高可用,对主机的数量有要求,需要实现读写分离,对程序来说是个挑战。 3、MySQL-MMM工作原理 MMM(Master-Master replication managerfor Mysql, Mysql主主复制管理器 )是一套灵活的脚本程序,基于 perl实现,用来对 mysql replication进行监控和故障迁移,并能管理 mysql Master-Master复制的配置 (同一时间只有一个节点是可写的 )。 mmm_mond:监控进程,负责所有的监控工作,决定和处理所有节点角色活动。此脚本需要在监管机上运行。 mmm_agentd:运行在每个mysql服务器上的代理进程,完成监控的探针工作和执行简单的远端服务设置。此脚本需要在被监管机上运行。 mmm_control:一个简单的脚本,提供管理mmm_mond进程的命令。 mysql-mmm的监管端会提供多个虚拟IP(VIP),包括一个可写VIP,多个可读VIP,通过监管的管理,这些IP会绑定在可用mysql之上,当某一台mysql宕机时,监管会将VIP迁移至其他mysql。

[系统软件工程师面试] 6. mysql

别等时光非礼了梦想. 提交于 2020-02-21 02:54:50
1. Mysql内核 MyISAM和InnoDB内核选型 1. InnoDB 支持事务,MyISAM 不支持事务。这是 MySQL 将默认存储引擎从 MyISAM 变成 InnoDB 的重要原因之一; 2. InnoDB 支持外键,而 MyISAM 不支持。对一个包含外键的 InnoDB 表转为 MYISAM 会失败; 3. InnoDB 是聚集索引,MyISAM 是非聚集索引。聚簇索引的文件存放在主键索引的叶子节点上,因此 InnoDB 必须要有主键,通过主键索引效率很高。但是辅助索引需要两次查询,先查询到主键,然后再通过主键查询到数据。因此,主键不应该过大,因为主键太大,其他索引也都会很大。而 MyISAM 是非聚集索引,数据文件是分离的,索引保存的是数据文件的指针。主键索引和辅助索引是独立的。 4. InnoDB 不保存表的具体行数,执行 select count(*) from table 时需要全表扫描。而MyISAM 用一个变量保存了整个表的行数,执行上述语句时只需要读出该变量即可,速度很快; 5. InnoDB 最小的锁粒度是行锁,MyISAM 最小的锁粒度是表锁。一个更新语句会锁住整张表,导致其他查询和更新都会被阻塞,因此并发访问受限。这也是 MySQL 将默认存储引擎从 MyISAM 变成 InnoDB 的重要原因之一; 如何选择: 1. 是否要支持事务

万字分享,我是如何一步一步监控公司MySQL的?

岁酱吖の 提交于 2020-02-20 13:23:23
整理了一些Java方面的架构、面试资料(微服务、集群、分布式、中间件等),有需要的小伙伴可以关注公众号【程序员内点事】,无套路自行领取 更多优选 一口气说出 9种 分布式ID生成方式,面试官有点懵了 3万字总结,Mysql优化之精髓 为了不复制粘贴,我被逼着学会了JAVA爬虫 技术部突然宣布:JAVA开发人员全部要会接口自动化测试框架 Redis 5种数据结构及对应使用场景,全会面试要加分的 写在前边 在家远程办公第三周,快被手机上的消息搞的有些神经质了,生怕错过一条有用的信息,没办法形势如此,公司摇摇欲坠大家也都如履薄冰,毕竟这时候失业有点惨( 穷怕了 )。 但就干活来说还是比较清闲的,和在公司上班相比,清闲下来很多碎片时间,可以随意的做点自己喜欢的事情。而且我发现, 人一但闲下来真的是好可怕 ,潜在的才能会全面爆发,我女朋友这个抖音深度患者,一年不做一回饭的主,一周内接连给我做了两顿黑暗料理,烤馒头版“蛋糕”、浆糊版“凉皮”,然后我就与厕所结下来不解之缘。。。 不过,作为一个程序员,我对黑暗料理是不太感兴趣滴,闲下来还是喜欢学习钻研一些新奇的技术, canal 就成了很好的研究对象,一不小心就监控了公司MySQL的一举一动的 一、canal是个啥? canal 是阿里开发的一款基于数据库增量日志解析,提供增量数据订阅与消费的框架,整个框架纯 JAVA 开发,目前仅支持