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日

相关文章

  • 如何在MySQL中设置外键约束以及外键的作用

    1.外键的作用,主要有两个:   一个是让数据库自己通过外键来保证数据的完整性和一致性   一个就是能够增加ER图的可读性 2.外键的配置    1)先创建一个主表,代码如下:    #创建表student,并添加各种约束   create table student ( id int primary key , #主键约束 name varchar(20)…

    MySQL 2023年4月13日
    00
  • MySQL选错索引的原因以及解决方案

    下面是详细的攻略: MySQL选错索引的原因 选错索引在MySQL中是一个常见的问题,通常会导致查询性能下降甚至出现全表扫描的情况。下面是一些可能导致选错索引的原因: 非常规查询模式:当查询表的方式不是传统方式,如在WHERE语句中使用函数或表达式时,可能会导致MySQL无法使用最优索引,从而选择了错误的索引。 不同的查询条件:在不同的查询条件下,选择不同的…

    MySQL 2023年5月18日
    00
  • Mysql5.7及以上版本 ONLY_FULL_GROUP_BY报错的解决方法

    针对Mysql5.7及以上版本中出现的ONLY_FULL_GROUP_BY报错,我们可以采取以下的解决方法: 方法一:修改系统参数 使用管理员账号登录Mysql服务器 运行命令“show variables like ‘sql_mode’;”,查看当前的sql_mode值,可能会输出类似“ONLY_FULL_GROUP_BY,STRICT_TRANS_TAB…

    MySQL 2023年5月18日
    00
  • mysql面试小结

    MySQL 1. 索引 1.1 什么是索引 索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针。 索引是一种数据结构。数据库索引,是数据库管理系统中一个排序的数据结构,以协助快速查询、更新数据库表中数据。索引的实现通常使用B树及其变种B+树。 更通俗的说,索引就相当于目录。为了方便查找书中的内容,…

    MySQL 2023年4月18日
    00
  • MySQL闪回(flashback)原理与实战

    MySQL闪回(flashback)原理与实战 MySQL闪回(Flashback)是指在不使用外部备份文件的情况下,将MySQL数据库恢复到之前某个时间点的状态。闪回可以用于撤销对数据库误操作或临时重建数据库,避免数据库因为外部因素的破坏而无法使用。下面将详细讲解MySQL闪回的原理和实战步骤。 原理解析 MySQL闪回的实现原理是将当前的数据表重命名,然…

    MySQL 2023年5月18日
    00
  • 配置ogg异构oracle-mysql(3)目的端配置

    目的端配置大致分为如下三个步骤:配置mgr,配置checkpoint table,配置应用进程 在目的端先创建一张表,记得带主键: mysql> create database hr;Query OK, 1 row affected (0.00 sec) mysql> use hrDatabase changedmysql> create …

    MySQL 2023年4月12日
    00
  • MySql 安装时的1045错误

    MySQL 安装时的 1045 错误通常是因为用户名或密码输入错误或者没有授权的账户尝试连接MySQL数据库,导致连接被拒绝。如果你遇到了这个问题,可以按照以下步骤解决。 错误示例 当导入数据库时,出现以下错误: ERROR 1045 (28000): Access denied for user ‘root’@’localhost’ (using pass…

    MySQL 2023年5月18日
    00
  • SQL性能优化方法及性能测试

    SQL性能优化方法及性能测试攻略 1. SQL性能优化方法 1.1 数据库设计优化 数据库设计是SQL性能优化的重要因素,一个好的数据库设计可以最大程度地减少SQL语句的执行时间。以下为常见的数据库设计优化方法: 合理设计表结构,减少表之间的连接次数,尽量避免大表关联查询 设计合适的索引,避免全表扫描,提高查询速度 避免不必要的字段查询,只查询必要的字段(尤…

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