MySQL高可用方案
文章平均质量分 94
讨论MySQL复制与keepalived、LVS、heartbeat、haproxy、MHA、MMM、MySQL Router、MySQL Fabric等常用高可用方案的实现。
wzy0623
25年的数据库、数据仓库、大数据相关工作。《Hadoop构建数据仓库实践》、《HAWQ数据仓库与数据挖掘实战》、《SQL机器学习库——MADlib技术解析》、《MySQL高可用实践》、《Kettle构建Hadoop ETL》、《Greenplum构建实时数据仓库实践》作者。
展开
-
Galera Cluster for MySQL 详解(五)——负载均衡
Galera负载均衡器(Galera Load Balancer,GLB)为客户端请求提供了一个简单的TCP连接平衡功能,其与Galera Cluster的关系类似于MySQL Router之于组复制。它从另一个轻量级负载均衡器Pen中汲取灵感,开发考虑了可伸缩性和性能,但仅限于平衡TCP连接。GLB提供了以下几个功能:支持在运行时配置后端服务器。 支持服务器排除(drain...原创 2020-02-29 14:50:18 · 1594 阅读 · 0 评论 -
MySQL高可用之DRBD
目录一、DRBD简介1. 工作原理2. DRBD 支持的底层设备3. DRBD资源4. DRBD 配置工具5. DRBD与RAID1区别6. DRBD与共享存储二、DRBD安装配置1. 实验环境2. 配置前准备3. 下载安装DRBD4. 配置DRBD四、测试MySQL数据同步五、heartbeat+DRBD+mysql高可用方案1....原创 2019-11-14 17:24:33 · 4803 阅读 · 0 评论 -
Galera Cluster for MySQL 详解(四)——性能测试
目录一、测试目标二、测试规划三、测试过程1. 缺省配置2. 多线程3. 流控四、测试结论参考: 本篇使用tpcc-mysql压测工具对实验环境的三节点Galera集群进行一系列性能测试。一、测试目标验证Galera的同步复制,检查是否存在复制延迟。 对比Galera与MySQL组复制的每秒事务数(TPS)。 验证多线程复制对Galera...原创 2019-10-31 16:29:05 · 2308 阅读 · 0 评论 -
Galera Cluster for MySQL 详解(三)——管理监控
目录一、管理1. 在线DDL(1)TOI(2)RSU(3)pt-online-schema-change2. 恢复主组件(1)了解主组件状态(2)修改保存的主组件状态3. 重置仲裁(1)查找最高级的节点(2)重置仲裁(3)自动引导(4)手动引导4. 管理流控(1)监控流控(2)配置流控5. 自动逐出(1)配置自动逐出(2)...原创 2019-10-30 15:29:01 · 5052 阅读 · 0 评论 -
Galera Cluster for MySQL 详解(二)——安装配置
目录一、Galera集群实验环境二、初始安装1. 安装galera-3、mysql-wsrep-5.7、Percona-XtraBackup-2.4.152. 修改配置文件3. 初始化集群4. 启动集群其它节点的mysqld服务5. 验证安装6. 问题排查三、使用SST增加节点四、使用IST增加节点1. 设置gcache.size2. IST测试...原创 2019-10-17 15:24:47 · 4769 阅读 · 3 评论 -
Galera Cluster for MySQL 详解(一)——基本原理
目录一、同步复制二、Galera复制架构1. wsrep api2. 全局事务ID(global transaction id,GTID)3. Galera复制插件4. 组通信插件三、Galera复制工作原理四、状态转移1. 状态快照传输2. 增量状态转移3. 写集缓存(gcache)五、流控1. 流控原理2. 理解节点状态3. 节点状态...原创 2019-10-12 17:49:34 · 25147 阅读 · 4 评论 -
MySQL Router 8 详解
目录一、功能介绍1. 透明路由2. 元数据缓存3. 简单重定向4. MySQL Router 8.0的新特性二、安装与启动1. 安装2. 启动三、配置1. 配置文件位置2. 配置文件语法3. 配置文件示例 MySQL Router最早是作为MySQL-Proxy的替代方案出现的。作为一个轻量级中间件,MySQL Router可在应用...原创 2019-09-03 15:35:32 · 16629 阅读 · 6 评论 -
重叠时间段问题优化算法详解
目录一、问题提出1. 描述2. 分析二、优化重叠查询1. 自关联2. 游标+内存临时表三、改进取得活跃时段的算法1. 最小范围算法(表连接)2. 正负计数器算法(一次扫描)四、MySQL 8的单条查询解决方案一、问题提出1. 描述 这是一个实际业务需求中的问题。某一直播业务表中记录了如下格式的用户进出直播间日志数据:+----...原创 2019-08-26 09:59:42 · 6409 阅读 · 0 评论 -
将MySQL去重操作优化到极致
目录一、巧用索引与变量1. 无索引对比测试(1)使用相关子查询(2)使用表连接(3)使用变量2. 建立created_time和item_name上的联合索引对比测试(1)使用相关子查询(2)使用表连接(3)使用变量(4)使用变量,并且消除嵌套查询二、利用窗口函数三、多线程并行执行1. 数据分片(1)查询出4份数据的created_time边...原创 2019-07-31 15:04:11 · 12650 阅读 · 16 评论 -
快速生成数字辅助表
数字辅助表只有一个整数列,包含从1到N个整数序列值,N通常很大。对MySQL来讲,数字辅助表是一个强大的工具,编写SQL语句时经常用数据表与数字辅助表做笛卡尔积来创建额外的行。建议创建一个持久的数据辅助表,并根据需要填充一定数据量的值。 实际上如何填充数字辅助表无关紧要,因为只需要运行这个过程一次,不过还是可以对此过程进行优化。假设需要为如下数字辅助表生成数据:...原创 2019-07-31 10:08:53 · 966 阅读 · 1 评论 -
MySQL 8 复制(十)——组复制性能与限制
目录一、组复制性能1. 概述2. 测试规划3. 消息压缩4. 组通信线程循环5. 写入集6. 流控7. 其它配置8. 主从、半同步、组复制性能对比测试二、组复制要求与限制1. 组复制要求2. 组复制限制一、组复制性能1. 概述 组复制的基本保证是,只有在组中的大多数节点接收到事务并且就并发事务的相对顺序达成一致之后,才会提交...原创 2019-07-30 15:08:53 · 4002 阅读 · 4 评论 -
MySQL 8 复制(九)——组复制联机配置
目录一、配置组复制模式1. 单主模式2. 多主模式3. 联机配置组复制模式4. 配置并发写实例数5. 设置组的通信协议版本二、保证数据一致性1. 组复制数据一致性简介2. 防止主库故障转移造成的过时读取3. 选择适当的一致性级别4. 一致性级别范围5. 一致性级别的影响三、其它配置1. 调整恢复2. 网络分区一、配置组复制模式 ...原创 2019-07-19 18:06:28 · 1904 阅读 · 2 评论 -
MySQL 8 复制(八)——组复制安装部署
目录一、部署单主模式组复制1. 安装MGR插件2. 准备配置文件3. 重启主库实例4. 启动组复制5. 向组中添加实例二、组复制监控三、容错示例1. 一个SECONDARY实例正常shutdown2. 一个SECONDARY实例异常shutdown3. PRIMARY实例正常shutdown4. PRIMARY实例异常shutdown ...原创 2019-07-12 16:16:31 · 3370 阅读 · 1 评论 -
MySQL 8 复制(七)——组复制基本原理
目录一、MySQL复制技术1. 主从复制 2. 组复制二、组复制使用场景三、组复制相关服务1. 故障检测2. 组成员服务3. 容错四、组复制技术细节1. 组复制插件体系结构2. 复制组3. 数据操作语言(Data Manipulation Language,DML)4. 数据定义语句(Data Definition Language,...原创 2019-07-09 16:41:35 · 6226 阅读 · 1 评论 -
MySQL 8 复制(六)——拓扑与性能
目录一、复制拓扑1. 一主一(多)从2. 双(多)主复制4. 多源复制5. Blackhole引擎与日志服务器二、复制性能1. 测试规划2. sync_binlog与innodb_flush_log_at_trx_commit3. 组提交与多线程复制4. 基于WriteSet的多线程复制 可以在任意个主从库之间建立复杂的复制拓扑结构,如普通...原创 2019-07-04 16:39:59 · 4150 阅读 · 0 评论 -
MySQL 8 复制(五)——配置GTID复制
目录一、配置GTID复制1. 联机配置GTID复制2. 联机更改复制模式3. GTID相关系统变量二、GTID运维1. 跳过一个事务2. mysqldump导出3. 主从切换三、GTID限制四、GTID集合运算函数1. GTID内置函数2. 用户自定义函数3. 使用示例 上篇解释了许多GTID的原理,以及在MySQL复制中所起的作...原创 2019-06-14 17:10:25 · 6550 阅读 · 3 评论 -
MySQL 8 复制(四)——GTID与复制
目录一、GTID简介1. 什么是GTID2. GTID的格式与存储二、GTID生命周期1. 典型事务的GTID生命周期2. GTID分配3. gtid_next系统变量4. gtid_purged系统变量三、GTID自动定位 MySQL复制中使用的事务类型有以下两种:GTID事务:在二进制日志中每个GTID事务始终都以Gtid_log_ev...原创 2019-06-06 17:52:03 · 9001 阅读 · 8 评论 -
MySQL 8 复制(三)——延迟复制与部分复制
目录一、延迟复制1. 延迟复制简介2. 延迟复制时间戳3. 监控延迟复制二、部分复制1. 简介2. 评估数据库级复制和二进制日志选项3. 评估表级复制选项4. 复制规则应用5. 部分复制示例三、主从切换1. 计划内切换2. 计划外切换一、延迟复制1. 延迟复制简介 即使通常MySQL复制很快,但MySQL缺省的复制存在延...原创 2019-05-28 17:56:41 · 3956 阅读 · 8 评论 -
MySQL 8 复制(二)——半同步复制
目录一、简介二、性能提升1. 支持发送二进制日志事件和接收ACK的异步化2. 控制主库接收确认反馈从库的数量3. 二进制日志互斥锁改进三、数据一致性1. 源码剖析2. rpl_semi_sync_master_wait_point的配置3. sync_binlog的配置4. sync_relay_log的配置四、管理接口五、在MySQL 8上安...原创 2019-05-16 18:01:45 · 6706 阅读 · 8 评论 -
MySQL 8 复制(一)——异步复制
目录一、MySQL异步复制介绍1. 复制的用途2. 复制如何工作3. 两阶段提交二、复制实验环境三、安装mysql-8.0.16四、配置异步复制1. 空库2. 脱机3. 联机一、MySQL异步复制介绍 简单说,复制就是将来自一个MySQL数据库服务器(主库)的数据复制到一个或多个MySQL数据库服务器(从库)。传统的MySQL复制提供了...原创 2019-05-10 18:25:10 · 8113 阅读 · 13 评论 -
MySQL Fabric实验(一)HA
一、概述 MySQL Fabric这一新的架构为MySQL提供了高可用和向外扩展的特性。本实验专注于高可用。高可用指的是系统提供持续服务的能力。下图显示了一个系统中应该为服务可用提供的不同层次。 MySQL Fabric在MySQL复制上增加了一个管理和监控层,它和一组MySQL Fabric-aware连接器一起,把写和一致性读操作路由的当前的主服务器原创 2015-12-28 15:07:12 · 2419 阅读 · 1 评论 -
MySQL Fabric实验(二)Sharding
一、概述 MySQL Fabric这一新的架构为MySQL提供了高可用和向外扩展的特性。本实验专注于使用Fabric对多个MySQL服务器进行读写实现向外扩展。当单个MySQL服务器(或HA组)的写性能达到极限时,可以使用Fabric把数据分布到多个MySQL服务器组。注意这里说的组可以是单一服务器,也可以是HA组。管理员通过建立一个分片映射定义数据如何在多个服务中分片。一个分片原创 2015-12-31 14:03:56 · 2014 阅读 · 0 评论 -
MySQL Fabric实验(三)HA与Sharding
实验步骤:1. 安装虚拟机 使用VirtualBox安装四个CentOS release 6.4虚拟机,安装Python 2.6或以上版本,关闭iptables和selinux。虚拟机和网卡说明如下表所示。主机名内部网络IP说明fab_connector192.168.56.101安装原创 2016-01-02 11:21:19 · 2244 阅读 · 0 评论 -
使用Keepalived实现MySQL主从高可用
目录一、问题提出二、方案选择三、Keepalived简介1. VRRP1.1 VRRP协议1.2 工作机制2. Keepalived设计与实现1.1 多进程模式1.2 控制面板1.3 看门狗1.4 IPVS封装四、安装配置1. 安装keepalived软件2. 主从的配置文件修改五、测试参考:一、问题提出 由于公...原创 2018-07-04 18:15:48 · 34111 阅读 · 6 评论 -
Keepalived+LVS+MySQL双主复制实现读写负载均衡及高可用
目录一、Keepalived和LVS简介1. Keepalived简介2. LVS简介二、安装配置1. 下载安装LVS2. 下载安装Keepalived3. Keepalived配置5. 编写RealServer的网络配置脚本三、测试四、总结参考: 上一篇我们使用Keepalived的HA功能,实现MySQL主从复制的自动故障切换。它的...原创 2018-07-12 15:17:22 · 6756 阅读 · 4 评论 -
Keepalived+LVS+MySQL主从复制实现读写分离及高可用
目录一、架构设计二、安装配置1. 配置MySQL半同步复制1.1半同步复制的基本概念1.2半同步复制的潜在问题1.3 半同步复制的安装部署2. 下载安装LVS3. 下载安装Keepalived4. iptables配置5. Keepalived配置5. 编写RealServer的网络配置脚本6. 启动RealServer和Keepalived三、...原创 2018-07-14 18:20:02 · 4933 阅读 · 0 评论 -
使用MySQL Router实现高可用、负载均衡、读写分离
目录一、MySQL Router简介1. 功能2. 架构3. 使用二、安装配置三、自动失败切换四、负载均衡五、读写分离六、多实例1. 环境2. 配置文件3. 功能测试参考:一、MySQL Router简介 MySQL Router是MySQL官方提供的一个轻量级中间件,可以在应用程序与MySQL服务器之间提供透明的路由方式。...原创 2018-07-18 19:25:04 · 38930 阅读 · 6 评论 -
使用Heartbeat实现MySQL主从高可用
目录一、Heartbeat简介二、安装Heartbeat1. 下载软件包2. 初始配置三、配置1. 编辑配置文件ha.cf2. 编辑认证文件authkeys3. 编辑资源配置文件haresources4. 创建MySQL服务检测脚本四、测试参考: 前面我们使用Keepalived实现MySQL主从复制的失败自动切换,参见“使用Keepa...原创 2018-07-24 17:50:36 · 5484 阅读 · 2 评论 -
Heartbeat + haproxy + MySQL双主复制 实现读写负载均衡及高可用
目录一、中间件简述1. Heartbeat简介2. haproxy简介二、安装配置1. 基本环境2. 配置MySQL双主复制3. 安装配置haproxy4. 安装配置Heartbeat5. 创建MySQL服务检测脚本三、功能测试1. 验证haproxy的负载均衡轮询策略2. 验证MySQL的高可用性3. 验证宕机重新上线后自动添加到haproxy...原创 2018-07-26 13:47:10 · 2368 阅读 · 0 评论 -
Heartbeat + haproxy + MySQL主从复制 实现读写分离及高可用
目录一、架构设计1. 基本环境2. 架构二、安装配置1. 配置MySQL半同步复制2. 安装配置haproxy3. 安装配置Heartbeat4. 创建相关脚本文件5. 启动Heartbeat和haproxy三、功能测试参考:一、架构设计1. 基本环境 OS:CentOS Linux release 7.2.1511 (Core...原创 2018-07-27 13:22:11 · 3377 阅读 · 3 评论 -
使用MHA实现MySQL主从复制高可用
目录一、MHA简介二、实验架构设计1. 基本环境2. 架构设计三、MHA安装配置1. 配置主从复制2. 安装Perl等依赖模块3. 配置SSH登录无密码验证4. 安装MHA Node5. 安装MHA Manager6. 配置MHA7. 创建相关脚本四、检查MHA配置1. 检查SSH配置2. 检查整个复制环境状况3. 检查MHA Man...原创 2018-07-31 16:37:10 · 26203 阅读 · 4 评论 -
使用MMM实现MySQL双主复制高可用
一、MMM简介1. 概述 MMM(Master-Master replication manager for MySQL)是一套支持双主故障切换和双主日常管理的脚本程序。MMM使用Perl语言开发,主要用来监控和管理MySQL Master-Master(双主)复制,可以说是mysql主主复制管理器。虽然叫做双主复制,但是业务上同一时刻只允许对一个主进行写入,另一台备选主上提...原创 2018-08-02 15:45:04 · 1439 阅读 · 0 评论 -
InnoDB Cluster详解
目录一、InnoDB Cluster简介1. 整体架构2. MySQL Shell3. MySQL Router4. MySQL服务器集群二、创建InnoDB Cluster1. 检查实例配置2. 配置实例3. 创建集群4. 向集群添加实例5. 查看集群状态6. 基于已有组复制的集群创建7. 配置MySQL Router8. 客户端连接测试...原创 2019-09-12 18:42:00 · 14083 阅读 · 10 评论 -
快速安全删除MySQL大表
目录一、表删除过程1. buffer pool清除2. 删除表相关的磁盘文件二、创建硬链接三、删除表四、删除文件释放空间参考: 在一个高负载的生产数据库上删除大表需要一些技巧,倘若直接drop table,将产生大量磁盘I/O,严重的会卡库,这是高可用服务所不能接受的。要优化删除表,需要了解其内部执行过程。一、表删除过程 表删除原...原创 2019-10-07 18:33:58 · 2709 阅读 · 11 评论