如何用 MySQL 构建全方位高可用应用
并不仅仅是可靠地存储数据 支持高可用性的各个层 数据的冗余访问路径 数据冗余存储 冗余应用服务器 数据路由 4/16/2017 版权所有 2015,Oracle 和/或其附属公司。保留所有权利。 6 并不仅仅是可靠地存储数据 支持高可用性的各个层 数据的冗余访问路径 数据冗余存储 冗余应用服务器 数据路由 4/16/2017 版权所有 2015,Oracle 和/或其附属公司。保留所有权利。 7 • MySQL Replication • Shared Storage • Group Replication • MySQL Cluster 从数据库 • 会话线程:处理来自应用程序的查询 - 将 数据写入主数据库,将关联事件写入二进制 日志 • 转储线程:读取二进制日志中的事件,然后 将其发送到从数据库 • I/O 线程:接收复制事件,并将其存储在从 数据库的中继日志中 4/16/2017 8 版权所有 2015,Oracle 和/或其附属公司。保留所有权利。 为何进行复制? •将数据库从“主服务器”复制到“从服务器” – 数据的冗余副本奠定了高可用性的基础 – 通过在复制场中进行分布式查询来扩展 主 从 Web/应用服务器 写入和读取 读取 4/16/2017 版权所有 2015,Oracle 和/或其附属公司。保留所有权利。 9 •异步 – MySQL0 码力 | 40 页 | 2.19 MB | 1 年前3MySQL 企业版功能介绍
ACID 标准的集成式数据库,支持全 面的提交、回滚、崩溃恢复和行锁定功能。MySQL 不仅简便易用、易于扩展、性能卓越,而且 还提供了一整套数据库驱动程序和可视化工具,可帮助开发人员和 DBA 自主构建和管理 MySQL 应用。MySQL 数据库具备以下特性: ORACLE 产品介绍 2 高性能和可扩展性可满足呈指数级增长的数据负载和用户的需求。 用性。 联机模式更改可满足不断变化的业务需求。 Performance Schema 可监视各个用户和应用的性能及资源占用情况。 SQL 和 NoSQL 访问有助于执行复杂的查询以及快速完成简单快速的键值操作。 平台独立性让您可以灵活地在多个操作系统上开展开发和部署工作。 使用 MySQL 作为 Hadoop 和 Cassandra 的业务数据存储,支持大数据互操作性。 突检测和处理、节点故障检 测和数据库故障切换相关操作提供原生高可用性,所有这些都无需人工干预或定制工具。 MySQL 企业级可扩展性 MySQL 企业级可扩展性可帮助您满足不断增长的用户、查询和数据负载对性能和可扩展性的要 求。MySQL 线程池提供了一个高效的线程处理模型,旨在降低客户端连接和语句执行线程的管 理开销。 MySQL 企业级身份验证 MySQL 企业级身份验证0 码力 | 6 页 | 509.78 KB | 1 年前3谈谈MYSQL那点事
当然这里会用到 3 台数据库服务器,也许会增加采 购压力,但是我们可以提供更好的对外数据服务的能力和 途径,实际中尽可能两者兼顾。 MySQL 架构设计—高可用架构 系统优化:硬件、架构 系统优化:硬件、架构 服务优化 服务优化 应用优化 应用优化 MySQL MySQL 优化方式 优化方式 影响性能的因素 影响性能的因素 应用程序 应用程序 查询 查询 事务管理 事务管理 数据分布 网络 网络 操作系统 操作系统 硬件 硬件 使用好的硬件,更快的硬盘、大内存、多核 使用好的硬件,更快的硬盘、大内存、多核 CPU CPU ,专业的 ,专业的 存储服务器( 存储服务器( NAS NAS 、 、 SAN SAN ) ) 设计合理架构,如果 设计合理架构,如果 MySQL MySQL 访问频繁,考虑 访问频繁,考虑 Master/Slave Master/Slave 布式),也考虑使用相应缓存服务帮助 布式),也考虑使用相应缓存服务帮助 MySQL MySQL 缓解访问 缓解访问 压力 压力 系统优化 系统优化 配置合理的 配置合理的 MySQL MySQL 服务器,尽量在应用本身达到一 服务器,尽量在应用本身达到一 个 个 MySQL MySQL 最合理的使用 最合理的使用 针对 针对 MyISAM MyISAM 或 或 InnoDB InnoDB 不同引擎进行不同定制0 码力 | 38 页 | 2.04 MB | 1 年前3MySQL 8.0.17 调优指南(openEuler 20.09)
MySQL作为网站数据库。 1.2 调优原则 性能调优从大的方面来说,在系统设计之初,需要考虑硬件的选择,操作系统的选 择,基础软件的选择;从小的方面来说,包括每个子系统的设计,算法选择,如何使 用编译器的选项,如何发挥硬件最大的性能等等。 在性能优化时,我们必须遵循一定的原则,否则,有可能得不到正确的调优结果。主 要有以下几个方面: ● 对性能进行分析时,要多方面分析系统的资源瓶颈所在,因为系统某一方面性能 规格(带宽、最大连接数、新建连接数等)限制,导致压测结果达不到预期。 2. 接着看关键指标是否满足要求,如果不满足,需要确定是哪个地方有问题,一般 情况下,服务器端问题可能性比较大,也有可能是客户端问题(这种情况比较 小)。 3. 对于服务器端问题,需要定位的是硬件相关指标,例如CPU,Memory,Disk I/O,Network I/O,如果是某个硬件指标有问题,需要深入的进行分析。 4. 中率等。 5. 如果以上指标都正常,应用程序的算法、缓冲、缓存、同步或异步可能有问题, 需要具体深入的分析。 瓶颈点 说明 硬件/规格 一般指的是CPU、内存、磁盘I/O方面的问题,分为服务器硬件瓶 颈、网络瓶颈(对局域网可以不考虑)。 操作系统 一般指的是Windows、UNIX、Linux等操作系统。例如,在进行性 能测试,出现物理内存不足时,虚拟内存设置也不合理,虚拟内 存的交换效0 码力 | 11 页 | 223.31 KB | 1 年前3TokuDB索引结构
Server层 MySQL Storage层 Linux 文件系统层 TokuDB特点 • 支持事务(ACID)的MySQL存储引擎 • 插入性能大大高于InnoDB(分形树vs B+树) • 查询性能略低于InnoDB • 在线执行DDL操作(不阻塞写操作) • 超高压缩率(TokuDB 4M vs InnoDB 16K) 更高性能,更低成本! 分形树索引结构(一) 分形树结构(二) 分形树Insert/Update/Delete a. B+树顺序插入热点数据分布图 b. B+树随机插入热点数据分布图 分形树Flush线程 分形树Point-Query 分形树Range-Query 分形树范围查询 B+树范围查询 TokuDB事务(一) Page.1 Page.2 Page.3 Memory Disk Redo log (log**.toku) Page.8 Page0 码力 | 19 页 | 1.97 MB | 1 年前3使用 Docker 建立 MySQL 集群
replication slave on *.* to ‘sync’@'%' identified by 'sync'; /*保存权限设定*/ flush privileges; /*查看主数据日志状态,需要记住查询结果 File 和 Position 值,是从数据库复 制的日志起点*/ show master status; 在从数据库中执行 SQL 脚本: /*如果已经开启了同步,停止同步*/ stop slave; master_user='sync', master_password='sync', master_port=3306, master_log_file='<主数据库查询得到的 File 值>', master_log_pos=<主数据库查询得到的 Positions 值>; 下面是我的脚本例子: change master to master_host='master_db', master_user='sync'0 码力 | 3 页 | 103.32 KB | 1 年前3MySQL高可用 - 多种方案
数据的一致性,一般都是采用单点写入,本方案采用 keepalived 中的 sorry_server 来实现写入数据库为单点的需求。本方案实现的功能是当网络有问题、 mysql 有问题、服务器宕机、keepalived 服务停止后,服务器能自动跳转到备用机, 当主服务器服务启动起来后会自动切换回来。 2.2 方案架构图 2.3 方案优缺点 优点: 安装配置简单,实现方便,高可用效率好,可以根据服务与系统的可用性 可以在后面添加多个从服务器,并做到负载均衡。 缺点: 在启动或者恢复后会立即替换掉定义的 sorry_server,因此如果要实现指 定条件替换或者不替换需要通过其他方式实现,比如:临时更改 mysql 的端口等。 切换需要 1s 左右的时间。 2.4 方案实战 2.4.1 适用场景 这个方案适用于只有两台数据库服务器并且还没有实现数据库的读写 分离的情况,读和写都配置 分离的情况,读和写都配置 VIP。这个方案能够便于单台数据库的管理 维护以及切换工作。比如进行大表的表结构更改、数据库的升级等都是 非常方便的。 2.4.2 实战环境介绍 服务器名 IP VIP 系统 Mysql Master 10.1.1.113 10.1.1.176 Centos 5.5 64bit 5.1.63 Backup 10.1.1.75 10.1.1.1760 码力 | 31 页 | 874.28 KB | 1 年前3MySQL 数据库架构灾难恢复解决方案
RTO =分钟或更长时间( 手动故障转移) 无写入性能影响 特点 • 简单易用 • 熟悉的界面和可用性 mysqlsh,CLONE,... • 在线添加/删除节点/集群 • 路由器集成, 拓扑结构发生变化时无需重新配置 应用程序 M ySQL InnoDB ClusterSet – 3 个数据中心 Copyright @ 2021 Oracle and/or its affiliates its affiliates. 业务要求 Copyright @ 2021 Oracle and/or its affiliates. 50 / 55 故障类型: 高可用性: 单服务器故障, 网络分区 灾难恢复: 整个区域/网络故障 人为错误: 个别表问题 10 / 55 业务需求 概念 - RTO & RPO RTO :恢复时间目标 从单个故障中恢复需要多长时间 RPO and/or its affiliates. 路由器集成 Copyright @ 2021 Oracle and/or its affiliates. 24 / 55 Copyright @ 2021 Oracle and/or its affiliates. 路由器集成 25 / 55 将应用程序配置为连接到本地 MySQL 路由器以连接到 ClusterSet Copyright0 码力 | 52 页 | 3.07 MB | 1 年前3Kubernetes Operator 实践 - MySQL容器化
Kubernetes Operator 实践 —— MySQL 容器化 刘林 搜狗资深工程师 关于我 搜狗商业平台研发部 资深开发工程师 l 主要从事商业平台研发工作,在构建高性能、高可用大规模 系统方面有丰富的实践经验 l 目前专注于云计算、DevOps 等相关领域,负责搜狗商业云 平台的设计研发工作 刘林 1. 背景介绍 2. Operator 的基本原理 3. MySQL0 码力 | 42 页 | 4.77 MB | 1 年前3Qcon北京2018--《MySQL的Docker容器化大规模实践》--王晓波
MySQL+DB中间件解决水平拆分问题。 ■ MySQL水平拆分的引入会使数据库实例数量大幅上升,传统运维手段维护成本高,交付能力差。 MySQL数据库为何要Docker化 1.MySQL数据库迅速爆炸式增长后,服务器规模不断增大,快速部署是个问题。 2.随着业务的发展,扩容数据库的不方便不快捷,也是个问题。 3.大量数据量小的数据库系统也单独部署在物理机,浪费问题突出。 4.DBA的数据库自动化标准化运维的需求。 VIP集群端口基于网段递增,Proxy集群端口基于IP递增 Docker里放了什么 内核版本 操作系统 宿主机 容器 镜像 Kernel版本 4.7 CentOS 7.2 部署服务器监控、容器监控agent容器 Docker版本 1.12,部署监控及系统服务agent MariaDB镜像(按产品)、MySQL5.7镜像(按产品)、监控容器镜 像、HA管理系统镜像、实例迁移服务镜像、监控服务端镜像 ,至少一个上午 。无系统化管理,资源分配情况,无法统一调配,服务器资源利用率低。 MySQL容器平台: 部署一套高可用集群+自动化备份+慢日志分析+监控。用时1-2分钟。部署32个节点的分片集群, 只需5分钟。标准化的系统管理,部署环境统一、配置文件统一。系统化的操作降低人为失误和重复劳 动。资源使用集中管理,有效利用服务器资源。 效率提升0 码力 | 32 页 | 7.11 MB | 1 年前3
共 10 条
- 1