mysql性能优化工具–tuner-primer使用介绍

Mysql性能优化工具 - tuner-primer使用介绍

Mysql数据库是Web应用程序最常用的数据库之一,但是如果在高负载下使用不当,可能会降低系统性能。因此,优化MySQL数据库服务器的配置至关重要。MySQL性能优化工具如tuner和primer是帮助管理员达到最大化服务器性能的好工具。本文将介绍tuner和primer的基本用法。

1. Mysql性能优化工具 - tuner

tuner是一个Shell脚本,它会从正在运行的MySQL实例中检索一些关键系统参数,然后输出一些建议的更改。tuner使用经验丰富的专业人员开发的一组标准分析规则,这些规则基于服务器规模、负载类型、硬件和其他因素。管理员不需要改变tuner的代码就能使用它。

安装tuner

  • 下载tuner:
mkdir -p /opt/tuner && cd $_ && wget https://raw.githubusercontent.com/major/MySQLTuner-perl/master/mysqltuner.pl
  • 更改脚本权限,使其可以执行:
chmod +x /opt/tuner/mysqltuner.pl

运行tuner

  • 运行tuner:
cd /opt/tuner && ./mysqltuner.pl
  • tuner将输出当前MySQL实例运行的统计信息和分析结果,如下所示:
>> MySQLTuner 1.7.17 - Major Hayden <major@mhtx.net>
>> Bug reports, feature requests, and downloads at http://mysqltuner.com/
>> Run with '--help' for additional options and output filtering
[--] Skipped version check for MySQLTuner script
[OK] Logged in using credentials from debian maintenance account.
[OK] Currently running supported MySQL version 10.3.29-MariaDB-0+deb10u1
[OK] Operating on 64-bit architecture

-------- Log file Recommendations ----------------------------------------------------------------------
[--] Log file: /var/log/mysql/mariadb-slow.log(0B)
[OK] Log file /var/log/mysql/mariadb-slow.log exists.
[OK] Log file /var/log/mysql/mariadb-slow.log is readable.
[OK] Log file /var/log/mysql/mariadb-slow.log is not empty.
[OK] Log file /var/log/mysql/mariadb-slow.log is smaller than 32 Mb.
[!!] /var/log/mysql/error.log : !!!!!!1MB (>= 1MB)Log file size seems excessive, should be limited to 25% of buffer pool size 
[!!] /var/lib/mysql/ibdata1: File exists but is not readable..

-------- Storage Engine Statistics -----------------------------------------------------------------
[--] Status: +InnoDB +MEMORY +Aria
[--] Data in InnoDB tables: 164.2G (Tables: 484)
[--] Data in MEMORY tables: 2.9M (Tables: 11)
[--] Data in Aria tables: 16.0M (Tables: 10)
[OK] Total fragmented tables: 0

[OK] Up for 15:21:47 (23K q [0.002 qps], 5.2K conn, TX: 929M, RX: 5G)

[--] Uptime / reliability => 15:21:47 / 99%
[--] Uptime since flush_status was reset / Avg uptimes => 89,101s / 89,101s
[--] Total buffers: 5.0G global + 8.2M per thread (200 max threads)
[OK] Maximum reached memory usage: 6.6G (26.41% of installed RAM)
[OK] Maximum possible memory usage: 6.6G (26.41% of installed RAM)
[!!] Slow queries: 1% (273/23K)
[OK] Highest usage of available connections: 29% (59/200)
[OK] Aborted connections: 0.69%  (36/5190)
[!!] name resolution is active : a reverse name resolution is made for each new connection and can reduce performance
[!!] Query cache may be disabled by default due to mutex contention.
[OK] Query cache efficiency: 34.5% (3K cached / 10K selects)
[OK] Query cache prunes per day: 0
[OK] Sorts requiring temporary tables: 0% (0 temp sorts / 3 sorts)
[!!] Joins performed without indexes: 19
  • tuner所做的更改建议将显示在屏幕下方。

2. Mysql性能优化工具 - primer

primer是一个用PHP写的Web应用程序,它可以使用类似tuner的方式分析正在运行的MySQL实例,并提供建议。不同的是,primer将结果呈现为直观易懂的界面,更容易让管理员查看遗漏,因此,primer是一个不错的辅助选项。

安装primer

  • 安装PHP-
apt-get install php-cli php-mysql
  • 下载primer:
cd /var/www/html && git clone https://github.com/Grokzen/mysql-primer.git
  • 更改MySQL管理员密码:
    在MySQL命令行界面下进行:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码';
  • 配置该应用:
cd /var/www/html/mysql-primer/ && cp includes/config.sample.inc.php includes/config.inc.php
  • 更改配置:
    将应用的MySQL凭证设置为刚刚更改的凭证,可以打开用文本编辑器打开配置文件,如vim:
vim /var/www/html/mysql-primer/includes/config.inc.php
## 修改以下几段
define("MYSQL_HOST", "localhost"); 
define("MYSQL_PORT", "3306"); 
define("MYSQL_USER", "root"); 
define("MYSQL_PASS", "新密码");

运行primer

  • 打开primer:
    在Web浏览器中访问http://[服务器IP]/mysql-primer/,如http://127.0.0.1/mysql-primer/

  • 输入MySQL凭证:
    在访问primer后,将弹出一个窗口,询问您的MySQL凭证。输入您最近更改的MySQL凭证,并单击“提交”。

  • primer分析当前运行的MySQL实例:
    完成凭证验证后,primer将显示您的MySQL服务器的运行状态和性能建议列表。

示例

示例1

管理员运行tuner并遵循tuner提供的建议进行调整。tuner建议修改MySQL安装实例的InnoDB磁盘I/O设置,因此管理员在MySQL配置中添加以下行:

innodb_flush_log_at_trx_commit=0
innodb_buffer_pool_size=4G
innodb_io_capacity=4000

示例2

管理员运行primer并遵循primer提供的建议进行调整。primer建议增加服务器的最大连接数,因此管理员通过以下方式调整:

  • 在/etc/mysql/mysql.conf.d/mysqld.cnf中添加以下行:
max_connections=10000
  • 重新启动MySQL:
sudo systemctl restart mysql

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:mysql性能优化工具–tuner-primer使用介绍 - Python技术站

(0)
上一篇 2023年5月19日
下一篇 2023年5月19日

相关文章

  • HIVE配置mysql metastore

    HIVE配置mysql metastore    hive中除了保存真正的数据以外还要额外保存用来描述库、表、数据的数据,称为hive的元数据。这些元数据又存放在何处呢?    如果不修改配置hive默认使用内置的derby数据库存储元数据。    derby是apache开发的基于java的文件型数据库。    可以检查之前执行命令的目录,会发现其中产生了…

    MySQL 2023年4月13日
    00
  • Mysql错误:Too many connections的解决方法

    当MySQL服务器连接请求过多时,就会发生”Too many connections”,也就是连接过多的错误,这会导致无法继续连接,进而耽误业务处理。本文将提供几种解决方案来避免这种错误的发生。 查找原因 首先需要了解何种原因会引起这种错误。在MySQL中,可以通过以下命令来检查当前的连接数:show variables like ‘max_connecti…

    MySQL 2023年5月18日
    00
  • MySQL通用查询日志(General Query Log)

    MySQL通用查询日志(General Query Log)是用于记录MySQL服务器上所有执行的查询操作的一个日志文件。它可以帮助管理员更好地了解MySQL服务器的性能和运行状态,为优化和监控MySQL服务器提供重要信息。 MySQL通用查询日志可以包含以下信息: 执行时间:记录查询执行的开始时间和结束时间,可以帮助管理员了解查询的执行性能。 用户名和主机…

    MySQL 2023年3月10日
    00
  • MySQL唯一约束(UNIQUE KEY)详解

    MySQL的唯一约束是一种用于确保表中某一列的每个值都是唯一的约束。它可以应用于单个列或多个列,以确保每个组合值都是唯一的。 在MySQL中,可以使用UNIQUE关键字定义唯一约束。以下是使用唯一约束的语法: CREATE TABLE table_name ( column1 datatype UNIQUE, column2 datatype, … );…

    MySQL 2023年3月9日
    00
  • 浅谈MySQL中的子查询优化技巧

    在MySQL中,子查询是一种常用的查询方式,它可以帮助我们在一个查询过程中使用嵌套的SELECT语句,请详细阐述一下如何优化MySQL中的子查询。 一、使用EXISTS替代IN和NOT IN 在MySQL中,如果我们需要查询一个表中所有包含某个值的行,通常会使用IN或NOT IN语句,例如: SELECT * FROM table1 WHERE id IN(…

    MySQL 2023年5月19日
    00
  • 详解MySQL单列索引和联合索引

    详解MySQL单列索引和联合索引 在关系型数据库中,索引是一种常见且重要的优化技术,可加速查询操作的执行速度。MySQL中,常见的索引类型包括单列索引和联合索引。本文将详细介绍这两种索引类型。 单列索引 定义 单列索引(也称为单字段索引或简单索引)是对一列或多列中的单个字段创建的索引。单列索引包括唯一索引和普通索引两种类型。 唯一索引:索引字段的值必须唯一,…

    MySQL 2023年5月19日
    00
  • MySQL InnoDB的3种行锁定方式

    MySQL InnoDB引擎提供了三种行锁定方式:共享锁(S锁)、排它锁(X锁)和意向锁(IS锁和IX锁)。 共享锁(S锁) 共享锁(S锁)是用来保证读取的数据在事务间的一致性。多个事务可以同时获取共享锁定,因为他们都只是读取数据而不做任何修改。但是,一个事务获取了共享锁之后,其他事务便不能再对该行加排它锁。 语法:SELECT … FOR SHARE …

    MySQL 2023年3月10日
    00
  • 重现一条简单SQL的优化过程

    GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源。 GreatSQL是MySQL的国产分支版本,使用上与MySQL一致。 作者: JennyYu 文章来源:GreatSQL社区投稿 背景 接到客户诉求说一条SQL长时间运行不出结果,让给看看怎么回事,SQL不复杂,优化措施也不复杂,但是要想SQL达到最优状态,也是需要经过一番考量并做…

    MySQL 2023年4月18日
    00
合作推广
合作推广
分享本页
返回顶部