【997755.com澳门葡京】开发进阶篇系列,常用mysql数据库工具简介

一.  perror 错误代码查看工具

           在mysql
的运用过程中,可能会冒出各样各个的error。这一个error有些是出于操作系统引起的,比如文件或者目录不存在等等,使用perror的听从就是解释这么些错误代码的详尽含义。 
perror 使用格局如下:

*       997755.com澳门葡京 1
*

    例如:指定错误号30和60各自是指什么错误
      997755.com澳门葡京 2
    在MYSQL系统出现故障或不当后,一般用户都会去看错误日志,而不当日志里一般都会发觉这么的失实编号。这时我们就可以运用这么些命令分析到底是啥地方出问题了。

glibc_error reporting,glibc_error

  很多GNU
C库里的函数都会侦测并告知错误条件。我们的主次需要检测这多少个错误条件。比如:我们开辟一个输入文件时索要看清该公文是否正确的打开。如若没有正确打开,大家需要打印错误或者应用其余科学的措施。为了利用这种错误报告机制,我们需要包含头文件errno.h

   status系列

 

二 总结

       在后面几章中讲到了常用的多少个工具,其实还有像replace
(sql文本字符替换工具),这么些将来用的时候在翻看表明。
mysqlimport(数据导入工具)后续会在讲到。mysqlhotcopy(MyISAM表热备份工具)这个只针对MyISAM存储引擎的表,就不在表达。最后熟知运用那么些工具,将会带动很大方便。

检测错误:

  很多库函数都会回来一个新鲜的值来显示函数运行出错。常见的特有值有:-1、空指针、EOF常量。可是这个再次来到值只好告诉你有不当发生,但不会报告您错误是什么样。假若你想清楚不当是怎么着,就得靠错误代码,错误代码存储在变量errno中(在errno.h中有扬言)

  errno变量包含了系统错误代码,其品种是volatile。该类型意味着其可以突然被异步线程改变,编译器从不假诺其值。倘使你在写信号处理程序应当保留改变量的值并回升其值。

  errno的最先值为0,碰着错误时,errno绝无可能为0。但尚未错误的时候,errno也不肯定为0(库函数在中标运行时并不会修改errno的值)。所以,不要遵照errno的值来判定错误是否暴发。正确的做法是为每一个函数做好文档,标注出错误代码的值对应的荒谬类型。这样调用失败时,你可以通过检查errno获取错误代码,然后查询函数文档获取错误详情。即便您想博得某一库函数的错误代码,最好再度以前安装errno为0(或许你还想先保存以下errno的值,然后便于恢复生机该值)。

  每一个错误代码都有一个以E起始紧跟大写字母或数字的标志名,实际为定义在errno.h中的宏。当然不是兼备的宏都定义在一个errno.h中(详细的可以自己翻一翻头文件,注意不仅仅只有一个errno.h,六个errno.h共同定义了上上下下的宏)

  错误代码的值一般为正数并且都不一样,但也有一个不比:EWORLDBLOCK和EAGAIN的错误代码是均等的。除了EWORLDBLOCK和EAGAIN,你可以运用switch语句来判断错误代码。但你不应当借助于此,你唯一可以相信的就是文档。

  除了GNU/Hurd系统,几乎所有的体系调用被流传一个无效指针时都会回到EFAULT。所以啊,glibc的函数库表达文档中往往会简单对EFAULT的表达。

  大多数的错误代码宏名都一目了解的好懂,即便实际不知其意可以查看手册或者

~# man errno

此间大概提几个宏:

Macro: int EDOM
    域错误,可以理解为定义域错误。主要用在数学函数中。如果数学函数的一个参数值不在函数定义域中,则会将errno设置为EDOM

Macro: int ERANGE
    范围错误,与上面的EDOM恰好相反。EDOM是定义域的话,ERANGER就是值域了。也多用于数学函数中。如果数学函数返回值超过了约定的返回,则会将errno设置为ERANGE

Macro: int EAGAIN
    资源暂时不可获得。这种错误可能是随机的,你再次运行的时候便好了。。。EWOULDBLOCK是EAGAIN的一个别名。

 

  Mysql提供了一多级命令来得到数据库的运行状态,其中最常用的显要有show
status;show innodb status;show processlist; show mutex
status。通过那一个命令大家得以了解到数据库和存储引擎io,内存,锁等详细信息。

 在MySQL数据库的敬服过程中,我们偶尔会在MySQL的不当日志文件中见到部分关于Operating
system
error的错误音信,例如在MySQL的荒唐日志里面,有时候会面到有关

张冠李戴信息:

  咱们了然错误代码,但总觉得查文档不便于。幸好库文件给我们提供了不当音讯告知函数。这些函数可以告知一个有着表达性的荒唐信息。部分消息告知函数我们可以团结定义信息格式。

  函数strerror和perror为每一个错误代码都提供了一个标准的谬误信息。而变量program_invocation_short_name则可以一本万利获取程序的名字,告诉我们哪个程序出错。

多少个函数原型:

#include <string.h>
char * strerror(int errnum);
char *strerror_r(int errnum, char *buf, size_t n);

说明:  strerror和strerror_r五个函数差不多。区别在于安全性,官方文档对strerror的笺注是MT-Unsafe
race:strerror,而strerror_r则为MT-Safe。strerror重返一个静态申请的字符串缓冲区,该缓冲区被有着线程共享。而strerror_r再次来到的是一个私房副本,并不被其他线程共享。另外这五个函数都有可能导致内存溢出(静态申请的缓冲区)。尽管strerror_r可以指定字符串长度,但这长度是char
*【997755.com澳门葡京】开发进阶篇系列,常用mysql数据库工具简介。buf的。这函数有六个再次来到值,一个施用reurn重返,还有一个是char
*buf。return重临的依旧是一个静态缓冲区。

 

#include<stdio.h>
void perror(const char *message);

证实:  perror将error
message打印到标准错误输出中。即使您传进的参数是一个空指针,perror会遵照errno打印错误音讯。假如char
*message非空,perror会将message当作错误消息的前缀输出。perror得及时调用,不然errno的值可能暴发变化。

 

char *program_invocation_name; //等同于argv[0]
char *program_invocation_short_name //不包含目录名。

表明:  这六个变量的起首化工作由glibc库在还未调用main函数以前实施。所以在非GNU库中,这两个变量不起成效,在骨子里代码中我们需要定义_GNU_SOURCE宏,告诉编译器使用GNU库。

  以下多个函数在总体GNU project中选拔特别常见。

void error(int status, int errnum, const char *format, ...);
void error_at_line(int status, int errnum, const char *fname, unsigned int lineno, const char *format, ...);

表达:  这多少个函数的回到和status有关,假若status是0,则正常格式化打印错误信息。全局变量error_message_count也会做自增操作。错误音讯的格式如下:program_name:
format_string:
error_messager_for_errno\n。假设status非零,这五个函数将调用exit
status,即以状态status退出(不会回到)。关于program_name:全局变量error_print_progname指向的函数决定了program_name的值。error_at_line函数有点特别:多了fname,lineno两个参数。错误信息格式如下:program_name:fname:lineno format_string:
error_mesage_for_errno\997755.com澳门葡京 ,n。假使全局变量error_one_per_line被装置为非零值,每一行只会打印一个破绽百出音信。

  除了上述的荒唐消息函数,我们还有以下多少个:这一个函数紧要用在BSD系统中,定义在头文件err.h中,在gnu系统中不推荐应用。

void warn(const char *format, ...)
void vwarn(const char *format, va_list ap)
void warnx(const char *format, ...)
void vwarnx(const char *format, va_list ap)
void err(int status, const char *format, ...)
void verr(int status, const char *format, va_list ap)
void errx(int status, const char *format, ...)
void verrx(int status, const char *format, va_list ap)

各位看官自行查看手册吧。just be a man!!!

reporting,glibc_error 很多GNU
C库里的函数都会侦测并告知错误条件。大家的主次需要检测这个错误条件。比如:大家开辟一个输入文…

  参考资料:

 

  监控工具――Mysqlreport

InnoDB:
Operating system error number 0.

  下边列出的各类status命令,可以有利于地实时查看。
若需要长时间监控,则需要工具对这多少个消息举办整理汇总。如今普遍的mysql监控有mysqlreport、mysqlsla、innotop,还有公司内部支出的Mysql-mon。其中mysqlreport和mysql-mon属于状态总计类型。

InnoDB:
Check that your OS and file system support files of this size.

  数据来源:

InnoDB:
Check also that the disk is not full or a disk quota exceeded.

  [mysql]show global status

 

  [mysql]Show Global Variables

 

  [mysql]Show Full Processlist

InnoDB:
Operating system error number 5.

  [系统] vmstat/iostat/mpstat

…………………………………….

  由于上述参数复杂,因此监控工具抽取首要的信息,以福利查看的办法体现,并记下都在日记中。

 

  Mysqlreport是一款辅助周期生成报表的工具。

 那么这一个System
Error
Code在Linux下各自代表怎样意思啊?其实假若遭逢错误日志里有这多少个对应的代码,使用MySQL自带的一声令下工具perror查看一下有血有肉音讯即可。极度简单方便。

  从mysqlreport报表中可知赢得的音信有分为一下几类:

 

  1、总体数量:包括读写总请求、接收/发送总数据量、慢查询次数

[root@DB-Server
~]# perror 2;

  2、DMS(数据操作描述):各样数据操作分布(select、update等)、查询和排序次数分布

OS
error code  
2:  No
such file or directory

  3、Cache:包括cache命中率、cache操作次数及比例(查询命中率、插入次数、修改次数的百分比)

[root@DB-Server
~]# perror 3;

  4、表: 包括表锁次数、打开表文件个数、临时表类型分布、最辛辛那提接数等

OS
error code  
3:  No
such process

  5、InnoDB相关:包括innodb
数据内容读写次数、数据页面创立/读写次数、数据行操作次数(增删改查语句分布)

[root@DB-Server
~]# perror 4;

  参考资料:

OS
error code  
4: 
Interrupted system call

  

[root@DB-Server
~]# perror 5;

  

OS
error code  
5: 
Input/output error

  监控工具――Mysqlsla

[root@DB-Server
~]#

  mysqlreport可以帮忙大家询问MySQL的健康境况以及MySQL大部份时间在处理什么品种的Query,但大家在踏勘慢查询时,想掌握MySQL
实际上到底是把 CPU 运算时间花在如何 Query
上?这么些问题必须从MySQL的Log才可以。

 

  Mysqlsla的数目出自为mysql提供的三类log:Binary Log、General
Log和Slow Log。

比方你要翻开一个范围的Operating
system error,可以接纳下边发号施令

  对于慢sql总括信息, 包括 平均执行时间, 等待锁时间, 结果行的总额,
扫描的行总数。提供结果格式如下:

 

  项目 说明

[root@DB-Server
~]# perror `seq 0 10`

  Count sql的实施次数及占总的slow log数量的比例

OS
error code  
0: 
Success

  提姆(Tim)e 执行时间, 包括总时间, 平均时间, 最小, 最大时间,
时间占到总慢sql时间的比重

OS
error code  
1: 
Operation not permitted

  95% of 提姆e 去除最快和最慢的sql, 覆盖率占95%的sql的实践时间.

OS
error code  
2:  No
such file or directory

  Lock Time 等待锁的日子

OS
error code  
3:  No
such process

  95% of Lock 95%的慢sql等待锁时间

OS
error code  
4: 
Interrupted system call

  Rows sent 结果行统计数据, 包括平均, 最小, 最大数量

OS
error code  
5: 
Input/output error

  Rows examined 扫描的行数量

OS
error code  
6:  No
such device or address

  Database 属于哪个数据库

OS
error code  
7: 
Argument list too long

  Users 哪个用户,IP, 占到所有用户执行的sql百分比

OS
error code  
8: 
Exec format error

  Query abstract 抽象后的sql语句

OS
error code  
9:  Bad
file descriptor

  Query sample sql语句

OS
error code 
10:  No
child processes

  参考资料:

[root@DB-Server
~]#

  监控工具――innotop

 

  innotop是一个对准innodb引擎的监察工具。

 
假设是集群,那么能够shell> perror –ndb errorcode查看,
下边表格是关于Linux平台下通用的System Error
Code列表,如下所示,完全没有必要硬性记住。碰到查看即可。

  与上诉的多少个工具不同,这是一个类似于top的工具,可以实时展现innodb的各个参数变化。

 

  更威猛的是,可以在实践进程中可知查阅各样线程的推行境况、查看死锁信息;

 

  可以因而输入命令行参数,采用不同的格局,查看线程内部音讯

Number

Macro

Description

1

EPERM

Operation not permitted

2

ENOENT

No such file or directory

3

ESRCH

No such process

4

EINTR

Interrupted system call

5

EIO

I/O error

6

ENXIO

No such device or address

7

E2BIG

Arg list too long

8

ENOEXEC

Exec format error

9

EBADF

Bad file number

10

ECHILD

No child processes

11

EAGAIN

Try again

12

ENOMEM

Out of memory

13

EACCES

Permission denied

14

EFAULT

Bad address

15

ENOTBLK

Block device required

16

EBUSY

Device or resource busy

17

EEXIST

File exists

18

EXDEV

Cross-device link

19

ENODEV

No such device

20

ENOTDIR

Not a directory

21

EISDIR

Is a directory

22

EINVAL

Invalid argument

23

ENFILE

File table overflow

24

EMFILE

Too many open files

25

ENOTTY

Inappropriate ioctl for device

26

ETXTBSY

Text file busy

27

EFBIG

File too large

28

ENOSPC

No space left on device

29

ESPIPE

Illegal seek

30

EROFS

Read-only file system

31

EMLINK

Too many links

  参考资料:

 

  

 

  监控工具――Mysql-mon

一经是Windows平台,那么也足以使用下边发号施令查看具体的System
Error Code音信,此外,Windows平台下的System Error
Code也远比Linux平台下要多,遭遇了这一个System Error
Code,使用命令查看即可。

  Mysql-mon是两全开发的,内部使用的监察工具。选拔C语言开发,对数据库负载几乎为0。可用于

 

  数据库系统状态监控\分源连接数监控\数据量、索引量监控\字段范围监控数据库同步监督

perror.exe
2

  参考资料:

 

  表压缩工具――myisampack

 

  Myisampack是一个表压缩工具,可以应用很高的压缩率来对MyIsam存储引擎的表举行压缩,使得压缩后的表占用比压缩前小得多的磁盘空间。可是压缩后的表也将称为一个只读表,不能举行DML操作。

perror
`perl -e “print join ‘ ‘,1..100″`

  参考资料:

 

  管理工具――mysqlamdin

 

  Mysqladmin是一个实施管理操作的客户端程序。可以用来检查服务器的安排和眼前的意况,成立并删除数据库等。

 

  参考资料:

 

  日志管理工具――mysqlbinlog

参考资料

  由于服务器生成的日记文件以二进制格式保存,所以一旦要想检查这一个文件的文本格式,就会用到mysqlbinlog日志管理工具。

 

  参考资料:

  表维护工具――mysqlcheck

  Mysqlcheck客户端工具得以检查和修补myisam表,仍可以优化和分析表。实际上,它延续了mysql工具中check、repair、analyze、optimize的效率。

  参考资料:

  数据导出工具――mysqldump

  Mysqldump客户端工具用来备份数据库或在不同数据库之间开展多少迁移。备份内容包含创设表或装载表的sql语句。

  参考资料:

  数据导入工具――mysqlimport

  Mysqlimport是客户端导入工具,用于导入mysqldump加-T选项后导出的文书文件。

  参考资料:

  表热备份工具――mysqlhotcopy

  Mysqlhotcopy是一个perl脚本,它应用lock tables、flush
tables、cp或scp来快捷备份数据库。仅限于在linux/unix下热备份myisam数据表。

  参考资料:

  数据库对象查看工具――mysqlshow

  Mysqlshow是客户端对象查看工具,用来快捷地寻找存在咋样数据库、数据库中的表、表中的列或索引。

  参考资料:

  错误代码查看工具――perror

  在mysql使用过程中,可能会并发形形色色的error,这个error有些是由于操作系统引起的,有些是出于存储引擎使用不当引起的。这多少个error都有一个整型的错误代码。Perror的效用是分解这多少个错误代码的事无巨细含义。

  参考资料:

  文本替换工具――replace

  Replace是mysql自带的一个对文本中的字符串举办互换的工具,类似于linux下的sed,不过他的拔取更为简明利落。

Mysql提供了一密密麻麻命令来博取数据库的周转状态,其中最常用的基本点有show
status;show innodb status;show processlist; show mutex
status。通过这…

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*
*
Website