谈谈MYSQL那点事• 数据存储方式简单,使用 数据存储方式简单,使用 B+ Tree B+ Tree 进行索引 进行索引 • 使用三个文件定义一个表: 使用三个文件定义一个表: .MYI .MYD .frm .MYI .MYD .frm • 少碎片、支持大文件、能够进行索引压缩 少碎片、支持大文件、能够进行索引压缩 • 二进制层次的文件可以移植 二进制层次的文件可以移植 (Linux (Linux (Linux Windows) Windows) • 访问速度飞快,是所有 访问速度飞快,是所有 MySQL MySQL 文件引擎中速度最快的 文件引擎中速度最快的 • 不支持一些数据库特性,比如 事务、外键约束等 不支持一些数据库特性,比如 事务、外键约束等 • Table level lock Table level lock ,性能稍差,更适合读取多的操作 ,性能稍差,更适合读取多的操作 的方式来进行数据存储 的方式来进行数据存储 (ibdata1, ib_logfile0) (ibdata1, ib_logfile0) • 支持 事务、外键约束等数据库特性 支持 事务、外键约束等数据库特性 • Rows level lock , Rows level lock , 读写性能都非常优秀 读写性能都非常优秀 • 能够承载大数据量的存储和访问 能够承载大数据量的存储和访问 •0 码力 | 38 页 | 2.04 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 企业版功能介绍、 监视和调优等管理任务。多层安全可以保护您的数据免受外部攻击,同时帮助您实现合规性。自 助式供应可创建预配置的 MySQL 数据库,针对性能进行优化;而自动扩展能够让用户弹性扩展 计算资源、存储资源和 MySQL 副本。 MySQL 数据库 MySQL 凭借经济高效、可靠、高性能且可扩展的电子商务、联机事务处理和嵌入式数据库应用 成为全球使用广泛的开源数据库。它是一种事务安全、符合 访问有助于执行复杂的查询以及快速完成简单快速的键值操作。 平台独立性让您可以灵活地在多个操作系统上开展开发和部署工作。 使用 MySQL 作为 Hadoop 和 Cassandra 的业务数据存储,支持大数据互操作性。 MySQL 企业级备份 MySQL 企业级备份能够执行 MySQL 数据库无阻塞联机备份。除了对所有 InnoDB 数据执行完整、 增量和部分备份以外,MySQL 用现有安全规则和流程。 MySQL 企业级透明数据加密 (TDE) MySQL 企业级透明数据加密 (TDE) 通过加密数据库的物理文件来实现静止数据加密。数据在写 入存储之前实时自动加密,从存储读取时自动解密。因此,黑客和恶意用户无法从表空间文件、 数据库备份或磁盘中读取敏感数据。MySQL 企业级 TDE 使用双层加密密钥体系结构,包括主加 密密钥和表空间密钥,可轻松实现密钥管理和轮换。0 码力 | 6 页 | 509.78 KB | 1 年前3
Qcon北京2018--《MySQL的Docker容器化大规模实践》--王晓波数 据 库 及 实 例 迁 移 过 载 保 护 机 制 总体架构 分 布 式 监 控 资源管理|资源调度 复制与迁移|高可用保障|备份恢复 自 动 化 运 维 应用 DB中间件 数据存储 应用 VIP 告警分析 告警发送 指标画图 趋势预测 自定义脚本 Open API 数据校验 实例迁移 秒级监控诊断 慢日志分析 资源池调度 调度规则 容器调度 资源池 7镜像(按产品)、监控容器镜 像、HA管理系统镜像、实例迁移服务镜像、监控服务端镜像 PS:容器虚拟化带来轻量高效,快速部署的同时,docker容器在隔离性方面也存在一些缺陷。例如,在容器内部proc文件系统 中可以看到Host宿主机上的proc信息。这样就导致了一些问题,比如监控信息不准确、限制内存会导致应用程序OOM等。我们 基于lxcfs组件来增强容器的隔离性。 资源隔离 CPU最大超卖3 为了保证容器内的MySQL实例有更好的磁盘IO性能。采用了本地宿主机磁盘挂载到容器内的方式(每个 实例对应一个文件夹)。 这种方式的优势是IO性能最佳,随之而来的缺点是磁盘容量不好估算,有可能在使用了一段时间后出现磁 盘空间不足的问题,这个时候则会启动迁移扩容的流程。 已经在和提供高密度IO分布式存储解决方案厂商接触,计划测试平台接入分布式存储的方案。 磁盘挂载 3301 3302 3303 3304 3305 宿主机磁盘0 码力 | 32 页 | 7.11 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 配套工具 apiVersion: 0. 创建 CRD 3. 集群管理 2. 调度 pod Ceph MySQL-Operator 数据存储 分布式存储 • 使用 Ceph RBD,基于产品线 创建 StorageClass • 优点:可靠性高,容器漂移时 数据不变 • 缺点:读写延迟较高 本地存储 • 基于 Host Path Volumes • 优点:读写延迟低 • 缺点:单点数据,容器漂移时 数据丢失0 码力 | 42 页 | 4.77 MB | 1 年前3
MySQL高可用 - 多种方案.................................................................................... 31 文件状态 [ ] 草稿 [ √ ] 正式发布 [ ] 正在修改 名称 mysql 高可用方案探究 作者 飞鸿无痕 版本 V1.0 日期 2012-09-04 博客地址 默认启动以及切换后的 backup 话 mysql 不会启动起来,因此这对于 mysql 复制是很不利的。因此需要做好监控,发生切换以后需要手动去启动。或者 mysql 之间不使用复制,而是用共享存储或者 DRBD,这样能解决这个问题。 不方便扩展。 可能会发生脑裂问题。 4.3 方案架构图 4.4 适用场景 该方案适合只有两台数据库的情况,访问量不大,不需要实现读写分离的情况。 Make make install 4.5.5 Heartbeat 的配置 Hearbeat 的配置主要包括三个配置文件,authkeys,ha.cf 和 haresources 的 配置,下面就分别来看! Hosts 文件的配置 需要在 hosts 文件中添加 master 和 backup 主机,加快节点间的通信 Master 和 backup 的 hosts 节点添加的内容一样,我的配置添加如下内0 码力 | 31 页 | 874.28 KB | 1 年前3
TokuDB索引结构基于分形树实现的MySQL存储引擎 • Tokutek公司2007年研发,2013年开源 • 2015年Percona公司收购Tokutek公司 • TokuDB内部的K-V存储引擎为ft-index • TokuMx: ft-index + MongoDB Server层代码 InnoDB TokuDB MyISAM MySQL Server层 MySQL Storage层 Linux 文件系统层 TokuDB特点 • 支持事务(ACID)的MySQL存储引擎 • 插入性能大大高于InnoDB(分形树vs B+树) • 查询性能略低于InnoDB • 在线执行DDL操作(不阻塞写操作) • 超高压缩率(TokuDB 4M vs InnoDB 16K) 更高性能,更低成本! 分形树索引结构(一) 分形树结构(二) • msg_buffer – 先进先出队列 • BasementNode(OMT)0 码力 | 19 页 | 1.97 MB | 1 年前3
MySQL 8.0.17 调优指南(openEuler 20.09)/sys/ block/${device}/queue/ scheduler /sys/block/$ {device}/queue/ nr_requests 提升磁盘吞吐量,尤其对myisam 存储引擎,可以调整到更大。命令 中的${device}为数据盘名称,根据 实际磁盘名称进行修改。 echo 2048 > /sys/ block/${device}/queue/ nr_requests overload的cpu迁移进程过来,从而提升cpu利用率。 方法 kernel的优化在openEuler 20.09中默认是关闭的,需要用以下步骤开启: 步骤1 打开/etc/grub2-efi.cfg文件,在内核启动行增加参数sched_steal_node_limit=8,保存 后重启系统生效。 步骤2 设置成STEAL模式: echo STEAL > /sys/kernel/debug/sched_features 目的 将mysql的进程绑定到指定CPU上,同时内存使能interleave。 方法 使用numatl命令进行设置,其中0-92是mysql进程要运行的CPU序号,my.cnf是mysql 的配置文件路径。在华为鲲鹏920 4826处理器 + Huawei TM280 25G网卡上为mysql 绑定93个核能获得最佳性能。 numactl -C 0-92 -i 0-3 /usr/local/mysql/bin/mysqld0 码力 | 11 页 | 223.31 KB | 1 年前3
使用 Docker 建立 MySQL 集群最新版本,apt-get 中版本较老。 首先获取安装脚本: wget https://get.docker.com 下下来的虽然名字是 index.html,但其实是脚本文件,所以我们 chmod +x index.html 这样我们就可以执行这个文件: sudo ./index.html 安装完成后根据提示,可以将当前用户加到 docker 用户组里,这样就不用每次 执行 docker 都需要 sudo 了。 控制台的问题。 对于不是自己建立的镜像,建立出来的容器未必能一次达到要求,建议是将 run 命令写成脚本,创建后使用 docker inspect <容器名> 仔细查看容器信息,关注镜像公开的端口和文件目录。如果发现达不到要求,使 用 docker rm -f <容器名> 删除容器后修改 run 脚本再次运行,直到满意为止。 下面是我的 run 命令: docker run --name mdb1 3.2 接下来就需要配置两个数据库了,前提工作是镜像中并没有自带 vi,所以在两 个容器内都需要: apt-get update apt-get install vim 这样我们才能在容器内修改配置文件。 还有一种方法,就是我们在主数据库容器中操作,之后,使用 docker commit <主数据库容器名> mariadb 这样再创建的容器就包含 vi 了。 3.3 为讲述方便,现在假设:我们有了连个数据库,mdb10 码力 | 3 页 | 103.32 KB | 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
共 10 条
- 1













