mysql读写分离

mysql的主从复制

∥☆過路亽.° 提交于 2020-02-19 14:33:34
1. 为什么需要主从复制?   a. 在复杂的业务中,有一个sql需要锁表,导致不能使用读的服务,影响业务的运行,使用主从复制,让主库写,从库读,保证业务的运行   b. 做数据的热备   c. 架构扩展,业务量原来越大,I/O访问评率过高,做多库存储,提高单个机器的I/O性能 2. 原理(默认采用的是异步的方式,不是强一致性)   MySQL 中有一种日志叫做 bin 日志(二进制日志),这个日志会记录下所有修改了数据库的SQL语句。主从复制的原理其实就是"从"服务器向"主"服务器请求这个日志文件,"主"服务器会把这个 bin 日志复制到"从"服务器上执行一遍,这样"从"服务器上的数据就和"主"服务器上的数据相同了。      主服务器必须启动二进制日志binlog,记录任何修改数据库数据的sql   从服务器开启一个线程(I/O thread)把自己扮演成mysql的客户端,通过mysql协议,请求主服务器的二进制日志文件binlog   主服务器启动一个线程(Dump thread),检查自己二进制日志中的sql,核对参数,对比,将binlog日志发送到从服务器   从服务器接收到主服务器的数据放到中继日志relay log文件中   从服务器启动一个线程sql thread,把relay log中的事件读取出来,在本地执行 3. mysql主从同步延时分析  

Linux实战教学笔记40: Mha-Atlas-MySQL高可用方案实践(二)

你说的曾经没有我的故事 提交于 2020-02-18 07:11:06
六,配置VIP漂移 主机名 IP地址(NAT) 漂移VIP 描述 mysql-db01 eth0:192.168.0.51 VIP:192.168.0.60 系统:CentOS6.5(6.x都可以) 安装:mysql5.6 mysql-db02 eth0:192.168.0.52 VIP:192.168.0.60 系统:CentOS6.5(6.x都可以) 安装:mysql5.6 mysql-db03 eth0:192.168.0.53 VIP:192.168.0.60 系统:CentOS6.5(6.x都可以) 安装:mysql5.6 6.1 IP漂移的两种方式 通过keepalived的方式,管理虚拟IP的漂移 通过MHA自带脚本方式,管理虚拟IP的漂移 6.2 MHA脚本管理方式 (1)获取管理脚本master_ip_failover 提示:yum安装的manager是没有这个脚本的。 我们需要从manager的源码包里复制一个。 [root@mysql-db03 ~]# ll mha4mysql-manager-0.56.tar.gz -rw-r--r--. 1 root root 113914 Sep 4 18:43 mha4mysql-manager-0.56.tar.gz [root@mysql-db03 ~]# tar xf mha4mysql-manager-0.56

mysql 读写分离 ,mysql_proxy实现

醉酒当歌 提交于 2020-02-15 05:02:37
下载安装 mysql_proxy: 解压后 , 该目录包含已经编译好的二进制文件 . 1: 利用 mysql_proxy 实现负载均衡 执行 mysql_proxy ./mysql-proxy-path/bin/mysql-proxy \ --proxy-backend-addresses=192.168.1.1:3306 \ --proxy-backend-addresses=192.168.1.2:3306 2: 连接 mysql_proxy, 用 mysql 客户就可以 , 因为 proxy 是 mysql 的前端代理 注意 proxy 的端口是 4040 mysql -h “proxy 的 IP ” -P 4040 -u username -p password 在连接上之后 , 做 sql 查询 , 却总是往某 1 台 mysql server 来发送 ------ 负载均衡没体现出来 ? 答 : 不是没体现出来 . 均衡不是体现在 sql 语句 , 一会请求 mysqlA 服 , 一会请求 mysqlB 服 . 均衡是体现”连接” 的均衡上 ., mysql_proxy 会把连接 mysql 服务器的 tcp/IP 连接缓存进连接池 , 以提高性能 . 在缓存池里 , 缓存的连接大致是平均分配在每台 mysql 服务器上 . 但具体的每一个连接 , 始终连某台服务器 .

知乎上看的文章

為{幸葍}努か 提交于 2020-02-12 22:15:35
作者:暗灭 链接:https://www.zhihu.com/question/26669731/answer/466936797 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 想了想,还是先画一系列的图,再来解释一下什么是WEB开发. 第一层 入门介绍图 适合:刚入门互联网,没多少基础知识和专业知识. 为嘛这个图上传的不清楚?算了.我也不知道 对于大多数刚刚接触到互联网这个职业的人来说,对于软件是怎么编写的,大概的职业是怎么划分的,理解到这个程度就够了. 整个系统架构可以分成三层(分层是码农必备思维). 第一层,叫展示层,又被称之为前端.展示层这个名字,其实有点不精确,确切的来说,应该叫用户层,或者是输入输出层,或者叫用户交互层. 它的目标很简单,就是接受用户的输入,并将结果反馈给用户. 什么叫做输入呢?键盘,鼠标,声音,图像等等都是输入,最简单的输入就是键盘和鼠标,你们如果看过各种黑客电影,不管是在键盘上啪啪啪,还是在空气中点点点,都是输入. 输出就是展示出来的结果,在屏幕上就是文字动画,在音箱就是声音之类的. 叫展示层的原因,是因为大部分的情况下,都是用户只需要看,少部分才是操作. 所以通常是用展示层来代指用户的输入输出层. 为什么要分层? 其实最早在互联网没有出现之前,分层是一个相对而言,软件设计里的概念.但是在现在,就很简单了

高级篇:Mycat的理解

…衆ロ難τιáo~ 提交于 2020-02-11 17:15:36
目录 一、问题导入 1.1高并发Mysql的速度问题怎么解决? 1.2Mysql 挂了怎么办? 1.3 Mysql 超过500W的数据 二、Mycat 的简介 2.1 Mycat 解决Mysql 的并发压力的思路 2.1.1 分库 2.1.2 分表 2.1.3 好处或者面试 2.1.4 Mycat 额外的好处 2.2 Mycat的安装 2.2.1 Mycat 是Java 语言写的,安装Mycat 必须先安装JDK 2.2.2 Mycat的安装 三、Mycat的名词解释 3.1 虚拟库 3.2 虚拟表 3.3 数据节点(**) 3.4 数据库服务器 四、Mycat的配置文件(*mycat的核心*) 4.1 schema.xml 4.1.1 schema (一个虚拟的库)节点 4.1.2 table 标签 4.1.3 dataNode数据节点 4.1.4 DataHost:数据库的服务器 4.2 rule.xml(路由的规则) 4.2.1 tableRule的节点 4.2.2 function 节点 4.3 server.xml 4.3.1 用户的配置 4.3.2 主键增长的节点 五、实战mycat的配置文件 5.1 写一个schema.xml 文件 5.2 rule.xml 文件(我们没有使用别的规则,它里面自动rule1) 5.3 server.xml 5.4 覆盖默认的mycat

ProxySQL 基础篇

左心房为你撑大大i 提交于 2020-02-10 16:09:03
1、ProxySQL 介绍 ProxySQL 是基于 MySQL 的一款开源的中间件的产品,是一个灵活的 MySQL 代理层, 可以实现 读写分离,支持 Query 路由功能,支持动态指定某个 SQL 进行缓存,支持动态加载(无需重启 ProxySQL 服务),故障切换和一些 SQL 的过滤功能。 介绍:相关 ProxySQL 的网站 https://www.proxysql.com/ https://github.com/sysown/proxysql/wiki    2、环境准备 全新初始化的实例 IP server-id 数据库版本 备注 10.0.0.160 1603306 MySQL 8.0.18 Master(主库)+ ProxySQL2.0.8 10.0.0.161 1613306 MySQL 8.0.18 Slave1(从库) 10.0.0.162 1623306 MySQL 8.0.18 Slave2(从库) ProxySQL 2.0.x 版本支持 MGR 注: 我的 ProxySQL 和 主库放在一起的,我已近配置好了主从复制状态 。这是我的实验环境,实际环境注意实际情况。一般的代理环境结构如上图。 slave 节点的read_only=1 3、ProxySQL 安装与启动 下载 wget https://github.com/sysown/proxysql

第1章 MySQL架构与历史

余生长醉 提交于 2020-02-09 19:54:34
MySQL最重要、最与众不同的特性是它的存储引擎架构,这种架构的设计将查询处理(Query Processing)及其他系统任务(Server Task)和数据的存储/提取相分离。这种处理和存储分离的设计可以在使用时根据性能、特性,以及其他需求来选择数据存储的方式 1.1 MySQL逻辑架构 最上层服务大多数系统都有,连接处理、授权认证、安全等等 第二层包含MySQL的大多数核心功能 第三层包含了存储引擎。存储引擎负责MySQL中数据的存储和提取 1.1.1 连接管理与安全性 每个客户端连接都会在服务器进程中拥有一个线程,这个连接的查询只会在这个单独的线程中执行,该线程只能轮流在某个CPU核心或者CPU中运行。服务器会负责缓存线程,因此不需要为每一个新建的连接创建或者销毁线程。 当客户端连接到MySQL服务器时,服务器需要对其进行认证。认证基于用户名、原始主机信息和密码。如果使用了 安全套接字 SSL)的方式连接,还可以使用X.059证书认证。一旦客户端连接成功,服务器会继续验证该客户端是否具有执行某个特定查询的权限(例如,是否允许客户端对world数据库的Country表执行SELECT语句)。 1.1.2 优化与执行 MySQL会解析查询,并创建内部数据结构,然后对其进行各种优化,包括重写查询、决定表的读取顺序,以及选择合适的索引等。 对于SELECT语句,在解析查询之前

MySQL数据库集群实战(5)———MySQL数据库的读写分离(MySQL-proxy)

纵然是瞬间 提交于 2020-02-07 23:33:09
实现MySQL读写分离的前提是我们已经将MySQL主从复制配置完毕,可参考上一篇关于 MySQL数据库集群实战(2)——MySQL主从复制之异步复制(传统复制postion与GTID) 的文章。配置基于GTID的异步复制。 文章目录 一、MySQL读写分离 1、为什么要进行读写分离 2、读写分离的实现原理 3、mysql中间件服务mysql-proxy 二、搭建MySQL数据库的读写分离 实验环境 实验 测试读写分离 一、MySQL读写分离 1、为什么要进行读写分离 当我们的数据量很大时,数据库服务器的压力变大,这时候我们需要从架构方面来解决这一问题,在一个网站中读的操作很多,写的操作很少,这时候我们需要配置读写分离,把读操作和写操作分离出来,最大程度的利用好数据库服务器。 2、读写分离的实现原理 读写分离的实现原理就是在执行SQL语句的时候,判断到底是读操作还是写操作,把读的操作转向到读服务器上(从服务器,一般是多台),写的操作转到写的服务器上(主服务器,一般是一台,视数据量来看)。 3、mysql中间件服务mysql-proxy mysql-proxy是mysql官方提供的mysql中间件服务,上游可接入若干个mysql-client,后端可连接若干个mysql-server。 它使用mysql协议,任何使用mysql-client的上游无需修改任何代码,即可迁移至mysql

mysql集群与主从复制

冷暖自知 提交于 2020-02-06 02:45:55
mysql的读写分离是通过主从复制来实现的,那么为什么要读写分离呢? 随着用户量的增多,数据库的性能往往会成为一个系统的瓶颈所在,一般系统的“读”压力远远大于“写”压力,所以可以通过数据库的读写分离来提高系统的性能。让主数据库负责“写”操作,从数据库负责“读”操作,从数据库可以部署多个来提高“读”的速度。所以,读写分离可以分担mysql的压力,提供系统的性能和吞吐量 那么主从复制的原理是什么? 1)首先,mysql主数据库在事务提交时会把所有对数据的操作都写入二进制文件binlog中 2)从数据库读取到binlog中的记录,根据这个记录重做数据库操作,通过复制达到数据一致 但是主数据库和从数据库间总会有延迟,如果刚刚保存的数据你就要马上能够读取到,这个时候可以让这次查询去主数据库中执行 接下来实现一个主从复制的小案例 由于本项目的这些服务都是docker的镜像,所以mysql我也想通过docker来安装,这里使用的是5.7版本 docker pull mysql:5.7 首先要创建外部挂载点来挂载容器中的文件 sudo mkdir -p /usr/local/mysql/data sudo mkdir -p /usr/local/mysql/log sudo mkdir -p /usr/local/mysql/conf sudo chmod 775 -R /usr/local

数据库 -- 存储引擎介绍

孤人 提交于 2020-02-05 06:13:48
mysql引擎介绍 1,概念   mysql5.6支持的存储引擎包括InnoDB、MyISAM、MEMORY、CSV、BLACKHOLE、FEDERATED、MRG_MYISAM、ARCHIVE、PERFORMANCE_SCHEMA。其中NDB和InnoDB提供事务安全表,其他存储引擎都是非事务安全表。 mysql支持的存储引擎 MySQL服务器采用了多层设计和独立模块,插件式存储引擎体系结构,允许将存储引擎加载到正在运新的MySQL服务器中,图中的Pluggable Storage Engines部分。采用MySQL服务器体系结构,由于在存储级别上(也就是Pluggable Storage Engines)提供了一致和简单的应用模型和API,应用程序编程人员和DBA可不再考虑所有的底层实施细节。因此,尽管不同的存储引擎具有不同的能力,应用程序是与之分离的。存储引擎就司职与文件系统打交道了。 并发性:某些应用程序比其他应用程序具有很多的颗粒级锁定要求(如行级锁定)。 事务支持:并非所有的应用程序都需要事务,但对的确需要事务的应用程序来说,有着定义良好的需求,如ACID兼容等。 引用完整性:通过DDL定义的外键,服务器需要强制保持关联数据库的引用完整性。 物理存储:它包括各种各样的事项,从表和索引的总的页大小,到存储数据所需的格式,到物理磁盘。 索引支持