MySQL 常用程序先容

打印 上一主题 下一主题

主题 994|帖子 994|积分 2984

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
以下是一些常用的MySQL程序:
程序名作⽤
mysqldMySQL的保卫进程即 MySQL 服务器,要使⽤MySQL 服务器 mysqld必须正在运⾏状态
mysql           MySQL客⼾端程序,⽤于交互式输⼊ SQL 语句或以批处理惩罚模式从⽂件执⾏SQL的命令⾏⼯具      
mysqlcheck⽤于查抄、修复、分析和优化表的表维护客⼾端
mysqldump将 MySQL 数据库转储到 SQL、⽂本或 XML ⽂件中的客⼾端
           mysqlimport      将⽂本⽂件导⼊到表的客⼾端⼯具
           mysqladmin                 执⾏管理操作的客⼾端,例如创建或删除数据库、重新加载授权表、将表刷新到磁盘以及重新打开⽇志⽂件。mysqladmin还可以⽤于从服务器检索版本、进程和状态信息。      
mysqlshow显⽰数据库、表、列和索引信息的客⼾端
mysqldumpslow           ⽤于读取和汇总慢速查询⽇志内容的实⽤程序      
mysqlbinlog           从⼆进制⽇志中读取SQL语句的实⽤程序。mysqlbinlog ⽂件中包含的已执⾏SQL语句的⽇志,可⽤于从瓦解中恢复数据。      
mysqlslap           客⼾端负载⼯具,模仿多个客⼾端同时访问MySQL服务器,并报告每个阶段的使⽤时间。      
   mysqld - MySQL 服务器

     mysqld也被称为MySQL服务器,是⼀个多线程程序,对数据⽬录进⾏访问管理(包含数据库和        表)。数据⽬录也是其他信息(如⽇志⽂件和状态⽂件)的默认存储位置。当 MySQL 服务器启动时,会侦听指定的端⼝、处理惩罚来⾃客⼾端程序的⽹络毗连,并管理不同客⼾端对数据库的访问.      
       mysql - MySQL 命令行客户端

       mysql是⼀个简朴的 SQL shell, 可以输⼊命令和执⾏SQL语句,当执⾏SQL语句时,查询效果以           ASCII 表格式显⽰.在终端毗连MySQL服务器可以使用如下指令:     
  1. # ⻓选项格式
  2. mysql --user=user_name --password [db_name]
  3. # 短选项格式
  4. mysql -uuser_name -p [db_name]
  5. # 终端回显,输⼊密码
  6. Enter password: your_password
复制代码
  mysql 客户端选项

   
选项--⻓格式短格式说明
--host-h               --host=        host_name         , -h        host_name                       毗连到指定主机上的 MySQL 服务        
--port-P --port=port_num , -Pport_num
TCP/IP 毗连使⽤的端⼝号
--user               -u                       --user=        user_name         ,         -u        user_name                       ⽤于毗连到MySQL 服务器的⽤户名        
               --password                       -p                       --password[=        password        ]         ,         -p[        password        ]                       ⽤于毗连到MySQL 服务器的密码。可选,如果没有给出, 会提⽰⽤户输⼊        
               --defaults-file                               --defaults-file=        file_name                      使⽤指定的选项⽂件。如果该⽂件不存在,则会发⽣错误。        
--default-character-set               --default-character-set=        charset_name                       charset_name         将作为        客⼾端和当前毗连的默认字符集,例: utf8mb4        
               --database                       -D                       --database=        db_name         ,         -D        db_name                       要使⽤的数据库        
               --compress                       -C                       --compress         ,         -C                       如果大概,压缩客⼾端和服务器之间传输的所有信息        
               --reconnect                       --reconnect                       如果客⼾端与服务器的毗连丢失,⾃动尝试重新毗连        
--quick               -q                       --quick         ,         -q                       不缓存查询效果,收到⼀⾏打印⼀⾏,如果输出被挂起,大概会降低服务器速度        
--protocol               --protocol={TCP|SOCKET|PIPE|MEMORY}                       ⽤于毗连到服务器的传输协议, 默认为TCP        
               --delimiter                       --delimiter=        要设置的        SQL语句分隔符                      设置SQL语句分隔符。默认值为分号 (         ;         )        
--execute-e               --execute=        statement         ,         -e        statement                       执⾏指定的SQL语句并退出。        
--version-V               --version         ,         -V                       显⽰版本信息并退出。        
--help-?               --help ,         -?                       显⽰资助信息并退出。        
            在命令行中使用选项

           命令⾏中指定选项遵循以下规则:           

  • 选项应在程序名之后给出
  • 选项以单破折号" - "或双破折号" -- "号开头, - 表⽰短格式, -- 表⽰⻓格式,例如:-?和 --help 都表⽰MySQL 程序显⽰他的资助消息
           

  • 选项名称区分⼤⼩写。 -v 和 -V 都是正当的,但含义不同,它们分别是 --verbose 和 --version 选项的相应缩写情势
            

  • 对于带值的⻓格式选项,通常⽤ = 符号分隔选项名称和值。对于带值的短选项,选项值可以紧跟在选项之后,也可以⽤空格隔开,例如: --host=127.0.0.1 、 -h127.0.0.1 和 -h 127.0.0.1 是等价的。 但是对于密码选项的短格式,如果要指定密码,选项与值之间不能有空格,如下所⽰:
                     
  1. mysql -ptest # test表⽰密码,但没有指定要访问的数据库
  2. mysql -p test # test 表⽰指定了访问的数据库,但没有指定密码
复制代码
     

  • 对于采⽤数值的选项,该值可以带有后缀 K , M 或 G 以指⽰乘数 1024、1024^2或 1024^3,例如,以下命令告诉 mysqladmin对服务器执⾏ 1024 次 ping,每次 ping 之间休眠 3 秒
     
  1. mysqladmin --count=1K --sleep=3 ping -uroot -p
复制代码
     

  • 在命令⾏中包含空格的选项值必须⽤引号引起来。例如, --execute (or -e ) 选项与mysql⼀起使⽤时,表⽰将⼀个或多个 SQL 语句发送给服务器执⾏并显⽰效果
     
  1. mysql -u root -p -e "SELECT VERSION();SELECT NOW();"
复制代码
     选项(设置)文件

             ⼤多数 MySQL 程序都可以从选项⽂件(设置⽂件)中读取启动选项。可以在选项⽂件中指定常⽤选项,如许就不⽤在每次运⾏程序时都在命令⾏中输⼊它们。⼤部分选项⽂件都是纯⽂本格式,可以使⽤任何⽂本编辑器创建。             使用⽅法

             选项        --defaults-file        可以指定要使⽤的选项⽂件,客⼾端程序会读取并应⽤选项⽂件中的相关设置                  
  1. # Linux
  2. mysql --defaults-file=/etc/mysql/my.cnf -uroot -p
  3. # windows下
  4. mysql "--defaults-file=C:\ProgramData\MySQL\MySQL Server 8.0\my.ini" -uroot -p
复制代码
      选项⽂件位置及加载次序

               MySQL 按以下表格中的次序查找并读取选项⽂件,如果⽂件不存在则需要⼿动创建。读取次序从上到下,后读取的⽂件中设置的选项优先级越⾼。              

  • 在 Windows 系统读取选项⽂件
      
⽂件名说明
                       %WINDIR%\my.ini ,             %WINDIR%\my.cnf                                   全局,%WINDIR%是一个情况变量,它代表Windows操作系统的安装目录,通常等于C:\Windows            
                       C:\my.ini             ,             C:\my.cnf                                   全局            
                       BASEDIR            \my.ini             ,             BASEDIR            \my.cnf                                   全局,其中            BASEDIR指mysql的安装路径,这是最常用的设置文件            
                       defaults-extra-file                                   如果存在其他选项⽂件可以通过             --defaults-extra-file 选项指定            
%APPDATA%\MySQL\.mylogin.cnf                       登录路径选项(仅限客⼾端),%APPDATA% 表⽰应⽤程序数据的⽬录,如C:\Users\[用户名]\AppData\Roaming            
                       DATADIR            \mysqld-auto.cnf                                   系统变量 (仅限服务器)            
               

  • 在 Unix 和 Linux 系统上读取的选项⽂件
        
⽂件名                         说明            
                         /etc/my.cnf                                      全局            
                         /etc/mysql/my.cnf                                      全局            
                         $MYSQL_HOME/my.cnf                                      服务器特定选项(仅限服务器),MYSQL_HOME              是设置的情况变量路径            
                         defaults-extra-file                                      如果存在其他选项⽂件可以通过              --defaults-extra-file              选项指定            
                         ~/.my.cnf                                      ⽤⼾特定选项,MYSQL_HOME              是设置的情况变量路径            
                         ~/.mylogin.cnf                                      ⽤⼾特定的登录路径选项(仅限客⼾端)            
                         DATADIR             /mysqld-auto.cnf                                      系统变量 (仅限服务器),D             ATADIR              代表MySQL数据⽬录            
                                          选项⽂件中指定选项时,省略两个前导破折号,并且每⼀⾏表⽰⼀个选项,例如: --quick         和         --host=127.0.0.1         在选项⽂件中应表⽰成         quick         和 host=127.0.0.1                               选项⽂件中的空⾏会被忽略。⾮空⾏可以采⽤以下任何情势:                          ◦          #         comment          ,           ;         comment                          注释⾏以          #          或          ;          开,注释可以从⼀⾏的中间开始                          ◦          [          group          ]                          设置选项的程序或组的名称,不区分⼤⼩写。如果选项组名称与程序名称相同,则组中的选项专⻔应⽤于该程序,例如, [mysqld]          和          [mysql]          组分别适⽤于mysqld服务端程序和 mysql客⼾端程序                          ◦          [client] MySQL发⾏版中所有客⼾端程序都会读取并应⽤这个组下的选项(除了mysqld),在这个组下可以指定适⽤于所有客⼾端程序的通⽤选项,例如设置⽤⼾名和密码(但要确保只有⾃⼰才可以访问这个⽂件以防⽌密码泄漏)。                         ◦          opt_name                          相当于命令⾏上的选项名                          ◦          opt_name          =          value                          选项名对应的值,可以使⽤转义序列          \b          ,          \t          ,          \n          ,          \r          ,          \\          和          \s          来表⽰退格符、制表符、换⾏符、回⻋符、反斜杠和空格字符                                                    ◦       在选项⽂件中使⽤ !include        指令来包含其他选项⽂件,例如:        !include /home/mydir/myopt.cnf                         案例:设置客⼾端全局编码格式                  

  • 在Linux下编辑全局设置⽂件默认位置 /etc/mysql/my.cnf ,初始内容如下:
      
  1. root@hcss-ecs-9734:/# vim etc/mysql/my.cnf
  2. # Copyright (c) 2015, 2024, Oracle and/or its affiliates.
  3. #
  4. # This program is free software; you can redistribute it and/or modify
  5. # it under the terms of the GNU General Public License, version 2.0,
  6. # as published by the Free Software Foundation.
  7. # ... 省略
  8. # * IMPORTANT: Additional settings that can override those from this file!
  9. #   The files must end with '.cnf', otherwise they'll be ignored.
  10. #
  11. !includedir /etc/mysql/conf.d/
  12. !includedir /etc/mysql/mysql.conf.d/
  13. # 以下区域可以根据需要进⾏配置
复制代码
      

  • 在已有内容下⽅输⼊相应的设置,我们要为客⼾端设置全局的编码格式为utf8mb4, 那么在[client] 节点下指定相应的选项即可
                       
  1. [client] # 所有客⼾端程序者会读取这个节点下的配置信息
  2. default-character-set=utf8mb4 # 指定编码格式为utf8mb4
复制代码
    从.sql⽂件执⾏ SQL 语句

     使⽤source命令导⼊

           有时间我们需要从.sql ⽂件执⾏⼀些SQL语句,⽐如要把⼀个数据库从⼀台服务器A复制到另⼀台服务器B上,那么可以先从服务器A导出数据到.sql⽂件,然后在服务器B执⾏这个.sql⽂件,我们可以⽤help命令检察命令列表,可以看到有⼀个source 命令如下所⽰:               
  1. mysql> help
  2. # ... 省略
  3. source    (\.) Execute an SQL script file. Takes a file name as an argument.
  4. # ... 省略
复制代码
            下⾯我们演⽰⼀下source命令的使⽤⽅法                  

  • 准备要执⾏的.sql⽂件,名为test_db.sql,内容如下:
      
  1. SET NAMES utf8mb4;
  2. SET FOREIGN_KEY_CHECKS = 0;
  3. DROP DATABASE IF EXISTS `test_db`;
  4. CREATE DATABASE `test_db` CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
  5. USE `test_db`;
  6. -- ----------------------------
  7. -- Table structure for classes
  8. -- ----------------------------
  9. DROP TABLE IF EXISTS `classes`;
  10. CREATE TABLE `classes` (
  11. `id` int(11) NOT NULL AUTO_INCREMENT,
  12. `name` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL
  13. DEFAULT NULL,
  14. `desc` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL
  15. DEFAULT NULL,
  16. PRIMARY KEY (`id`) USING BTREE
  17. ) ENGINE = InnoDB AUTO_INCREMENT = 4 CHARACTER SET = utf8mb4 COLLATE =
  18. utf8mb4_general_ci ROW_FORMAT = Dynamic;
  19. -- ----------------------------
  20. -- Records of classes
  21. -- ----------------------------
  22. INSERT INTO `classes` VALUES (1, '计算机系2019级1班', '学习了计算机原理、C和Java语
  23. ⾔、数据结构和算法');
  24. INSERT INTO `classes` VALUES (2, '中⽂系2019级3班', '学习了中国传统⽂学');
  25. INSERT INTO `classes` VALUES (3, '⾃动化2019级5班', '学习了机械⾃动化');
  26. -- ----------------------------
  27. -- Table structure for course
  28. -- ----------------------------
  29. DROP TABLE IF EXISTS `course`;
  30. CREATE TABLE `course` (
  31. `id` int(11) NOT NULL AUTO_INCREMENT,
  32. `name` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL
  33. DEFAULT NULL,PRIMARY KEY (`id`) USING BTREE
  34. ) ENGINE = InnoDB AUTO_INCREMENT = 7 CHARACTER SET = utf8mb4 COLLATE =
  35. utf8mb4_general_ci ROW_FORMAT = Dynamic;
  36. -- ----------------------------
  37. -- Records of course
  38. -- ----------------------------
  39. INSERT INTO `course` VALUES (1, 'Java');
  40. INSERT INTO `course` VALUES (2, '中国传统⽂化');
  41. INSERT INTO `course` VALUES (3, '计算机原理');
  42. INSERT INTO `course` VALUES (4, '语⽂');
  43. INSERT INTO `course` VALUES (5, '⾼阶数学');
  44. INSERT INTO `course` VALUES (6, '英⽂');
  45. -- ----------------------------
  46. -- Table structure for score
  47. -- ----------------------------
  48. DROP TABLE IF EXISTS `score`;
  49. CREATE TABLE `score` (
  50. `score` decimal(3, 1) NULL DEFAULT NULL,
  51. `student_id` int(11) NULL DEFAULT NULL,
  52. `course_id` int(11) NULL DEFAULT NULL
  53. ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci
  54. ROW_FORMAT = Dynamic;
  55. -- ----------------------------
  56. -- Records of score
  57. -- ----------------------------
  58. INSERT INTO `score` VALUES (70.5, 1, 1);
  59. INSERT INTO `score` VALUES (98.5, 1, 3);
  60. INSERT INTO `score` VALUES (33.0, 1, 5);
  61. INSERT INTO `score` VALUES (98.0, 1, 6);
  62. INSERT INTO `score` VALUES (60.0, 2, 1);
  63. INSERT INTO `score` VALUES (59.5, 2, 5);
  64. INSERT INTO `score` VALUES (33.0, 3, 1);
  65. INSERT INTO `score` VALUES (68.0, 3, 3);
  66. INSERT INTO `score` VALUES (99.0, 3, 5);
  67. INSERT INTO `score` VALUES (67.0, 4, 1);
  68. INSERT INTO `score` VALUES (23.0, 4, 3);
  69. INSERT INTO `score` VALUES (56.0, 4, 5);
  70. INSERT INTO `score` VALUES (72.0, 4, 6);
  71. INSERT INTO `score` VALUES (81.0, 5, 1);
  72. INSERT INTO `score` VALUES (37.0, 5, 5);
  73. -- ----------------------------
  74. -- Table structure for student
  75. -- ----------------------------
  76. DROP TABLE IF EXISTS `student`;
  77. CREATE TABLE `student` (
  78. `id` int(11) PRIMARY KEY AUTO_INCREMENT,
  79. `sn` int(11) NOT NULL COMMENT '学号',
  80. `name` varchar(20) NOT NULL COMMENT '姓名',
  81. `mail` varchar(20) COMMENT 'QQ邮箱'
  82. ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci
  83. ROW_FORMAT = Dynamic;
  84. -- ----------------------------
  85. -- Records of student
  86. -- ----------------------------
  87. INSERT INTO `student` VALUES (1, 50001, '张三', 'zs@bit.com');
  88. INSERT INTO `student` VALUES (2, 50002, '李四', 'ls@bit.com');
  89. INSERT INTO `student` VALUES (3, 50003, '王五', 'ww@bit.com');
  90. INSERT INTO `student` VALUES (4, 50004, '赵六', 'zl@bit.com');
  91. INSERT INTO `student` VALUES (5, 50005, '钱七', 'qq@bit.com');
  92. SET FOREIGN_KEY_CHECKS = 1;
复制代码
      

  • 确定.sql⽂件的绝对路径:/home/lbk/test_db/database.sql
  • 毗连数据库检察已有数据库
      

      

  • 使⽤source命令执⾏.sql⽂件的SQL语句
      
  1. source /home/lbk/test_db/database.sql
复制代码
      

  • 检察数据库并查询数据,验证导⼊是否成功
      

       使⽤mysql客⼾端导⼊

       直接使⽤mysql客⼾端程序导⼊.sql⽂件并执⾏相应的SQL语句,可以使⽤以下命令
      
  1. mysql db_name < text_file # 在指定的数据库下执⾏SQL,前提是数据库必须提前建⽴好
  2. mysql < text_file # 不指定数据库.sql中必须有USE [database_name],来指定要操作的数据库
复制代码
      mysqlcheck - 表维护程序

                             mysqlcheck客⼾端⽤于执⾏表维护,可以对表进⾏:分析、查抄、优化或修复操作。            

  • 分析的作⽤是检察表的关键字分布,可以或许让 sql ⽣成正确的执⾏计划(⽀持 InnoDB,MyISAM,NDB)
  • 查抄的作⽤是查抄表的完整性以及数据库表和索引是否损坏(⽀持 InnoDB,MyISAM, ARCHIVE,CSV)
  • 优化的作⽤是接纳空间、减少碎⽚、提⾼I/O(⽀持 InnoDB,MyISAM,ARCHIVE)
  • 修复的作⽤是修复大概已经损坏的表(⽀持 MyISAM,ARCHIVE,CSV)
             ⼀般通过以下三种⽅法使⽤mysqlcheck                  
  1. mysqlcheck [options] db_name [tbl_name ...]
  2. mysqlcheck [options] --databases db_name ...
  3. mysqlcheck [options] --all-databases
复制代码
              如果在         db_name         后没有指定任何表名,或者使⽤         --databases         或         --all-databases         选项,那么整个数据库都会被查抄。                              
         mysqlcheck有如下常⽤选项,可以在命令⾏中指定,也可以在选项⽂件中通过 [mysqlcheck] 和 [client]          组进⾏指定         
选项                           说明              
                           --analyze,-a                                         分析表              
--auto-repair如果查抄的表有损坏,则⾃动修复它。所有表都查抄过之后才进⾏须要的修复
                           --check,-c                                         查抄表中的错误。mysqlcheck的默认操作              
                           --check-only-changed,-C              仅查抄⾃前次查抄以来更改过的表
                           --databases,-B              --databases db_name 多个数据库名⽤空格隔开,处理惩罚指定命据库中的所有表
                           --force, -f                                         即使发⽣SQL错误也要继承              
                           --optimize,-o              优化表
--repair,-r执⾏大概进⾏的任务修复操作,除了唯⼀键
                           --skip-database                                         --skip-database=              db_name                                         不需要执⾏查抄的数据库名(区分⼤⼩写)              
--tables                           --tables=              table_name               多个表名⽤空格隔开                                         在选项之后的所著名称参数都被视为表名。              
--use-frm                           对于MyISAM表的修复操作              
         使用如下:
         

  • 分析test_db数据库
        
  1. mysqlcheck -a test_db
复制代码
        

                     

  • 查抄test_db数据库
      
  1. mysqlcheck -a test_db
复制代码
              
                              

  • 修复test_db数据库
  
  1. mysqlcheck -r test_db
复制代码
      
                我们可以知道,修复不支持InnoDB存储引擎,如果要修复InnoDB存储引擎的数据,我们需要把存储引擎更换为MyIsam。          mysqldump - 数据库备份程序

         mysqldump客⼾端程序可以执⾏逻辑备份并⽣成⼀组SQL语句,其中包含原始数据库和表的定义              以及表中的数据,以便实现对数据库的简朴备份或复制。mysqldump命令可以⽣成CSV、或XML格式的⽂件。                   mysqldump的⽅法通常有以下使⽤,可以转储⼀个或多个表或数据库,如下所⽰:               
  1. mysqldump [options] db_name [tbl_name ...] > 备份文件的路径
  2. mysqldump [options] --databases db_name ... > 备份文件的路径
  3. mysqldump [options] --all-databases > 备份文件的路径
复制代码
            如果在        db_name        后没有指定任何表名,或者使⽤        --databases        或        --all-databases        选项,那么整个数据库都会被转储。                           mysqldump有如下常⽤选项,可以在命令⾏中指定,也可以在选项⽂件中通过         [mysqldump]         和[client] 组进⾏指定                                
选项                 说明         
                 --add-drop-database                          在每个          CREATE DATABASE          语句之前添加          DROP DATABASE          语句         
                 --add-drop-table                          在每个          CREATE TABLE          语句之前添加          DROP TABLE          语句         
                 --add-drop-trigger                          在每个          CREATE TRIGGER          语句之前添加          DROP TRIGGER          语句         
                 --add-locks                          ⽤          LOCK TABLES          和          UNLOCK TABLES          语句包裹每个表转储         
                 --all-databases,-A                          转储所有数据库中的所有表         
                 --databases,-B                          --databases=         db_name          多个数据库名⽤空格隔开,将参数解释为数据库名称并转储所有的表         
                 --comments,-i                          添加注释到转储⽂件         
                 --ignore-table                          --ignore-table         =db_name.table_name          多个表⽤空格隔开                          不转储给定的表         
                 --no-data,-d          不转储表内容
                 --triggers                          转储每个表中的触发器         
                 --xml,-X                          以XML格式输出         
    使用案例
   
  1. mysqldump test_db > /root/dump.sql
复制代码
   然后我们就会有/root/dump.sql文件,其中包含了test_dp数据库中所有的表及其数据,之后我们就可以在mysql中通过 source 命令执行/root/dump.sql文件,从而实现复制了test_dp数据库。
    mysqladmin - MySQL 服务器管理程序

         mysqladmin 是⼀个执⾏管理操作的客⼾端。可以⽤来查抄服务器的设置和当前状态,以及创建和删除数据库等。                             mysqladmin 可以使⽤以下语法:              
  1. mysqladmin [options] command [command-arg] [command [command-arg]] ...
复制代码
      语法中的command 表⽰命令,有些命令后⾯需要跟上⼀个参数,如下列出了mysqladmin 的常⽤命令:         
               选项        说明
version               显⽰来⾃服务器的版本信息        
               create         db_name                  创建⼀个数据库名为 db_name 
drop db_name删除名为 db_name 的数据库及其所有表
extended-status               显⽰服务器状态变量的值        
               password         new_password        设置新密码,password 后可以省略新密码,mysqladmin会在之后提⽰输⼊新密码
               processlist                       显⽰运动服务器线程的列表        
               kill         id         ,         id         ,...                       终⽌服务器线程。如果给出了多个线程ID值,则列表中不能有空格。        
               shutdown                       停⽌服务器        
   mysqlshow - 显⽰数据库、表和列信息

   mysqlshow 客⼾端可⽤于快速检察存在哪些数据库、数据库中的表以及表中的列或索引。mysqlshow 可以使⽤以下语法:
  
  1. mysqlshow [options] [db_name [tbl_name [col_name]]]
复制代码
      

  • db_name tbl_name col_name 可以使⽤通配符 *  或 _
  • 如果没有指定命据库,则显⽰所有数据库名称列表;如果没有指定表,则显⽰数据库中所有匹配的表;如果没有指定列,则显⽰表中所有匹配的列和列范例。
  • 输出仅显⽰当前权限可以访问的数据库、表或列的名称。
    使用如下:
   
  1. mysqlshow test_db;
复制代码
   

    mysqldumpslow - 总结慢查询⽇志⽂件

    在平常使⽤MySQL数据库时,经常进⾏查询操作,有些查询语句执⾏的时间⾮常⻓,当执⾏时间超过设定的阈值时,我们称这个查询为慢查询,慢查询的相关信息通常需要⽤⽇志记载下来称为慢查询⽇志,mysqldumpslow可以剖析慢查询⽇志⽂件并汇总其内容。
    例如,我们可以使用mysqladmin检察当前有多少条慢查询
   
  1. mysqladmin status
复制代码
                          

       我们可以看到当前一共有三条慢查询,我们在mysql中可以用如下命令检察有关慢查询的各种信息,例如设定的执行时间阈值,慢查询日记文件是否开启,及慢查询日记文件的位置。
      
  1. show variables like '%query%';
复制代码
      

               通常情况下,mysqldumpslow 会将相似的查询分组并显⽰择要输出,⼀般会把数字和字符串⽤         N                       和         "S"         代替,要想显⽰真实的值可以使⽤ -a 和 -n 选项。                               mysqldumpslow 可以使⽤以下语法                        
  1. mysqldumpslow [options] [log_file ...]
复制代码
                        由于通过         show variables like '%query%';          命令我们已经知道慢查询日记文件在          /var/lib/mysql/hcss-ecs-9734-slow.log          ,但是我们可以看到 slow_query_log 是关闭的,所以我们需要在设置文件          /etc/mysql/my.cnf          中添加如下设置,使用如下命令                        
  1. [mysqld]
  2. slow_query_log = 1
复制代码
        之后我们就可以使用如下命令检察慢查询日记文件里的内容
                        
  1. mysqldumpslow /var/lib/mysql/hcss-ecs-9734-slow.log
复制代码
        

                      mysqldumpslow 的常⽤选项
      
选项                       说明            
                       -a            不⽤ N 和 'S' 代替numbers和String
-n N                       在名称中包含N个以上的数字⽤             N             代替            
                       -g             pattern                                   仅考虑与指定模式匹配的慢查询            
                       -h             host_name                                   与*-slow.log⽂件名对应的MySQL服务器主机名,可以包含通配符。默认值是*(匹配所有)。            
                       -i             name            服务器实例的名称
-l                       不要从总时间中减去锁占⽤的时间            
-r倒序顺列
                       -s             sort_type            如何对输出进⾏排序
                       -t             N            显⽰输出中的前N个查询
               -s         sort_type         sort_type可选的值如下所⽰:               

  • t , at : 按查询时间或均匀查询时间排序,默认排序
  • l , al : 按锁占⽤时间或均匀锁占⽤时间排序
  • r , ar : 按发送的⾏数或均匀发送的⾏数排序
  • c : 按计数排序
      
                   mysqlbinlog - 处理惩罚⼆进制⽇志⽂件

               我们平常对数据库的修改,包罗对数据的增删改,都会被描述成⼀个"事件",每个"事件"都会以⼆进制情势记载在⼀个⽂件⾥,这个⽂件就是服务器的⼆进制⽇志⽂件,称为Binary Log或binlog。                       mysqlbinlog 可以或许以⽂本格式显⽰⼆进制⽇志⽂件中的内容。                              binlog的默认保存路径是数据⽬录:               

  • Linux下默认⽬录:/var/lib/mysql
  • Windows下默认⽬录:MySQL程序的安装路径\Data
               binlog是以 .00000n         结尾定名的⽂件,n不停递增                     
                               mysqlbinlog 可以使⽤以下语法                        
  1. mysqlbinlog [options] log_file ...
复制代码
                  例如要显⽰名为           binlog.000011           ⼆进制⽇志⽂件的内容,可以使⽤以下命令:                           
  1. mysqlbinlog binlog.000011
复制代码
                    mysqlbinlog 有如下常⽤选项,可以在命令⾏中指定,也可以在选项⽂件中通过            [mysqlbinlog] 和 [client] 组进⾏指定                                          
选项说明
--offset, -o                               --offset=                N                                -o                 N                                               跳过⽇志中的前N条记载               
                               --result-file, -r                                               --result-file=                name                , -r                 name                                               输出的⽬标⽂件               
                               --server-id                                               仅显⽰指定服务器ID创建的事件               
           mysqlslap - 负载仿真客⼾端

                       mysqlslap是⼀个诊断程序,⽤于模仿MySQL服务器的客⼾端负载,并报告每个阶段的时间,就好⽐多个客⼾端正在访问服务器⼀样。                                              mysqlslap可以使⽤以下语法                                                               
  1. mysqlslap [options]
复制代码
      

  • 可以通过 --create 或 --query 选项,指定包含SQL语句的字符串或包含SQL语句的⽂件
  • 如果指定⼀个包含SQL语句的⽂件,默认情况下每⾏必须包含⼀条语句(也就是说,隐式语句分隔符是换⾏符)
  • 如果要把⼀条语句分为多⾏誊写,可以使⽤ --delimiter 选项指定不同的分隔符
  • 不能在⽂件中包含注释,因为mysqlslap不能剖析注释。
               mysqlslap运⾏分为三个阶段:                       a.         创建测试数据阶段:创建⽤于测试的库、表或数据,这个阶段使⽤单个客⼾端毗连                       b.         运⾏负载测试阶段,这个阶段可以使⽤很多客⼾端毗连                       c.         清理阶段:执⾏删除表,断开毗连等操作,这个阶段使⽤单个客⼾端毗连                                      mysqlslap 有如下常⽤选项,可以在命令⾏中指定,也可以在选项⽂件中通过          [mysqlslap]          和                          [client]          组进⾏指定                              
选项说明
                         --create             --create=value
其中value等于创建的SQL语句或.sql文件
                         --query             ,             -q             --query=value
其中value等于创建的SQL语句或.sql文件
--concurrency, -c                         --concurrency=             N              ,              -c              N                                      要模仿并⾏客⼾端的数量            
                         --no-drop                                      运⾏完测试后不删除创建的数据库            
                         --iterations             ,             -i                                      --iterations=             N              ,              -i              N                                      每个客⼾端运⾏测试的次数            
                         --auto-generate-sql-add-                                     autoincremen                                      在⾃动⽣成的表中添加              AUTO_INCREMENT              列            
                         --auto-generate-sql-                                     write-number                                      --auto-generate-sql-write-number=             N                                      要执⾏多少⾏插⼊,默认值是100            
                 案例               

  • 提供⾃定义的创建和查询语句,创建50个客⼾端毗连,每个客⼾端进⾏200次 select 查询(在⼀⾏内输⼊命令)。
      
  1. mysqlslap --create="CREATE TABLE a (b int);INSERT INTO a VALUES (23);" --query="SELECT * FROM a" --concurrency=50 --iterations=200
复制代码
      

  • 从指定的⽂件中加载创建、插⼊和查询SQL语句。SQL⽂件中的语句以 ";" 分隔。使⽤5个客⼾端,每个客⼾端查询5次。
                        
  1. mysqlslap --concurrency=5 --iterations=5 --query=query.sql --create=create.sql --delimiter=";
复制代码
      

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

tsx81428

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表