 MySQL 8.0.17 调优指南(openEuler 20.09)下面介绍MySQL数据库具体的调优思路和分析过程,如图1所示。 调优分析思路如下: 1. 很多情况下压测流量并没有完全进入到服务端,在网络上可能就会出现由于各种 规格(带宽、最大连接数、新建连接数等)限制,导致压测结果达不到预期。 2. 接着看关键指标是否满足要求,如果不满足,需要确定是哪个地方有问题,一般 情况下,服务器端问题可能性比较大,也有可能是客户端问题(这种情况比较 小)。 3. 对于服务器端问 绑定32个中断队列,建议将所有的队列都用在中断绑定上来获得最佳性能。 以下脚本是在华为鲲鹏920 4826处理器 + Huawei TM280 25G网卡上的最佳绑中断设 置,其中第一个参数$1是网卡名称,第二个参数$2是队列数目32,第三个参数$3是网 卡对应的总线名,可以用ethtool -i <网卡名>查询出: #!/bin/bash eth1=$1 cnt=$2 bus=$3 ethtool -L0 码力 | 11 页 | 223.31 KB | 1 年前3 MySQL 8.0.17 调优指南(openEuler 20.09)下面介绍MySQL数据库具体的调优思路和分析过程,如图1所示。 调优分析思路如下: 1. 很多情况下压测流量并没有完全进入到服务端,在网络上可能就会出现由于各种 规格(带宽、最大连接数、新建连接数等)限制,导致压测结果达不到预期。 2. 接着看关键指标是否满足要求,如果不满足,需要确定是哪个地方有问题,一般 情况下,服务器端问题可能性比较大,也有可能是客户端问题(这种情况比较 小)。 3. 对于服务器端问 绑定32个中断队列,建议将所有的队列都用在中断绑定上来获得最佳性能。 以下脚本是在华为鲲鹏920 4826处理器 + Huawei TM280 25G网卡上的最佳绑中断设 置,其中第一个参数$1是网卡名称,第二个参数$2是队列数目32,第三个参数$3是网 卡对应的总线名,可以用ethtool -i <网卡名>查询出: #!/bin/bash eth1=$1 cnt=$2 bus=$3 ethtool -L0 码力 | 11 页 | 223.31 KB | 1 年前3
 谈谈MYSQL那点事使用三个文件定义一个表: .MYI .MYD .frm .MYI .MYD .frm • 少碎片、支持大文件、能够进行索引压缩 少碎片、支持大文件、能够进行索引压缩 • 二进制层次的文件可以移植 二进制层次的文件可以移植 (Linux (Linux   Windows) Windows) • 访问速度飞快,是所有 访问速度飞快,是所有 MySQL MySQL 文件引擎中速度最快的 大文本字段不建立为索引,如果要对大文本字段进行检索, 可以考虑全文索引 可以考虑全文索引  频繁更新的列不适合建立过多索引 频繁更新的列不适合建立过多索引 应用优化 应用优化 索引建立原则(二) 索引建立原则(二)  order by order by 字句中的字段, 字句中的字段, where where 子句中字段,最常用的 子句中字段,最常用的 sql 使用 使用 Explain Explain 语句来帮助改进我们的 语句来帮助改进我们的 SQL SQL 语句 语句 应用优化 应用优化 编写高效的 编写高效的 SQL SQL (二) (二)  不要在 不要在 where where 子句中的 子句中的““==”” 左边进行算术或表达式运算,否则系统将 左边进行算术或表达式运算,否则系统将 可能无法正确使用索引0 码力 | 38 页 | 2.04 MB | 1 年前3 谈谈MYSQL那点事使用三个文件定义一个表: .MYI .MYD .frm .MYI .MYD .frm • 少碎片、支持大文件、能够进行索引压缩 少碎片、支持大文件、能够进行索引压缩 • 二进制层次的文件可以移植 二进制层次的文件可以移植 (Linux (Linux   Windows) Windows) • 访问速度飞快,是所有 访问速度飞快,是所有 MySQL MySQL 文件引擎中速度最快的 大文本字段不建立为索引,如果要对大文本字段进行检索, 可以考虑全文索引 可以考虑全文索引  频繁更新的列不适合建立过多索引 频繁更新的列不适合建立过多索引 应用优化 应用优化 索引建立原则(二) 索引建立原则(二)  order by order by 字句中的字段, 字句中的字段, where where 子句中字段,最常用的 子句中字段,最常用的 sql 使用 使用 Explain Explain 语句来帮助改进我们的 语句来帮助改进我们的 SQL SQL 语句 语句 应用优化 应用优化 编写高效的 编写高效的 SQL SQL (二) (二)  不要在 不要在 where where 子句中的 子句中的““==”” 左边进行算术或表达式运算,否则系统将 左边进行算术或表达式运算,否则系统将 可能无法正确使用索引0 码力 | 38 页 | 2.04 MB | 1 年前3
 TokuDB索引结构在线执行DDL操作(不阻塞写操作) • 超高压缩率(TokuDB 4M vs InnoDB 16K) 更高性能,更低成本! 分形树索引结构(一) 分形树结构(二) • msg_buffer – 先进先出队列 • BasementNode(OMT) – 弱平衡二叉树 – 增删改查期望复杂度O(logN) • 页大小默认4M。 • 扇出fanout默认[4,16]区间。 分形树结构(三) 分形树Insert/Update/Delete 分形树Insert/Update/Delete • 步骤: – a. 磁盘读取root节点页; – b. 若root节点需分裂,则root节点一分为二,提升一个 新的Root节点; – c. 若root节点是叶子节点,则插入到basementNode;否 则,append message到msg_buffer; – d. 返回 分形树Insert/Update/Delete B C D A E Undo log (tokudb.rollback) FractralTreeIndexFile(*.tokudb) LRU-Cache TokuDB事务(二) TokuDB事务(三) 总结(一) 总结(二) 参考资料 • http://github.com/Percona/tokudb-engine • http://openinx.github.io/2015/11/0 码力 | 19 页 | 1.97 MB | 1 年前3 TokuDB索引结构在线执行DDL操作(不阻塞写操作) • 超高压缩率(TokuDB 4M vs InnoDB 16K) 更高性能,更低成本! 分形树索引结构(一) 分形树结构(二) • msg_buffer – 先进先出队列 • BasementNode(OMT) – 弱平衡二叉树 – 增删改查期望复杂度O(logN) • 页大小默认4M。 • 扇出fanout默认[4,16]区间。 分形树结构(三) 分形树Insert/Update/Delete 分形树Insert/Update/Delete • 步骤: – a. 磁盘读取root节点页; – b. 若root节点需分裂,则root节点一分为二,提升一个 新的Root节点; – c. 若root节点是叶子节点,则插入到basementNode;否 则,append message到msg_buffer; – d. 返回 分形树Insert/Update/Delete B C D A E Undo log (tokudb.rollback) FractralTreeIndexFile(*.tokudb) LRU-Cache TokuDB事务(二) TokuDB事务(三) 总结(一) 总结(二) 参考资料 • http://github.com/Percona/tokudb-engine • http://openinx.github.io/2015/11/0 码力 | 19 页 | 1.97 MB | 1 年前3
 如何用 MySQL 构建全方位高可用应用会话线程:处理来自应用程序的查询 - 将 数据写入主数据库,将关联事件写入二进制 日志 • 转储线程:读取二进制日志中的事件,然后 将其发送到从数据库 • I/O 线程:接收复制事件,并将其存储在从 数据库的中继日志中 • SQL 线程:读取从数据库的中继日志中的复 制事件,然后将其应用到从数据库 MySQL 复制工作流 会话 二进制 日志 主数据库 转储 I/O 中继 日志 SQL Cluster Clusterware为 基础的主备架构 主从复制 写的 高可用 负载均衡 故障移转 讀寫分離 故障移转 • JDBC URL format,第一个主机为master,第二个以后为backup: import com.mysql.jdbc.ReplicationDriver; Connection conn = DriverManager.getConnecti ] • Connection的faileover属性 – failOverReadOnly :为true时,faileover后设Connection.setReadOnly(false); 第二个host仍为read-only mode – secondsBeforeRetryMaster – queriesBeforeRetryMaster – retriesAllDown –0 码力 | 40 页 | 2.19 MB | 1 年前3 如何用 MySQL 构建全方位高可用应用会话线程:处理来自应用程序的查询 - 将 数据写入主数据库,将关联事件写入二进制 日志 • 转储线程:读取二进制日志中的事件,然后 将其发送到从数据库 • I/O 线程:接收复制事件,并将其存储在从 数据库的中继日志中 • SQL 线程:读取从数据库的中继日志中的复 制事件,然后将其应用到从数据库 MySQL 复制工作流 会话 二进制 日志 主数据库 转储 I/O 中继 日志 SQL Cluster Clusterware为 基础的主备架构 主从复制 写的 高可用 负载均衡 故障移转 讀寫分離 故障移转 • JDBC URL format,第一个主机为master,第二个以后为backup: import com.mysql.jdbc.ReplicationDriver; Connection conn = DriverManager.getConnecti ] • Connection的faileover属性 – failOverReadOnly :为true时,faileover后设Connection.setReadOnly(false); 第二个host仍为read-only mode – secondsBeforeRetryMaster – queriesBeforeRetryMaster – retriesAllDown –0 码力 | 40 页 | 2.19 MB | 1 年前3
 Kubernetes Operator 实践 - MySQL容器化Operator 是什么 • Kubernetes 中一切都可视为资源 • 默认资源类型:如 Pod、Service、Volume 等 • Kubernetes 1.7 之后增加了 CRD 自定义资源 • 二次开发扩展 Kubernetes API CRD 的基本原理 ① 观察资源的当前状态 ② 分析当前状态与期望状态的差别 ③ 调用 API 消除差别 TestCluster app=test OnDelete WorkQueue List/Watch - CRD - Pod Write Informer Worker ReadOnly • Informer:监听事件并触发回调函数的二级缓存工具包 • WorkQueue:事件合并、过滤、延时、限速 Operator CRD 里有什么 MySQL CRD • Spec:配置 & 期望状态 • Status:当前状态 MySQL0 码力 | 42 页 | 4.77 MB | 1 年前3 Kubernetes Operator 实践 - MySQL容器化Operator 是什么 • Kubernetes 中一切都可视为资源 • 默认资源类型:如 Pod、Service、Volume 等 • Kubernetes 1.7 之后增加了 CRD 自定义资源 • 二次开发扩展 Kubernetes API CRD 的基本原理 ① 观察资源的当前状态 ② 分析当前状态与期望状态的差别 ③ 调用 API 消除差别 TestCluster app=test OnDelete WorkQueue List/Watch - CRD - Pod Write Informer Worker ReadOnly • Informer:监听事件并触发回调函数的二级缓存工具包 • WorkQueue:事件合并、过滤、延时、限速 Operator CRD 里有什么 MySQL CRD • Spec:配置 & 期望状态 • Status:当前状态 MySQL0 码力 | 42 页 | 4.77 MB | 1 年前3
 使用 Docker 建立 MySQL 集群docker <你的用户名> 对于 Centos6,首先要把企业常用软件包的软件源安装上 yum install epel-release 然后再 yum install docker-io 第二步 运行 Mariadb 容器 首先要将数据镜像拉下来 docker pull mariadb:latest 注意,如果不加:latest 标签,docker 会把所有的镜像版本都拉下来。 然后我0 码力 | 3 页 | 103.32 KB | 1 年前3 使用 Docker 建立 MySQL 集群docker <你的用户名> 对于 Centos6,首先要把企业常用软件包的软件源安装上 yum install epel-release 然后再 yum install docker-io 第二步 运行 Mariadb 容器 首先要将数据镜像拉下来 docker pull mariadb:latest 注意,如果不加:latest 标签,docker 会把所有的镜像版本都拉下来。 然后我0 码力 | 3 页 | 103.32 KB | 1 年前3
 MySQL 数据库架构灾难恢复解决方案"statusText": "All Clusters available." } Copyright @ 2021 Oracle and/or its affiliates. 23 / 55 添加第二个副本集群 mysqlsh> rom = clusterset.createReplicaCluster( { "clusters": { 'localhost:5551', "ROM":0 码力 | 52 页 | 3.07 MB | 1 年前3 MySQL 数据库架构灾难恢复解决方案"statusText": "All Clusters available." } Copyright @ 2021 Oracle and/or its affiliates. 23 / 55 添加第二个副本集群 mysqlsh> rom = clusterset.createReplicaCluster( { "clusters": { 'localhost:5551', "ROM":0 码力 | 52 页 | 3.07 MB | 1 年前3
共 7 条
- 1













