mysql读写分离

分库分表

余生颓废 提交于 2019-12-10 11:58:11
ql-day10 分库分表 mysql> insert into employee(id,name,sharding_id)values( 1,"jingjing",10000),(2,"niuge",10010),(3,"tao",10000),(4,"bai",10010);   •什么是分库分表 –通过某种特定条件 , 将存放在一个数据库 ( 主机 ) 中的 数据 , 分散存放到多个数据库 ( 主机 ) 中。 –已达到分散单台设备负载的效果 , 即分库分表 –数据的切分根据其切分规则的类型 , 分为 2 种切分模式 –垂直分割 ( 纵向 ) 和水平分割 ( 横向 ) 垂直分割 •纵向切分 –把单一的表 , 拆分成多个表 , 并分散到不同的数据库 ( 主机 ) 上。 –一个数据库由多个表构成 , 每个表对应不同的业务 , 可以按照业务对表进行分类 , 将其分布到不同的数据库 ( 主机 ) 上 , 实现专库专用 , 让不同的库 ( 主机 ) 分担不同的业务。 水平分割 •横向切分 –按照表中某个字段的某种规则 , 把向表中写入的记录分散到多个库 ( 主机 ) 中。 –简单来说 , 就是按照数据行切分 , 将表中的某些行存储到指定的数据库 ( 主机 ) 中。 软件介绍 • Mycat 是基于 Java 的分布式数据库系统中间层 , 为高并发下的分布式提供解决方案 –支持 JDBC

大型互联网应用去Oracle改造经验总结

◇◆丶佛笑我妖孽 提交于 2019-12-10 02:08:25
为什么要去Oracle 现在好像是个互联网公司好像都在谈去IOE,也有人问过我们,去IOE到底有什么受益?我们公司为什么要去IOE呢?当然实际情况是因为我们上层领导决定的,所以我们都热火朝天的干起来了,就跟我们当时为什么将已经开发的系统从MySQL数据库改成Oralce一样,都是上层领导决定的。对此我只能哈哈哈了。 但是我有自己的思考,为什么我们要去Oracle呢?对我们到底会带来什么受益呢?我个人觉得对于大型互联网公司用MySQL替代Oracle的原因有这样一些。 大规模部署成本可大幅度降低 因为大型互联网公司往往存储非常大规模的数据,数据库的读写流量也往往巨大,有数以千计的各种应用都需要用到数据库,这样购买硬件、软件license的成本巨大,随着业务不断发展,部署规模不断增加,我们的成本也将持续增加,这个帐应该很简单,不必细算。因此从成本考量我们是动力去做这个改造的。 但是我觉得规模可控范围之内的企业级应用,并且数据价值极高的业务,比如典型的银行,他们还依旧会选择使用Oracle更加合适。 有财力养MySQL专家团队可以搞定一切 由于互联网的集中化部署和维护的特点,使得我们开发和运维团队的价值较高,因此大规模互联网公司有财力聘请专门的MySQL专家技术团队,这些专家可以把MySQL的使用、部署、运维、原理源码都搞得非常透彻,他们有能力搞定MySQL出现的一切问题

Mysql主从复制

China☆狼群 提交于 2019-12-09 16:54:59
Mysql传统主从复制 参考文章 官方文档: https://dev.mysql.com/doc/refman/5.7/en/replication.html 深入Mysql复制: https://www.cnblogs.com/f-ck-need-u/p/9155003.html sync_binlog字段解释: https://www.cnblogs.com/Cherie/p/3309503.html Mysql error 1236原因和解决方法: https://www.cnblogs.com/zhoujinyi/p/4760184.htmll Mysql配置详解: https://www.jianshu.com/p/b0cf461451fb 一、基本概念和原理 概念 官方文档 : Replication enables data from one MySQL database server (the master) to be copied to one or more MySQL database servers (the slaves). Replication is asynchronous by default; slaves do not need to be connected permanently to receive updates from the

单表60亿记录等大数据场景的MySQL优化和运维之道 | 高可用架构

天涯浪子 提交于 2019-12-08 18:18:57
此文是根据杨尚刚在【QCON高可用架构群】中,针对MySQL在单表海量记录等场景下,业界广泛关注的MySQL问题的经验分享整理而成,转发请注明出处。 杨尚刚,美图公司数据库高级DBA,负责美图后端数据存储平台建设和架构设计。前新浪高级数据库工程师,负责新浪微博核心数据库架构改造优化,以及数据库相关的服务器存储选型设计。 前言 MySQL数据库大家应该都很熟悉,而且随着前几年的阿里的去IOE,MySQL逐渐引起更多人的重视。 MySQL历史 1979年,Monty Widenius写了最初的版本,96年发布1.0 1995-2000年,MySQL AB成立,引入BDB 2000年4月,集成MyISAM和replication 2001年,Heikki Tuuri向MySQL建议集成InnoDB 2003发布5.0,提供了视图、存储过程等功能 2008年,MySQL AB被Sun收购,09年推出5.1 2009年4月,Oracle收购Sun,2010年12月推出5.5 2013年2月推出5.6 GA,5.7开发中 MySQL的优点 使用简单 开源免费 扩展性“好”,在一定阶段扩展性好 社区活跃 性能可以满足互联网存储和性能需求,离不开硬件支持 上面这几个因素也是大多数公司选择考虑MySQL的原因。不过MySQL本身存在的问题和限制也很多,有些问题点也经常被其他数据库吐槽或鄙视

mysql 海量数据的存储和访问解决方案

白昼怎懂夜的黑 提交于 2019-12-08 18:11:08
第1章 引言 随着互联网应用的广泛普及,海量数据的存储和访问成为了系统设计的瓶颈问题。对于一个大型的互 联网应用,每天几十亿的PV无疑对数据库造成了相当高的负载。对于系统的稳定性和扩展性造成了极大的问题。通过数据切分来提高网站性能,横向扩展数据层已 经成为架构研发人员首选的方式。 水平切分数据库,可以降低单台机器的负载,同时最大限度的降低了宕机造成的损失。通过负载均衡策略,有效的降低了单台机 器的访问负载,降低了宕机的可能性;通过集群方案,解决了数据库宕机带来的单点数据库不能访问的问题;通过读写分离策略更是最大限度了提高了应用中读取 (Read)数据的速度和并发量 。目前国内的大型互联网应用中,大量的采用了这样的数据切分方案,Taobao,Alibaba,Tencent,它们大都实现了自己的分布式数据访问层(DDAL)。以实现方式和实现的层次来划分,大概分为两个层次(Java应用为例):JDBC层的封装,ORM框架层的 实现。就JDBC层的直接封装而言,现在国内发展较好的一个项目是被称作“变形虫”(Amoeba)的项目,由阿里集团的研究院开发,现在仍然处于测试阶 段(beta版),其运行效率和生产时效性有待考究。就ORM框架层的实现而言,比如Taobao的基于ibatis和Spring的的分布式数据访问 层,已有多年的应用,运行效率和生产实效性得到了开发人员和用户的肯定

mysql主从配置,读写分离

馋奶兔 提交于 2019-12-08 18:09:16
Mysql主从配置,实现读写分离 大型网站为了软解大量的并发访问,除了在网站实现分布式负载均衡,远远不够。到了数据业务层、数据访问层,如果还是传统的数据结构,或者只是单单靠一台服务器扛,如此多的数据库连接操作,数据库必然会崩溃,数据丢失的话,后果更是 不堪设想。这时候,我们会考虑如何减少数据库的联接,一方面采用优秀的代码框架,进行代码的优化,采用优秀的数据缓存技术如:memcached,如果资金丰厚的话,必然会想到假设服务器群,来分担主数据库的压力。Ok切入今天微博主题,利用MySQL主从配置,实现读写分离,减轻数据库压力。这种方式,在如今很多网站里都有使用,也不是什么新鲜事情,今天总结一下,方便大家学习参考一下。 概述:搭设一台Master服务器(win8.1系统,Ip:192.168.0.104),搭设两台Slave服务器(虚拟机——一台Ubuntu,一台 Windows Server 2003) 原理:主服务器(Master)负责网站NonQuery操作,从服务器负责Query操作,用户可以根据网站功能模特性块固定访问Slave服务器,或者自己写个池或队列,自由为请求分配从服务器连接。主从服务器利用MySQL的二进制日志文件,实现数据同步。二进制日志由主服务器产生,从服务器响应获取同步数据库。 具体实现: 1、在主从服务器上都装上MySQL数据库 (1

MySQL海量数据分布式存储

心不动则不痛 提交于 2019-12-08 18:09:06
 本文只是一个概念,具体配置太多,这里不做细节描述。   1、分布式应用的概念和优势   分布式数据库是指利用高速网络将物理上分散的多个数据 存储 单元连接起来组成一个逻辑上统一的数据库。分布式数据库的基本思想是将原来集中式数据库中的数据分散存储到多个通过网络连接的数据存储节点上,以获得更大的存储容量和更高的并发访问量。近年来,随着数据量的增长,分布式数据库技术也得到了快速的发展,传统的关系型数据库开始从集中式模型向分布式存储,从集中式计算走向分布式计算。   分布式数据库系统的主要目的是容灾、异地数据备份,并且通过就近访问原则,用户可以就近访问数据库节点,这样就实现了异地的负载均衡。同时,通过数据库之间的数据传输同步,可以分布式保持数据的一致性,这个过程完成了数据备份,异地存储数据在单点故障的时候不影响服务的访问,只需要将访问流量切换异地镜像就行。   分布式数据库应用的优势如下:   (1)适合分布式数据管理,能够有效提高系统性能。   (2)系统经济性和灵活性好。   (3)系统的可靠性和可用性强。   2、mysql分布式应用的主要技术   (1)mysql数据切割   数据切割(sharding)是指通过某种特定的条件,将存放在同一数据库中的数据分散存放到多个数据库(主机)上面,以达到分散单台设备负载的效果。数据切分还可以提高系统的总体可用性,因为单台crash之后

Linux学习-基于CentOS7的ProxySQL实现读写分离

时间秒杀一切 提交于 2019-12-08 00:00:31
一、实验环境  主机:3台,一台ProxySQL(192.168.214.37),两台主从复制,master(192.168.214.17),slave(192.168.214.27)  系统:CentOS7.6  数据库:mariadb-server-5.5.60(光盘yum源)  ProxySQL:proxysql-1.4.16 二、相关步骤 1、实现读写分离前,先实现主从复制,即master(192.168.214.17),slave(192.168.214.27)实现主从复制,实现方法可参照:https://www.cnblogs.com/hovin/p/11990677.html 2、安装ProxySQL,在192.168.214.37这台主机上操作,安装方法有  基于RPM下载安装:https://github.com/sysown/proxysql/releases  基于YUM仓库安装:   cat <<EOF | tee /etc/yum.repos.d/proxysql.repo   [proxysql_repo]   name= ProxySQL YUM repository   baseurl=http://repo.proxysql.com/ProxySQL/proxysql-1.4.x/centos/\$releasevergpgcheck=1  

【转载】数据库水平切分的实现原理解析

一曲冷凌霜 提交于 2019-12-07 16:30:55
这篇文章很不错。对 数据库水平扩展技术的前因后果讲解得比较透。转载来与大家分享(原始出处我已经找不到了,应该是来自于阿里的同学们)。 ------------------------------------------ 1 引言 随着互联网应用的广泛普及,海量数据的存储和访问成为了系统设计的瓶颈问题。对于一个大型的互联网应用,每天几十亿的PV无疑对数据库造成了相当高的负载。对于系统的稳定性和扩展性造成了极大的问题。通过数据切分来提高网站性能,横向扩展数据层已经成为架构研发人员首选的方式。水平切分数据库,可以降低单台机器的负载,同时最大限度的降低了了宕机造成的损失。通过负载均衡策略,有效的降低了单台机器的访问负载,降低了宕机的可能性;通过集群方案,解决了数据库宕机带来的单点数据库不能访问的问题;通过读写分离策略更是最大限度了提高了应用中读取(Read)数据的速度和并发量。目前国内的大型互联网应用中,大量的采用了这样的数据切分方案,Taobao,Alibaba,Tencent,它们大都实现了自己的分布式数据访问层(DDAL)。以实现方式和实现的层次来划分,大概分为两个层次(Java应用为例):JDBC层的封装,ORM框架层的实现。就JDBC层的直接封装而言,现在国内发展较好的一个项目是被称作“变形虫”(Amoeba)的项目,由阿里集团的研究院开发,现在仍然处于测试阶段(beta版)

MYSQL面试必读

孤人 提交于 2019-12-07 16:03:36
Mysql 的存储引擎,myisam和innodb的区别。 答: 1.MyISAM 是非事务的存储引擎,适合用于频繁查询的应用。表锁,不会出现死锁,适合小数据,小并发。 2.innodb是支持事务的存储引擎,合于插入和更新操作比较多的应用,设计合理的话是行锁(最大区别就在锁的级别上),适合大数据,大并发。 数据表类型有哪些 答:MyISAM、InnoDB、HEAP、BOB,ARCHIVE,CSV等。 MyISAM:成熟、稳定、易于管理,快速读取。一些功能不支持(事务等),表级锁。 InnoDB:支持事务、外键等特性、数据行锁定。空间占用大,不支持全文索引等。 MySQL数据库作发布系统的存储,一天五万条以上的增量,预计运维三年,怎么优化? a. 设计良好的数据库结构,允许部分数据冗余,尽量避免join查询,提高效率。 b. 选择合适的表字段数据类型和存储引擎,适当的添加索引。 c. mysql库主从读写分离。 d. 找规律分表,减少单表中的数据量提高查询速度。 e。添加缓存机制,比如memcached,apc等。 f. 不经常改动的页面,生成静态页面。 g. 书写高效率的SQL。比如 SELECT * FROM TABEL 改为 SELECT field_1, field_2, field_3 FROM TABLE. 对于大流量的网站,您采用什么样的方法来解决各页面访问量统计问题?