 如何用 MySQL 构建全方位高可用应用2015,Oracle 和/或其附属公司。保留所有权利。 5 并不仅仅是可靠地存储数据 支持高可用性的各个层 数据的冗余访问路径 数据冗余存储 冗余应用服务器 数据路由 4/16/2017 版权所有 2015,Oracle 和/或其附属公司。保留所有权利。 6 并不仅仅是可靠地存储数据 支持高可用性的各个层 数据的冗余访问路径 数据冗余存储 冗余应用服务器 数据路由 4/16/2017 版权所有 会话线程:处理来自应用程序的查询 - 将 数据写入主数据库,将关联事件写入二进制 日志 • 转储线程:读取二进制日志中的事件,然后 将其发送到从数据库 • I/O 线程:接收复制事件,并将其存储在从 数据库的中继日志中 • SQL 线程:读取从数据库的中继日志中的复 制事件,然后将其应用到从数据库 MySQL 复制工作流 会话 二进制 日志 主数据库 转储 I/O 中继 MySQL 默认设置 – 并行:主数据库向应 用程序发送确认,在 存储引擎上提交,然 后将事务发送到从数 据库 • 快速 • 如果主数据库停机有可 能丢失更改 •半同步 – MySQL 5.5+ - 在 MySQL 5.7 中进行了 增强 – 串行:主数据库等待 从数据库记录更改并 将更改刷新到磁盘, 然后以并行方式提交 到存储引擎并向应用 程序发送确认 • 中度延迟 • 无损 (MySQL0 码力 | 40 页 | 2.19 MB | 1 年前3 如何用 MySQL 构建全方位高可用应用2015,Oracle 和/或其附属公司。保留所有权利。 5 并不仅仅是可靠地存储数据 支持高可用性的各个层 数据的冗余访问路径 数据冗余存储 冗余应用服务器 数据路由 4/16/2017 版权所有 2015,Oracle 和/或其附属公司。保留所有权利。 6 并不仅仅是可靠地存储数据 支持高可用性的各个层 数据的冗余访问路径 数据冗余存储 冗余应用服务器 数据路由 4/16/2017 版权所有 会话线程:处理来自应用程序的查询 - 将 数据写入主数据库,将关联事件写入二进制 日志 • 转储线程:读取二进制日志中的事件,然后 将其发送到从数据库 • I/O 线程:接收复制事件,并将其存储在从 数据库的中继日志中 • SQL 线程:读取从数据库的中继日志中的复 制事件,然后将其应用到从数据库 MySQL 复制工作流 会话 二进制 日志 主数据库 转储 I/O 中继 MySQL 默认设置 – 并行:主数据库向应 用程序发送确认,在 存储引擎上提交,然 后将事务发送到从数 据库 • 快速 • 如果主数据库停机有可 能丢失更改 •半同步 – MySQL 5.5+ - 在 MySQL 5.7 中进行了 增强 – 串行:主数据库等待 从数据库记录更改并 将更改刷新到磁盘, 然后以并行方式提交 到存储引擎并向应用 程序发送确认 • 中度延迟 • 无损 (MySQL0 码力 | 40 页 | 2.19 MB | 1 年前3
 MySQL 企业版功能介绍Games MySQL 企业版提供了全面的高级功能、管理工具和技术支持,实现了高水平的 MySQL 可扩展性、安全性、可靠性和无故障运行时间。 MySQL 企业版可在开发、部署和管理业务关键型 MySQL 应用的过程中降低风险、削减成本和减 少复杂性。MySQL 企业版具有以下独特优势:  使用 Oracle MySQL 服务云轻松设置、运行和管理云中的 MySQL  使用 、 监视和调优等管理任务。多层安全可以保护您的数据免受外部攻击,同时帮助您实现合规性。自 助式供应可创建预配置的 MySQL 数据库,针对性能进行优化;而自动扩展能够让用户弹性扩展 计算资源、存储资源和 MySQL 副本。 MySQL 数据库 MySQL 凭借经济高效、可靠、高性能且可扩展的电子商务、联机事务处理和嵌入式数据库应用 成为全球使用广泛的开源数据库。它是一种事务安全、符合 访问有助于执行复杂的查询以及快速完成简单快速的键值操作。  平台独立性让您可以灵活地在多个操作系统上开展开发和部署工作。  使用 MySQL 作为 Hadoop 和 Cassandra 的业务数据存储,支持大数据互操作性。 MySQL 企业级备份 MySQL 企业级备份能够执行 MySQL 数据库无阻塞联机备份。除了对所有 InnoDB 数据执行完整、 增量和部分备份以外,MySQL0 码力 | 6 页 | 509.78 KB | 1 年前3 MySQL 企业版功能介绍Games MySQL 企业版提供了全面的高级功能、管理工具和技术支持,实现了高水平的 MySQL 可扩展性、安全性、可靠性和无故障运行时间。 MySQL 企业版可在开发、部署和管理业务关键型 MySQL 应用的过程中降低风险、削减成本和减 少复杂性。MySQL 企业版具有以下独特优势:  使用 Oracle MySQL 服务云轻松设置、运行和管理云中的 MySQL  使用 、 监视和调优等管理任务。多层安全可以保护您的数据免受外部攻击,同时帮助您实现合规性。自 助式供应可创建预配置的 MySQL 数据库,针对性能进行优化;而自动扩展能够让用户弹性扩展 计算资源、存储资源和 MySQL 副本。 MySQL 数据库 MySQL 凭借经济高效、可靠、高性能且可扩展的电子商务、联机事务处理和嵌入式数据库应用 成为全球使用广泛的开源数据库。它是一种事务安全、符合 访问有助于执行复杂的查询以及快速完成简单快速的键值操作。  平台独立性让您可以灵活地在多个操作系统上开展开发和部署工作。  使用 MySQL 作为 Hadoop 和 Cassandra 的业务数据存储,支持大数据互操作性。 MySQL 企业级备份 MySQL 企业级备份能够执行 MySQL 数据库无阻塞联机备份。除了对所有 InnoDB 数据执行完整、 增量和部分备份以外,MySQL0 码力 | 6 页 | 509.78 KB | 1 年前3
 Qcon北京2018--《MySQL的Docker容器化大规模实践》--王晓波■ 同程旅游早期的数据库都以单库的MySQL。 ■ MySQL的单库,导致TPS最终还是会成为一个瓶颈。 ■ MySQL+DB中间件解决水平拆分问题。 ■ MySQL水平拆分的引入会使数据库实例数量大幅上升,传统运维手段维护成本高,交付能力差。 MySQL数据库为何要Docker化 1.MySQL数据库迅速爆炸式增长后,服务器规模不断增大,快速部署是个问题。 2.随着业务的发展,扩容数据库的不方便不快捷,也是个问题。 资源管理|资源调度 复制与迁移|高可用保障|备份恢复 自 动 化 运 维 应用 DB中间件 数据存储 应用 VIP 告警分析 告警发送 指标画图 趋势预测 自定义脚本 Open API 数据校验 实例迁移 秒级监控诊断 慢日志分析 资源池调度 调度规则 容器调度 资源池 容器及实例创建 应用交付 资源申请 IO类型 配置 为了保证MySQL的高可用,需要在Dock 主从不在同一宿主机上。我们通过自研 Docker容器调度平台管理所有宿主机和容器,自定义Docker容器的分配算法。实现了MySQL的高密度,隔离 化,高可用化部署。 调度规则: 1.同一复制集群的实例在不同主机上。 2.优先分配CPU、内存、磁盘空间资源最空闲的主机。 3.根据IO需求调度容器创建在不同IO类型的主机。 4.申请新集群时,若IO要求高则按照宿主机的IO情况,优先选择IO最空闲的主机。0 码力 | 32 页 | 7.11 MB | 1 年前3 Qcon北京2018--《MySQL的Docker容器化大规模实践》--王晓波■ 同程旅游早期的数据库都以单库的MySQL。 ■ MySQL的单库,导致TPS最终还是会成为一个瓶颈。 ■ MySQL+DB中间件解决水平拆分问题。 ■ MySQL水平拆分的引入会使数据库实例数量大幅上升,传统运维手段维护成本高,交付能力差。 MySQL数据库为何要Docker化 1.MySQL数据库迅速爆炸式增长后,服务器规模不断增大,快速部署是个问题。 2.随着业务的发展,扩容数据库的不方便不快捷,也是个问题。 资源管理|资源调度 复制与迁移|高可用保障|备份恢复 自 动 化 运 维 应用 DB中间件 数据存储 应用 VIP 告警分析 告警发送 指标画图 趋势预测 自定义脚本 Open API 数据校验 实例迁移 秒级监控诊断 慢日志分析 资源池调度 调度规则 容器调度 资源池 容器及实例创建 应用交付 资源申请 IO类型 配置 为了保证MySQL的高可用,需要在Dock 主从不在同一宿主机上。我们通过自研 Docker容器调度平台管理所有宿主机和容器,自定义Docker容器的分配算法。实现了MySQL的高密度,隔离 化,高可用化部署。 调度规则: 1.同一复制集群的实例在不同主机上。 2.优先分配CPU、内存、磁盘空间资源最空闲的主机。 3.根据IO需求调度容器创建在不同IO类型的主机。 4.申请新集群时,若IO要求高则按照宿主机的IO情况,优先选择IO最空闲的主机。0 码力 | 32 页 | 7.11 MB | 1 年前3
 MySQL 8.0.17 调优指南(openEuler 20.09)2020-10-15 ii 1 调优概述 1.1 MySQL介绍 1.2 调优原则 1.3 调优思路 1.1 MySQL 介绍 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle 旗下产品。MySQL是最流行的关系型数据库管理系统之一,在Web应用方面,MySQL 是最好的RDBMS (Relational Database Management System,关系数据库管理系 /sys/ block/${device}/queue/ scheduler /sys/block/$ {device}/queue/ nr_requests 提升磁盘吞吐量,尤其对myisam 存储引擎,可以调整到更大。命令 中的${device}为数据盘名称,根据 实际磁盘名称进行修改。 echo 2048 > /sys/ block/${device}/queue/ nr_requests0 码力 | 11 页 | 223.31 KB | 1 年前3 MySQL 8.0.17 调优指南(openEuler 20.09)2020-10-15 ii 1 调优概述 1.1 MySQL介绍 1.2 调优原则 1.3 调优思路 1.1 MySQL 介绍 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle 旗下产品。MySQL是最流行的关系型数据库管理系统之一,在Web应用方面,MySQL 是最好的RDBMS (Relational Database Management System,关系数据库管理系 /sys/ block/${device}/queue/ scheduler /sys/block/$ {device}/queue/ nr_requests 提升磁盘吞吐量,尤其对myisam 存储引擎,可以调整到更大。命令 中的${device}为数据盘名称,根据 实际磁盘名称进行修改。 echo 2048 > /sys/ block/${device}/queue/ nr_requests0 码力 | 11 页 | 223.31 KB | 1 年前3
 MySQL 数据库架构灾难恢复解决方案1. 跟从主集群 写入和读取到主集群 2. 连接到配置的目标集群 当目标集群不是主集群时: 仅打开读取流量 写入将被拒绝 当目标集群为主集群时: 写入端口打开 特性: 可配置每个路由器实例 可以在mysqlsh 中在线更改配置 部署 2 种类型的路由器: • 以“主”为目标以将写入操作发送到“主数据库” • 定义目标集群以便本地读取 INVALIDATED 无效集群仍可用于只读( 处于脱机状态时: • 网络分区 • 无仲裁 • 整个集群丢失( 例如断电) 故障转移到另一个集群 • 一个命令使主集群失效并提升新的主集群: forcePrimaryCluster() • 路由器实例将跟从主( 取决于目标模式) Copyright @ 2021 Oracle and/or its affiliates. 48 / 55 组复制崩溃/分区- forcePrimaryCluster() 处于脱机状态时: • 网络分区 • 无仲裁 • 整个集群丢失( 例如断电) 故障转移到另一个集群 • 一个命令使主集群失效并提升新的主集群: forcePrimaryCluster() • 路由器实例将跟从主( 取决于目标模式) 49 / 55 MySQL InnoDB ClusterSet -限制 • 需要服务器、路由器和Shell 版本 8.0.27 或更高 • InnoDB 集群仅支持单主模式0 码力 | 52 页 | 3.07 MB | 1 年前3 MySQL 数据库架构灾难恢复解决方案1. 跟从主集群 写入和读取到主集群 2. 连接到配置的目标集群 当目标集群不是主集群时: 仅打开读取流量 写入将被拒绝 当目标集群为主集群时: 写入端口打开 特性: 可配置每个路由器实例 可以在mysqlsh 中在线更改配置 部署 2 种类型的路由器: • 以“主”为目标以将写入操作发送到“主数据库” • 定义目标集群以便本地读取 INVALIDATED 无效集群仍可用于只读( 处于脱机状态时: • 网络分区 • 无仲裁 • 整个集群丢失( 例如断电) 故障转移到另一个集群 • 一个命令使主集群失效并提升新的主集群: forcePrimaryCluster() • 路由器实例将跟从主( 取决于目标模式) Copyright @ 2021 Oracle and/or its affiliates. 48 / 55 组复制崩溃/分区- forcePrimaryCluster() 处于脱机状态时: • 网络分区 • 无仲裁 • 整个集群丢失( 例如断电) 故障转移到另一个集群 • 一个命令使主集群失效并提升新的主集群: forcePrimaryCluster() • 路由器实例将跟从主( 取决于目标模式) 49 / 55 MySQL InnoDB ClusterSet -限制 • 需要服务器、路由器和Shell 版本 8.0.27 或更高 • InnoDB 集群仅支持单主模式0 码力 | 52 页 | 3.07 MB | 1 年前3
 谈谈MYSQL那点事技巧分享 技巧分享  Q Q & & AA MyISAM MyISAM 特点 特点 MyISAM vs MyISAM vs InnoDB InnoDB • 数据存储方式简单,使用 数据存储方式简单,使用 B+ Tree B+ Tree 进行索引 进行索引 • 使用三个文件定义一个表: 使用三个文件定义一个表: .MYI .MYD .frm .MYI .MYD 的方式来进行数据存储 的方式来进行数据存储 (ibdata1, ib_logfile0) (ibdata1, ib_logfile0) • 支持 事务、外键约束等数据库特性 支持 事务、外键约束等数据库特性 • Rows level lock , Rows level lock , 读写性能都非常优秀 读写性能都非常优秀 • 能够承载大数据量的存储和访问 能够承载大数据量的存储和访问 • 数据分布 网络 网络 操作系统 操作系统 硬件 硬件  使用好的硬件,更快的硬盘、大内存、多核 使用好的硬件,更快的硬盘、大内存、多核 CPU CPU ,专业的 ,专业的 存储服务器( 存储服务器( NAS NAS 、 、 SAN SAN ) )  设计合理架构,如果 设计合理架构,如果 MySQL MySQL 访问频繁,考虑 访问频繁,考虑 Master/Slave0 码力 | 38 页 | 2.04 MB | 1 年前3 谈谈MYSQL那点事技巧分享 技巧分享  Q Q & & AA MyISAM MyISAM 特点 特点 MyISAM vs MyISAM vs InnoDB InnoDB • 数据存储方式简单,使用 数据存储方式简单,使用 B+ Tree B+ Tree 进行索引 进行索引 • 使用三个文件定义一个表: 使用三个文件定义一个表: .MYI .MYD .frm .MYI .MYD 的方式来进行数据存储 的方式来进行数据存储 (ibdata1, ib_logfile0) (ibdata1, ib_logfile0) • 支持 事务、外键约束等数据库特性 支持 事务、外键约束等数据库特性 • Rows level lock , Rows level lock , 读写性能都非常优秀 读写性能都非常优秀 • 能够承载大数据量的存储和访问 能够承载大数据量的存储和访问 • 数据分布 网络 网络 操作系统 操作系统 硬件 硬件  使用好的硬件,更快的硬盘、大内存、多核 使用好的硬件,更快的硬盘、大内存、多核 CPU CPU ,专业的 ,专业的 存储服务器( 存储服务器( NAS NAS 、 、 SAN SAN ) )  设计合理架构,如果 设计合理架构,如果 MySQL MySQL 访问频繁,考虑 访问频繁,考虑 Master/Slave0 码力 | 38 页 | 2.04 MB | 1 年前3
 Kubernetes Operator 实践 - MySQL容器化MySQL Operator 设计实践 4. 小结 无状态服务 服务调度 有状态服务集群 服务调度 状态保存 集群管理 有状态服务 服务调度 状态保存 带来的新挑战 服务调度 状态存储 集群管理 成员管理 扩缩容 故障迁移 高可用 CoreOS 提出了 operator Deployment StatefulSet PV/PVC StorageClass ?? WorkQueue:事件合并、过滤、延时、限速 Operator CRD 里有什么 MySQL CRD • Spec:配置 & 期望状态 • Status:当前状态 MySQL 配置 • 版本 • 端口 • 存储信息 • 配置文件 集群配置 • 副本数 • 高可用模式 K8s 调度信息 • 资源套餐 • 亲和性信息 • NodeSelector 使用 CRD 2. client-go 配套工具 0. 创建 CRD 3. 集群管理 2. 调度 pod Ceph MySQL-Operator 数据存储 分布式存储 • 使用 Ceph RBD,基于产品线 创建 StorageClass • 优点:可靠性高,容器漂移时 数据不变 • 缺点:读写延迟较高 本地存储 • 基于 Host Path Volumes • 优点:读写延迟低 • 缺点:单点数据,容器漂移时 数据丢失0 码力 | 42 页 | 4.77 MB | 1 年前3 Kubernetes Operator 实践 - MySQL容器化MySQL Operator 设计实践 4. 小结 无状态服务 服务调度 有状态服务集群 服务调度 状态保存 集群管理 有状态服务 服务调度 状态保存 带来的新挑战 服务调度 状态存储 集群管理 成员管理 扩缩容 故障迁移 高可用 CoreOS 提出了 operator Deployment StatefulSet PV/PVC StorageClass ?? WorkQueue:事件合并、过滤、延时、限速 Operator CRD 里有什么 MySQL CRD • Spec:配置 & 期望状态 • Status:当前状态 MySQL 配置 • 版本 • 端口 • 存储信息 • 配置文件 集群配置 • 副本数 • 高可用模式 K8s 调度信息 • 资源套餐 • 亲和性信息 • NodeSelector 使用 CRD 2. client-go 配套工具 0. 创建 CRD 3. 集群管理 2. 调度 pod Ceph MySQL-Operator 数据存储 分布式存储 • 使用 Ceph RBD,基于产品线 创建 StorageClass • 优点:可靠性高,容器漂移时 数据不变 • 缺点:读写延迟较高 本地存储 • 基于 Host Path Volumes • 优点:读写延迟低 • 缺点:单点数据,容器漂移时 数据丢失0 码力 | 42 页 | 4.77 MB | 1 年前3
 TokuDB索引结构网易杭州研究院---胡争(博客:openinx.github.io) TokuDB简介 • 基于分形树实现的MySQL存储引擎 • Tokutek公司2007年研发,2013年开源 • 2015年Percona公司收购Tokutek公司 • TokuDB内部的K-V存储引擎为ft-index • TokuMx: ft-index + MongoDB Server层代码 InnoDB InnoDB TokuDB MyISAM MySQL Server层 MySQL Storage层 Linux 文件系统层 TokuDB特点 • 支持事务(ACID)的MySQL存储引擎 • 插入性能大大高于InnoDB(分形树vs B+树) • 查询性能略低于InnoDB • 在线执行DDL操作(不阻塞写操作) • 超高压缩率(TokuDB 4M vs InnoDB 16K) 更高性能,更低成本!0 码力 | 19 页 | 1.97 MB | 1 年前3 TokuDB索引结构网易杭州研究院---胡争(博客:openinx.github.io) TokuDB简介 • 基于分形树实现的MySQL存储引擎 • Tokutek公司2007年研发,2013年开源 • 2015年Percona公司收购Tokutek公司 • TokuDB内部的K-V存储引擎为ft-index • TokuMx: ft-index + MongoDB Server层代码 InnoDB InnoDB TokuDB MyISAM MySQL Server层 MySQL Storage层 Linux 文件系统层 TokuDB特点 • 支持事务(ACID)的MySQL存储引擎 • 插入性能大大高于InnoDB(分形树vs B+树) • 查询性能略低于InnoDB • 在线执行DDL操作(不阻塞写操作) • 超高压缩率(TokuDB 4M vs InnoDB 16K) 更高性能,更低成本!0 码力 | 19 页 | 1.97 MB | 1 年前3
 Oracle 和 MySQL 性能优化感悟swizzling 原理 基本步骤 应用场景 优点/缺点/坑 method swizzling(改进版) 原理 基本步骤 小例子 优点 • 利用block作为IMP • 利用自动变量的截取 存储原始IMP 原理:修改isa指针 isa swizzling 特点:针对一个对象 原理:修改isa指针 isa swizzling 特点:针对一个对象 原理:修改isa指针 isa swizzling0 码力 | 19 页 | 3.82 MB | 1 年前3 Oracle 和 MySQL 性能优化感悟swizzling 原理 基本步骤 应用场景 优点/缺点/坑 method swizzling(改进版) 原理 基本步骤 小例子 优点 • 利用block作为IMP • 利用自动变量的截取 存储原始IMP 原理:修改isa指针 isa swizzling 特点:针对一个对象 原理:修改isa指针 isa swizzling 特点:针对一个对象 原理:修改isa指针 isa swizzling0 码力 | 19 页 | 3.82 MB | 1 年前3
 MySQL高可用 - 多种方案默认启动以及切换后的 backup 话 mysql 不会启动起来,因此这对于 mysql 复制是很不利的。因此需要做好监控,发生切换以后需要手动去启动。或者 mysql 之间不使用复制,而是用共享存储或者 DRBD,这样能解决这个问题。 不方便扩展。 可能会发生脑裂问题。 4.3 方案架构图 4.4 适用场景 该方案适合只有两台数据库的情况,访问量不大,不需要实现读写分离的情况。0 码力 | 31 页 | 874.28 KB | 1 年前3 MySQL高可用 - 多种方案默认启动以及切换后的 backup 话 mysql 不会启动起来,因此这对于 mysql 复制是很不利的。因此需要做好监控,发生切换以后需要手动去启动。或者 mysql 之间不使用复制,而是用共享存储或者 DRBD,这样能解决这个问题。 不方便扩展。 可能会发生脑裂问题。 4.3 方案架构图 4.4 适用场景 该方案适合只有两台数据库的情况,访问量不大,不需要实现读写分离的情况。0 码力 | 31 页 | 874.28 KB | 1 年前3
共 10 条
- 1













