mysql读写分离

MySQL主主同步方案

China☆狼群 提交于 2019-12-02 09:14:22
MySQL主主+Keepalived MySQL+DRBD+Heartbeat 在企业中,数据库高可用一直是企业的重中之重,中小企业很多都是使用mysql主主方案,一主多从,读写分离等,但是单主存在单点故障,从库切换成主库需要作改动。因此,如果是双主或者多主,就会增加mysql入口,增加高可用。不过多主需要考虑自增长ID问题,这个需要特别设置配置文件,比如双主,可以使用奇偶,总之,主之间设置自增长ID相互不冲突就能完美解决自增长ID冲突问题。 主主方案实现思路 1、 两台mysql都可读写,互为主备。默认只使用一台masterA负责数据的写入,另一台masterB备用处于备用状态; 2、 masterA是masterB的主库,masterB又是masterA的主库,它们互为主从; 3、 两台主库之间做高可用,可以采用keepalived等方案,使用VIP对外提供服务; 4、所有提供服务的从服务器与masterB进行主从同步(双主多从); 5、建议采用高可用策略的时候,masterA或masterB均不因宕机恢复后而抢占VIP(非抢占模式); 这样做可以在一定程度上保证主库的高可用,在一台主库down掉之后,可以在极短的时间内切换到另一台主库上,尽可能减少主库宕机对业务造成的影响,减少了主从同步给生产主库带来的压力; 但是也有几个不足的地方: masterB可能会一直处于空闲状态

数据库水平切分的实现原理解析---分库,分表,主从,集群,负载均衡器

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

读写分离之Atlas

不想你离开。 提交于 2019-12-02 05:56:06
1、atlas介绍 Atlas是由Qihoo 360公司Web平台部基础架构团队开发维护的一个基于MySQL协议的数据中间层项目。它在MySQL官方推出的 MySQL-Proxy 0.8.2 版本的基础上,修改了大量bug,添加了很多功能特性。目前该项目在360公司内部得到了广泛应用,很多MySQL业务已经接入了Atlas平台,每天承载的读写请求数达几十亿条。同时,有超过50家公司在生产环境中部署了Atlas,并且这些数字还在不断增加。 2、安装atlas 官方提供的Atlas有两种 Atlas ( 普通 ) : Atlas-2.2.1.el6.x86_64.rpm Atlas ( 分表 ) : Atlas-sharding_1.0.1-el6.x86_64.rpm 我们只需要下载普通的即可。 安装步骤: 进入 /usr/local 目录,创建文件夹 AtlasSrc [root@localhost ~]# cd /usr/local/ [root@localhost local]# mkdir AtlasSrc [root@localhost local]# cd AtlasSrc/ [root@localhost AtlasSrc]# 将 Atlas 安装包复制进来目录 AtlasSrc 下 ( 复制过程略 ) 安装atlas rpm -i Atlas-2.2.1.el6

MySQL 主从复制

醉酒当歌 提交于 2019-12-02 05:09:44
背景 公司内部 MySQL 只有一部,现在需要添加一个从库。办法把现有的 MySQL变成主库,新搭建一台 MySQL从库,组成一主一从让开发配置读写分离。 操作系统 CentOS 7.4 64bit MySQL主库 192.168.0.237 MySQL从库 192.168.0.227 MySQL 主从复制图解 1. 从库执行 change master to ,ip pot user password binlog position 信息写入到 master.info 2. 从库执行 start slave 时,从库会启动 IO 线程 和 SQL 线程 3. IO_T 会读取 master.info 信息,获取主库信息连接主库 4. 主库会生成一个准备 binlog 的 DUMP 线程,来响应从库 5. IO_T 根据 master.info 记录的 binlog 文件名和 position 号,请求主库 DUMP 线程最新的日志 6. DUMP 线程检查主库的 binlog 日志,如果有新的,TP(传送)给从从库的 IO_T 7. IO_T 将收到的日志存储到了 TCP/IP 缓存,立即返回 ACK 给主库,主库工作完成 8. IO_T 将缓存中的数据,存储到 relay-log 日志文件, 更新 master.info 文件 binlog 文件名和 postion,IO_T

MyCat教程一:MyCat的简单介绍

徘徊边缘 提交于 2019-12-02 03:20:40
MyCat教程二:mysql主从复制实现 MyCat教程三:安装及配置介绍 MyCat教程四:实现读写分离 MyCat教程五:实现分库分表 MyCat教程六:全局序列号-全局主键的自增长 一、MyCat简介 1. 什么是MyCat   MyCat 是目前最流行的 基于 java 语言编写的 数据库中间件 ,是一个实现了 MySQL 协议的服务器,前端用户可以把它看作是一个数据库代理,用 MySQL 客户端工具和命令行访问,而其后端可以用 MySQL 原生协议与多个 MySQL 服务器通信,也可以用 JDBC 协议与大多数主流数据库服务器通信,其核心功能是 分库分表 。配合数据库的主从模式还可实现 读写分离 。   MyCat 是基于阿里开源的 Cobar 产品而研发,Cobar 的稳定性、可靠性、优秀的架构和性能以及众多成熟的使用案例使得 MyCat 变得非常的强大。   MyCat 发展到目前的版本,已经不是一个单纯的 MySQL 代理了,它的后端可以支持MySQL、SQL Server、Oracle、DB2、PostgreSQL 等主流数据库,也支持 MongoDB 这种新型NoSQL 方式的存储,未来还会支持更多类型的存储。而在最终用户看来,无论是那种存储方式,在 MyCat 里,都是一个传统的数据库表,支持标准的 SQL 语句进行数据的操作,这样一来,对前端业务系统来说

redhat6.5 mysql proxy代理及主从同步及读写分离

主宰稳场 提交于 2019-12-02 00:53:15
redhat6.5 mysql proxy代理及主从同步及读写分离 1.上传及安装所需要的软件包和语言 2.解压 mysql-proxy到 /usr/local/下,并重新命名(可以不重新命名,主要太长闲麻烦) 3.修改环境变量 编译环境变量使其生效 4.配置读写分离 5.配置2台数据库(最后保持一致),创建数据库表及数据,付权限,我创建如下: 6.启动mysql-proxy mysql-proxy --proxy-read-only-backend-addresses=192.168.189.203:3306 --proxy-backend-addresses=192.168.189.204:3306 --proxy-lua-script=/usr/local/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua 7.查看监听端量是否正常(4040默认) 8.测试 (代理服务器 ip:207, 特别说明代理要连接自己不是连接其他数据库ip,不然就连接不上 我自己犯的错误:截图说明 ) 错误记录: 写入(ip 204) 读(ip:203) ( 证明读写分离成功!但是不能主从同步!接下来我们做主从同步 ) 来源: oschina 链接: https://my.oschina.net/u/1861462/blog/738476

浅谈事务

僤鯓⒐⒋嵵緔 提交于 2019-12-01 23:03:18
1、事务是什么。 事务( Transaction)是并发控制的基本单位。所谓的事务, 它 是应用程序中一系列严密的操作,所有操作必须成功完成,否则在每个操作中所作的所有更改都会被撤消。也就是事务具有原子性,一个事务中的一系列的操作要么全部成功,要么一个都不做。 (数据库引擎innoDB是支持事务的(默认每一条sql语句为一个事务),MyISAM不支持事务。) 在关系数据库中 ,一个事务可以是一条SQL语句、一组SQL语句或整个程序。 开启事务: Start Transaction 事务结束: End Transaction 提交事务: Commit Transaction 回滚事务: Rollback Transaction 在 MySQL中,默认情况下,事务是自动提交的,也就是说,只要执行一条DML语句就开启了事物,并且提交了事务 以上的自动提交机制是可以关闭的 对 t_user进行提交和回滚操作 提交操作 (事务成功) start transaction DML语句 commit mysql> start transaction;#手动开启事务 mysql> insert into t_user(name) values('pp'); mysql> commit;#commit之后即可改变底层数据库数据 mysql> select * from t_user; +----+--

mysql 分库分表 ~ 总揽分析

人盡茶涼 提交于 2019-12-01 22:05:25
一 简介:分库分表的理解 二 具体: 1 当由于单台DB业务增长导致的服务器压力时,就必须横向进行扩展 2 本文仅从中间层观点进行分析 三 现有方案 方案1 sharding家族 Sharding-JDBC是一款轻量级的Java框架,在JDBC层提供上述核心功能,使用方式与正常的JDBC方式如出一辙,面向Java开发的用户。 Sharding-Proxy是一款实现了MySQL二进制协议的服务器端版本,大家可以把它当成升级版的MySQL数据库使用。独立部署后,即可按照正常MySQL操作方式来使用上述所有的核心功能。 设计 在程序端利用设计控制,根据计算出的路由指定数据库节点. 特点 sharding优势 1 程序端进行控制,非常方便.利用代码计算分片字段,控制分片规则.不会产生性能损耗 2 程序能够封装面对不同种类数据库 sharding问题 1 不支持分布式事务,需要利用路由进行事务操作 2 不支持分布式事务,全局DDL需要到每个分片进行执行 3 不支持动态扩容 4 不具有通用性,因为是根据业务进行设计的 过程 通过对片键的换算绝对分片节点,再通过片键的换算定位分表,达到分片分表目的 方案 2 中间件家族 设计 采用开源界的开源中间件进行设计控制,路由规则和分片都配置在中间件,然后指定后端机器 特点 1 开源中间件分为两种 一种是支持分布式事务,比如cetus mycat

基于Atlas实现mysql读写分离

懵懂的女人 提交于 2019-12-01 20:03:52
一、实验环境 主机名 IP地址 master 192.168.200.111 slave 192.168.200.112 atlas 192.168.200.113 主从复制不再赘述,链接地址: https://blog.csdn.net/weixin_42480196/article/details/102565189https://blog.csdn.net/weixin_42480196/article/details/102565189 授权Atlas登录用户 grant all on *.* to admin@'192.168.200.113' identified by '123'; flush privileges; 二、安装atlas #下载rpm包 wget https://github.com/Qihoo360/Atlas/releases/download/2.2.1/Atlas-2.2.1.el6.x86_64.rpm #安装 rpm -ivh Atlas-2.2.1.el6.x86_64.rpm 三、配置读写分离 加密密码 /usr/local/mysql-proxy/bin/encrypt 123 3yb5jEku5h4= #加密后 配置配置文件,实现读写分离 vim /usr/local/mysql-proxy/conf/test.cnf [mysql

在CentOS7上搭建MySQL主从复制与读写分离

强颜欢笑 提交于 2019-12-01 19:52:55
在 CentOS7上搭建MySQL主从复制与读写分离 MySQL主从复制原理 MySQL的主从复制和MySQL的读写分离两者有着紧密联系,首先要部署主从复制,只有主从复制完成了,才能在此基础上进行数据的读写分离。 ( 1)MySQL支持复制的类型。 1)基于语句的复制。MySQL默认采用基于语句的复制,效率比较高。 2)基于行的复制。把改变的内容复制过去,而不是把命令在从服务器上执行一遍。 3)混合类型的复制。默认采用基于语句的复制,一旦发现基于语句无法精确复制时,就会采用基于行的复制。 ( 2)MySQL复制的工作过程如图所示。 1)在每个事务更新数据完成之前,Master在二进制日志记录这些改变。写入二进制日志完成后,Master通知存储引擎提交事务。 2)Slave将Master的Binary log复制到其中继日志。首先,Slave开始一个工作线程——I/O线程,I/O线程在Master上打开一个普通的链接,然后开始Binlog dump process。Binlog dump process从Master的二进制日志中读取事件,如果已经跟上Master,它会睡眠并等待Master产生新的事件。I/O线程将这些事件写入中继日志。 3)SQL slave thred(SQL从线程)处理该过程的最后一步。SQL线程从中继日志读取事件,并重放其中的事件而更新Slave的数据