#!/bin/sh#date:2015-12-07#filename:check_mysql.sh#作者:linuxzkq
#Email:1729294227@qq.com#version:v1.0#port=`netstat -tunlp|grep 3306|wc -l`#process=`ps -ef|grep mysqld|grep -v grep|wc -l`value=`/application/mysql/bin/mysql -u root -poldboy -e "select version();" >/dev/null 2>&1`while truedoif [ $? -ne 0 ] then #echo "ERROR! MySQL is not running" /etc/init.d/mysqld startelse echo "MySQL is running,now!"fi sleep 5value=`/application/mysql/bin/mysql -u root -poldboy -e "select version();" >/dev/null 2>&1`if [ $? -ne 0 ] then #echo "ERROR! MySQL is not running" /etc/init.d/mysqld startelse echo "MySQL is running,now!"fi
sleep 5
done
本文出自 “兰州linux运维” 博客,请务必保留此出处http://linuxzkq.blog.51cto.com/9379412/1728877
MySQL服务健康检查脚本
标签:健康检查
小编还为您整理了以下内容,可能对您也有帮助:
请教小弟我的mysql状态健康吗
检查mysql状态是否健康有两种办法:
一种方法使用mysql的check table和repair table 的sql语句,另一种方法是使用MySQL提供的多个myisamchk, isamchk数据检测恢复工具。前者使用起来比较简便。推荐使用。
1. check table 和 repair table
登陆mysql 终端:
mysql -uxxxxx -p dbname
check table tabTest;
如果出现的结果说Status是OK,则不用修复,如果有Error,可以用:
repair table tabTest;
进行修复,修复之后可以在用check table命令来进行检查。在新版本的phpMyAdmin里面也可以使用check/repair的功能。
2. myisamchk, isamchk
其中myisamchk适用于MYISAM类型的数据表,而isamchk适用于ISAM类型的数据表。这两条命令的主要参数相同,一般新的系统都使用MYISAM作为缺省的数据表类型,这里以myisamchk为例子进行说明。当发现某个数据表出现问题时可以使用:
myisamchk tablename.MYI
进行检测,如果需要修复的话,可以使用:
myisamchk -of tablename.MYI
关于myisamchk的详细参数说明,可以参见它的使用帮助。需要注意的时在进行修改时必须确保MySQL服务器没有访问这个数据表,保险的情况下是最好在进行检测时把MySQL服务器Shutdown掉。
另外可以把下面的命令放在你的rc.local里面启动MySQL服务器前:
[ -x /tmp/mysql.sock ] && /pathtochk/myisamchk -of /DATA_DIR/*/*.MYI
其中的/tmp/mysql.sock是MySQL监听的Sock文件位置,对于使用RPM安装的用户应该是/var/lib/mysql/mysql.sock,对于使用源码安装则是/tmp/mysql.sock可以根据自己的实际情况进行变更,而pathtochk则是myisamchk所在的位置,DATA_DIR是你的MySQL数据库存放的位置。
需要注意的时,如果你打算把这条命令放在你的rc.local里面,必须确认在执行这条指令时MySQL服务器必须没有启动!检测修复所有数据库(表)
mysql 脚本问题
一、最简单的方法是使用MYSQL管理工具,推荐使用phpMyAdmin,详见http://ke.baidu.com/view/1288946.htm,安装后进入首页,先建立一个名为ch03的数据库,然后点击右侧的SQL选单,将以上语句粘贴后点击执行即可!
=======
二、手工添加:
1、添加数据库:
打开一个命令提示符窗口(点击开始->运行-> cmd),然后输入以下命令:
C:\>mysqladmin -u root -p create ch03
输入您的mysql密码,并单击 Enter。除非出现问题,否则不会从 MySQL 获得任何反馈(这有点令人困扰)。
上面将建立起ch03数据库;
2、测试数据库是否建立成功:
需要启动 MySQL 监视器,请在命令行中输入 mysql -u root -p。输入根密码后,将看到类似以下的内容:
C:\>mysql -u root -p
Enter password: ********
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 7 to server version: 4.1.11-nt
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql>
然后输入 use ch03。 use 告诉 MySQL 切换到指定的数据库。如果一切正常,您将看到以下输出:
C:\>mysql -u root -p
Enter password: ********
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 7 to server version: 4.1.11-nt
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql> use ch03
Database changed
mysql>
如果此数据库不存在,您会看到以下错误信息:ERROR 1049 (42000): Unknown database 'DB-DEVEL'。请返回到之前的操作步骤并再次尝试,直到您创建了数据库为止。然后重新回到本步骤,继续进行。一旦您验证了数据库确实存在,就可以输入 exit 来离开 MySQL 监视器。
3、添加表:
创建了数据库之后,就可以向其中添加几个简单的表和数据。
创建一个新的文本文件,并将其命名为 create-tables.sql。此文件的内容应该类似以下内容:
CREATE TABLE CATEGORY (
CATEGORY_CD CHAR(2) NOT NULL,
CATEGORY_NAME VARCHAR(20) NOT NULL,
PRIMARY KEY (CATEGORY_CD) );
CREATE TABLE SUB_CATEGORY (
CATEGORY_CD CHAR(2) NOT NULL,
SUB_CATEGORY_CD CHAR(2) NOT NULL,
SUB_CATEGORY_NAME VARCHAR(20) NOT NULL,
PRIMARY KEY (CATEGORY_CD, SUB_CATEGORY_CD) );
CREATE TABLE TIP (
TIP_CD CHAR(8) NOT NULL,
CATEGORY_CD CHAR(2) NOT NULL,
SUB_CATEGORY_CD CHAR(2) NOT NULL,
TIP_TITLE VARCHAR(90) NOT NULL,
TIP_CONTENT TEXT ,
PRIMARY KEY (TIP_CD) );
接着可通过如下方式将此文件馈送到 MySQL:
C:\>mysql -u root -p ch03 < create-tables.sql
Enter password: ********
此命令的前一部分应该是您所熟悉的内容。我将 ch03 添加到末尾,这会告诉 MySQL 启动并连接到指定的数据库(一个登录的快捷方式,然后输入 use ch03;)。然后,< 符号告诉 MySQL 接受您刚才创建的 SQL 文件作为输入。不幸的是,MySQL 仍然不会提供任何反馈(除非有错误发生)。在任何情况下,您都可将沉默视作通过。
4、显示表:
同样,可通过 mysql -u root -p ch03 登录到 MySQL 监视器,然后输入 describe users;。您应该会看到一个对所创建的表的文本描述。
mysql 脚本问题
一、最简单的方法是使用MYSQL管理工具,推荐使用phpMyAdmin,详见http://ke.baidu.com/view/1288946.htm,安装后进入首页,先建立一个名为ch03的数据库,然后点击右侧的SQL选单,将以上语句粘贴后点击执行即可!
=======
二、手工添加:
1、添加数据库:
打开一个命令提示符窗口(点击开始->运行-> cmd),然后输入以下命令:
C:\>mysqladmin -u root -p create ch03
输入您的mysql密码,并单击 Enter。除非出现问题,否则不会从 MySQL 获得任何反馈(这有点令人困扰)。
上面将建立起ch03数据库;
2、测试数据库是否建立成功:
需要启动 MySQL 监视器,请在命令行中输入 mysql -u root -p。输入根密码后,将看到类似以下的内容:
C:\>mysql -u root -p
Enter password: ********
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 7 to server version: 4.1.11-nt
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql>
然后输入 use ch03。 use 告诉 MySQL 切换到指定的数据库。如果一切正常,您将看到以下输出:
C:\>mysql -u root -p
Enter password: ********
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 7 to server version: 4.1.11-nt
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql> use ch03
Database changed
mysql>
如果此数据库不存在,您会看到以下错误信息:ERROR 1049 (42000): Unknown database 'DB-DEVEL'。请返回到之前的操作步骤并再次尝试,直到您创建了数据库为止。然后重新回到本步骤,继续进行。一旦您验证了数据库确实存在,就可以输入 exit 来离开 MySQL 监视器。
3、添加表:
创建了数据库之后,就可以向其中添加几个简单的表和数据。
创建一个新的文本文件,并将其命名为 create-tables.sql。此文件的内容应该类似以下内容:
CREATE TABLE CATEGORY (
CATEGORY_CD CHAR(2) NOT NULL,
CATEGORY_NAME VARCHAR(20) NOT NULL,
PRIMARY KEY (CATEGORY_CD) );
CREATE TABLE SUB_CATEGORY (
CATEGORY_CD CHAR(2) NOT NULL,
SUB_CATEGORY_CD CHAR(2) NOT NULL,
SUB_CATEGORY_NAME VARCHAR(20) NOT NULL,
PRIMARY KEY (CATEGORY_CD, SUB_CATEGORY_CD) );
CREATE TABLE TIP (
TIP_CD CHAR(8) NOT NULL,
CATEGORY_CD CHAR(2) NOT NULL,
SUB_CATEGORY_CD CHAR(2) NOT NULL,
TIP_TITLE VARCHAR(90) NOT NULL,
TIP_CONTENT TEXT ,
PRIMARY KEY (TIP_CD) );
接着可通过如下方式将此文件馈送到 MySQL:
C:\>mysql -u root -p ch03 < create-tables.sql
Enter password: ********
此命令的前一部分应该是您所熟悉的内容。我将 ch03 添加到末尾,这会告诉 MySQL 启动并连接到指定的数据库(一个登录的快捷方式,然后输入 use ch03;)。然后,< 符号告诉 MySQL 接受您刚才创建的 SQL 文件作为输入。不幸的是,MySQL 仍然不会提供任何反馈(除非有错误发生)。在任何情况下,您都可将沉默视作通过。
4、显示表:
同样,可通过 mysql -u root -p ch03 登录到 MySQL 监视器,然后输入 describe users;。您应该会看到一个对所创建的表的文本描述。
如何编写一个mysql数据库脚本
1、首先,选中一个数据库world,为了防止破坏其他的数据库表,这里新建一张数据库表t_people_info,如下图所示。
2、创建t_people_info数据库表,可以查看下表结构,使用SQL语句或直接点击进行查看表结构。
3、接着,在world数据库找到”事件“菜单项,鼠标右键”创建事件...“,如下图所示,输入事件名称,单击”创建“。
4、就会生成insert_data事件,如下图所示。
5、接着,编写insert_data事件,每10秒钟向t_people_info插入一条数据。
6、最后查看事件的状态,调用事件运行成功。
监控mysql的几个脚本
如果您不太熟悉MySQL监控,开始可以看一看流行的监控软件。例如,下面列出了MySQL Cacti Plugin
Innodb Buffer Pool Activity
•Pages Created
•Pages Written
•Pages Read
Innodb Buffer Pool Pages
•Pool Size
•Database Pages
•Free Pages
•Modified Pages
Inoodb File I/O
•File Reads
•Files Writes
•Log Writes
•File Fsyncs
Innodb Pending I/O
•Aio Log Ios
•Aio Sync ios
•Buffer Pool Flushes
•Chkp Writes
•Ibuf Aio Reads
•Log Flushes
•Log Writes
•Normal Aio Reads
•Normal Aio Writes
Innodb Insert Buffer
•Inserts
•Merged
•Merges
Innodb Log
•Log Buffer Size
•Log Bytes Written
•Log Bytes Flushed
•Unflushed Log
Innodb Row Operations
•Rows Read
•Rows Deleted
•Rows Updated
•Rows Inserted
Innodb Semaphores
•Spin Rounds
•Spin Waits
•OS Waits
Innodb Transactions
•Innodb Transactions
•Current Transactions
•History List
•Read Views
MySQL Binary/Relay Logs
•Binlog Cache use
•Binlog Cache Disk Use
•Binary Log Space
•Relay Log Space
MySQL Command Counters
•Questions
•SELECT
•DELETE
•INSERT
•UPDATE
•REPLACE
•LOAD
•DELETE MULTI
•INSERT SELECT
•UPDATE MULTI
•REPLACE SELECT
MySQL Connections
•Max Connections
•Max Used Connections
•Aborted Clients
•Aborted Connects
•Threads Connected
•Connections
MySQL Files and Tables
•Table Cache
•Open Tables
•Open Files
•Opened Tables
MySQL Network Traffic
•Bytes Received
•Bytes Sent
MySQL Processlist
•State Closing Tables
•State Copying to Tmp Table
•State End
•State Freeing Items
•State Init
•State Locked
•State Login
•State Preparing
•State Reading From Net
•State Sending Data
•State Sorting Result
•State Statistics
•State Updating
•State Writing to Net
•State None
•State Other
MySQL Query Cache
•Queries In Cache
•Hits
•Inserts
•Not Cached
•Lowmem Prunes
MySQL Query Cache Memory
•Query Cache Size
•Free Memory
•Total Blocks
•Free Blocks
MySQL Replication
•Slave Running
•Slave Stopped
•Slave Lag
•Slave Open Temp Tables
•Slave Retried Transactions
MySQL Select Types
•Select Full Join
•Select Full Range Join
•Select Range
•Select Range Check
•Select Scan
MySQL Sorts
•Sort Rows
•Sort Range
•Sort Merge Passes
•Sort Scan
MySQL Table Locks
•Table Locks Immediate
•Table Locks Waited
•Slow Queries
MySQL Temporary Objects
•Created Tmp Tables
•Created Tmp Disk Tables
•Created Tmp Files
MySQL Threads
•Thread Cache Size
•Threads Created
监控mysql的几个脚本
如果您不太熟悉MySQL监控,开始可以看一看流行的监控软件。例如,下面列出了MySQL Cacti Plugin
Innodb Buffer Pool Activity
•Pages Created
•Pages Written
•Pages Read
Innodb Buffer Pool Pages
•Pool Size
•Database Pages
•Free Pages
•Modified Pages
Inoodb File I/O
•File Reads
•Files Writes
•Log Writes
•File Fsyncs
Innodb Pending I/O
•Aio Log Ios
•Aio Sync ios
•Buffer Pool Flushes
•Chkp Writes
•Ibuf Aio Reads
•Log Flushes
•Log Writes
•Normal Aio Reads
•Normal Aio Writes
Innodb Insert Buffer
•Inserts
•Merged
•Merges
Innodb Log
•Log Buffer Size
•Log Bytes Written
•Log Bytes Flushed
•Unflushed Log
Innodb Row Operations
•Rows Read
•Rows Deleted
•Rows Updated
•Rows Inserted
Innodb Semaphores
•Spin Rounds
•Spin Waits
•OS Waits
Innodb Transactions
•Innodb Transactions
•Current Transactions
•History List
•Read Views
MySQL Binary/Relay Logs
•Binlog Cache use
•Binlog Cache Disk Use
•Binary Log Space
•Relay Log Space
MySQL Command Counters
•Questions
•SELECT
•DELETE
•INSERT
•UPDATE
•REPLACE
•LOAD
•DELETE MULTI
•INSERT SELECT
•UPDATE MULTI
•REPLACE SELECT
MySQL Connections
•Max Connections
•Max Used Connections
•Aborted Clients
•Aborted Connects
•Threads Connected
•Connections
MySQL Files and Tables
•Table Cache
•Open Tables
•Open Files
•Opened Tables
MySQL Network Traffic
•Bytes Received
•Bytes Sent
MySQL Processlist
•State Closing Tables
•State Copying to Tmp Table
•State End
•State Freeing Items
•State Init
•State Locked
•State Login
•State Preparing
•State Reading From Net
•State Sending Data
•State Sorting Result
•State Statistics
•State Updating
•State Writing to Net
•State None
•State Other
MySQL Query Cache
•Queries In Cache
•Hits
•Inserts
•Not Cached
•Lowmem Prunes
MySQL Query Cache Memory
•Query Cache Size
•Free Memory
•Total Blocks
•Free Blocks
MySQL Replication
•Slave Running
•Slave Stopped
•Slave Lag
•Slave Open Temp Tables
•Slave Retried Transactions
MySQL Select Types
•Select Full Join
•Select Full Range Join
•Select Range
•Select Range Check
•Select Scan
MySQL Sorts
•Sort Rows
•Sort Range
•Sort Merge Passes
•Sort Scan
MySQL Table Locks
•Table Locks Immediate
•Table Locks Waited
•Slow Queries
MySQL Temporary Objects
•Created Tmp Tables
•Created Tmp Disk Tables
•Created Tmp Files
MySQL Threads
•Thread Cache Size
•Threads Created
Linux健康检查脚本health-check-script
平时在Linux做巡视时,都通过命令行来输入指令,比如df -k等等,但是对于多指令多任务来说,单个指令就显得不够效率。于是笔者想着有没有啥脚本可以自动完成这个任务呢?笔者以前的文章-sysstat性能监控工具,里面有系统监控工具 Sysstat,可以查看CPU使用率、硬盘和网络吞吐数据等等信息。但是这个也是命令行,并且也没有集合的脚本。带着问题,笔者想着自己写一个脚本来,但是想着检查项目还是不熟悉,于是在github上搜索一番,找到一款老外写的脚本,于是乎,clone下来测试一番。
github真是太劲了。
开始clone脚本:
sudo git clone https://github.com/SimplyLinuxFAQ/health-check-script.git
进入目录:cd health-check-script/
由于health-check.sh文件没有执行权限,需要加上可执行权限sudo chmod +x health-check.sh,然后执行./health-check.sh。
脚本大概分为几个部分,现罗列其中的几个。
1、 系统基本信息
脚本写的非常好,比如查看hostname,即/etc/hostname文件里面的内容。整个指令结构显示看hostname -f是否执行成功,然后hostname -f或者hostname -s,也就是 long host name或者 short host name。 &&为与, ||时或。
hostname -f &> /dev/null && printf "Hostname : $(hostname -f)" || printf "Hostname : $(hostname -s)"
2、 磁盘Disk Usage
FS_USAGE=$(df -PThl -x tmpfs -x iso9660 -x devtmpfs -x squashfs|awk '!seen[$1]++'|sort -k6n|tail -n +2)
3、负载率uptime
echo -e "Current Load Average : $(uptime|grep -o "load average.*"|awk '{print $3" " $4" " $5}')"
4、三次重启事件
last -x 2> /dev/null|grep reboot 1> /dev/null && /usr/bin/last -x 2> /dev/null|grep reboot|head -3 || \
5、三次关机事件
last -x 2> /dev/null|grep shutdown 1> /dev/null && /usr/bin/last -x 2> /dev/null|grep shutdown|head -3 || \
6、占用cpu最高的进程
ps -eo pcpu,pid,ppid,user,stat,args --sort=-pcpu|grep -v $$|head -6|sed 's/$/\n/'
7、占用内存最高的进程
ps -eo pmem,pid,ppid,user,stat,args --sort=-pmem|grep -v $$|head -6|sed 's/$/\n/'
这个脚本关注点在系统信息、磁盘、内存、进程信息,没有打印网络状态,需要监控的进程等等信息,可以使用指令iostat、ps -ef | grep your_process。在局域网中,如果循环可以读取/etc/hosts文件内容,按照ip来远程到linux主机ssh ip_addrsss,执行脚本内容来检查整个服务器的信息。
最后看一下测试效果,检查结果正常的话,会有颜色提示的,这也是笔者才知道shell可以设置颜色的。开始位是\e[ , 结束位是\e[0m ,第一个数字代表字体颜色,第二个数字代表底色,当然还可以有其他下划线等等特殊效果。
GCOLOR="\e[47;32m ------ OK/HEALTHY \e[0m"
WCOLOR="\e[43;31m ------ WARNING \e[0m"
CCOLOR="\e[47;31m ------ CRITICAL \e[0m"
Linux健康检查脚本health-check-script
平时在Linux做巡视时,都通过命令行来输入指令,比如df -k等等,但是对于多指令多任务来说,单个指令就显得不够效率。于是笔者想着有没有啥脚本可以自动完成这个任务呢?笔者以前的文章-sysstat性能监控工具,里面有系统监控工具 Sysstat,可以查看CPU使用率、硬盘和网络吞吐数据等等信息。但是这个也是命令行,并且也没有集合的脚本。带着问题,笔者想着自己写一个脚本来,但是想着检查项目还是不熟悉,于是在github上搜索一番,找到一款老外写的脚本,于是乎,clone下来测试一番。
github真是太劲了。
开始clone脚本:
sudo git clone https://github.com/SimplyLinuxFAQ/health-check-script.git
进入目录:cd health-check-script/
由于health-check.sh文件没有执行权限,需要加上可执行权限sudo chmod +x health-check.sh,然后执行./health-check.sh。
脚本大概分为几个部分,现罗列其中的几个。
1、 系统基本信息
脚本写的非常好,比如查看hostname,即/etc/hostname文件里面的内容。整个指令结构显示看hostname -f是否执行成功,然后hostname -f或者hostname -s,也就是 long host name或者 short host name。 &&为与, ||时或。
hostname -f &> /dev/null && printf "Hostname : $(hostname -f)" || printf "Hostname : $(hostname -s)"
2、 磁盘Disk Usage
FS_USAGE=$(df -PThl -x tmpfs -x iso9660 -x devtmpfs -x squashfs|awk '!seen[$1]++'|sort -k6n|tail -n +2)
3、负载率uptime
echo -e "Current Load Average : $(uptime|grep -o "load average.*"|awk '{print $3" " $4" " $5}')"
4、三次重启事件
last -x 2> /dev/null|grep reboot 1> /dev/null && /usr/bin/last -x 2> /dev/null|grep reboot|head -3 || \
5、三次关机事件
last -x 2> /dev/null|grep shutdown 1> /dev/null && /usr/bin/last -x 2> /dev/null|grep shutdown|head -3 || \
6、占用cpu最高的进程
ps -eo pcpu,pid,ppid,user,stat,args --sort=-pcpu|grep -v $$|head -6|sed 's/$/\n/'
7、占用内存最高的进程
ps -eo pmem,pid,ppid,user,stat,args --sort=-pmem|grep -v $$|head -6|sed 's/$/\n/'
这个脚本关注点在系统信息、磁盘、内存、进程信息,没有打印网络状态,需要监控的进程等等信息,可以使用指令iostat、ps -ef | grep your_process。在局域网中,如果循环可以读取/etc/hosts文件内容,按照ip来远程到linux主机ssh ip_addrsss,执行脚本内容来检查整个服务器的信息。
最后看一下测试效果,检查结果正常的话,会有颜色提示的,这也是笔者才知道shell可以设置颜色的。开始位是\e[ , 结束位是\e[0m ,第一个数字代表字体颜色,第二个数字代表底色,当然还可以有其他下划线等等特殊效果。
GCOLOR="\e[47;32m ------ OK/HEALTHY \e[0m"
WCOLOR="\e[43;31m ------ WARNING \e[0m"
CCOLOR="\e[47;31m ------ CRITICAL \e[0m"
mysql 脚本文件是什么?
mysql 脚本文件就是SQL文件,里面就是建表语句 以.SQL为后缀。
sql脚本是包含一到多个sql命令的sql语句。
可以将这些sql脚本放在一个文本文件中(我们称之为“sql脚本文件”),然后通过相关的命令执行这个sql脚本文件。
mysql 脚本文件是什么?
mysql 脚本文件就是SQL文件,里面就是建表语句 以.SQL为后缀。
sql脚本是包含一到多个sql命令的sql语句。
可以将这些sql脚本放在一个文本文件中(我们称之为“sql脚本文件”),然后通过相关的命令执行这个sql脚本文件。
如何检查mysql从数据库是否正常运行,脚本
一般在从库执行show slave status,看behind值是否为0来判断。
更准确的一些的方法是在主库做一个表,每秒insert一个时间戳,在从库读取,来看时间差是否超过1秒。
如何衡量mysql库的健康度
系统mysql的进程数
查看 mysql buffer pool hit
ps -ef | grep "mysql" | grep -v "grep" | wc –l
2.Slave_running
mysql > show status like 'Slave_running';
如果系统有一个从复***务器,这个值指明了从服务器的健康度
3.Threads_connected
mysql > show status like 'Threads_connected';
当前客户端已连接的数量。这个值会少于预设的值,但你也能监视到这个值较大,这可保证客户端是处在活跃状态。
4.Threads_running
mysql > show status like 'Threads_running';
如果数据库超负荷了,你将会得到一个正在(查询的语句持续)增长的数值。这个值也可以少于预先设定的值。这个值在很短的时间内超过限定值是没问题的。当Threads_running值超过预设值时并且该值在5秒内没有回落时, 要同时监视其他的一些值。
5.Aborted_clients
mysql > show status like 'Aborted_clients';
客户端被异常中断的数值,即连接到mysql服务器的客户端没有正常地断开或关闭。对于一些应用程序是没有影响的,但对于另一些应用程序可能你要跟踪该值,因为异常中断连接可能表明了一些应用程序有问题。
6.Questions
mysql> show status like 'Questions';
每秒钟获得的查询数量,也可以是全部查询的数量,根据你输入不同的命令会得到你想要的不同的值。
7.Handler_*
mysql> show status like 'Handler_%';
如果你想监视底层(low-level)数据库负载,这些值是值得去跟踪的。
如果Handler_read_rnd_next值相对于你认为是正常值相差悬殊,可能会告诉你需要优化或索引出问题了。Handler_rollback表明事务被回滚的查询数量。你可能想调查一下原因。
8.Opened_tables
mysql> show status like 'Opened_tables';
表缓存没有命中的数量。如果该值很大,你可能需要增加table_cache的数值。典型地,你可能想要这个值每秒打开的表数量少于1或2。
9.Select_full_join
mysql> show status like 'Select_full_join';
没有主键(key)联合(Join)的执行。该值可能是零。这是捕获开发错误的好方法,因为一些这样的查询可能降低系统的性能。
10.Select_scan
mysql> show status like 'Select_scan';
执行全表搜索查询的数量。在某些情况下是没问题的,但占总查询数量该比值应该是常量(即Select_scan/总查询数量商应该是常数)。如果你发现该值持续增长,说明需要优化,缺乏必要的索引或其他问题。
11.Slow_queries
mysql> show status like 'Slow_queries';
超过该值(--long-query-time)的查询数量,或没有使用索引查询数量。对于全部查询会有小的冲突。如果该值增长,表明系统有性能问题。
12.Threads_created
mysql> show status like 'Threads_created';
该值应该是低的。较高的值可能意味着你需要增加thread_cache的数值,或你遇到了持续增加的连接,表明了潜在的问题。
13.客户端连接进程数
shell> mysqladmin processlist
mysql> show processlist;
你可以通过使用其他的统计信息得到已连接线程数量和正在运行线程的数量,检查正在运行的查询花了多长时间是一个好主意。如果有一些长时间的查询,管理员可以被通知。你可能也想了解多少个查询是在"Locked"的状态—---该值作为正在运行的查询不被计算在内而是作为非活跃的。一个用户正在等待一个数据库响应。
14.innodb状态
mysql> show engine innodb statusG;
该语句产生很多信息,从中你可以得到你感兴趣的。首先你要检查的就是“从最近的XX秒计算出来的每秒的平均负载”。
(1)Pending normal aio reads: 该值是innodb io请求查询的大小(size)。如果该值大到超过了10—20,你可能有一些瓶颈。
(2)reads/s, avg bytes/read, writes/s, fsyncs/s:这些值是io统计。对于reads/writes大值意味着io子系统正在被装载。适当的值取决于你系统的配置。
(3)Buffer pool hit rate:这个命中率非常依赖于你的应用程序。当你觉得有问题时请检查你的命中率
(4)inserts/s, updates/s, deletes/s, reads/s:有一些Innodb的底层操作。你可以用这些值检查你的负载情况查看是否是期待的数值范围。
如何衡量mysql库的健康度
系统mysql的进程数
查看 mysql buffer pool hit
ps -ef | grep "mysql" | grep -v "grep" | wc –l
2.Slave_running
mysql > show status like 'Slave_running';
如果系统有一个从复***务器,这个值指明了从服务器的健康度
3.Threads_connected
mysql > show status like 'Threads_connected';
当前客户端已连接的数量。这个值会少于预设的值,但你也能监视到这个值较大,这可保证客户端是处在活跃状态。
4.Threads_running
mysql > show status like 'Threads_running';
如果数据库超负荷了,你将会得到一个正在(查询的语句持续)增长的数值。这个值也可以少于预先设定的值。这个值在很短的时间内超过限定值是没问题的。当Threads_running值超过预设值时并且该值在5秒内没有回落时, 要同时监视其他的一些值。
5.Aborted_clients
mysql > show status like 'Aborted_clients';
客户端被异常中断的数值,即连接到mysql服务器的客户端没有正常地断开或关闭。对于一些应用程序是没有影响的,但对于另一些应用程序可能你要跟踪该值,因为异常中断连接可能表明了一些应用程序有问题。
6.Questions
mysql> show status like 'Questions';
每秒钟获得的查询数量,也可以是全部查询的数量,根据你输入不同的命令会得到你想要的不同的值。
7.Handler_*
mysql> show status like 'Handler_%';
如果你想监视底层(low-level)数据库负载,这些值是值得去跟踪的。
如果Handler_read_rnd_next值相对于你认为是正常值相差悬殊,可能会告诉你需要优化或索引出问题了。Handler_rollback表明事务被回滚的查询数量。你可能想调查一下原因。
8.Opened_tables
mysql> show status like 'Opened_tables';
表缓存没有命中的数量。如果该值很大,你可能需要增加table_cache的数值。典型地,你可能想要这个值每秒打开的表数量少于1或2。
9.Select_full_join
mysql> show status like 'Select_full_join';
没有主键(key)联合(Join)的执行。该值可能是零。这是捕获开发错误的好方法,因为一些这样的查询可能降低系统的性能。
10.Select_scan
mysql> show status like 'Select_scan';
执行全表搜索查询的数量。在某些情况下是没问题的,但占总查询数量该比值应该是常量(即Select_scan/总查询数量商应该是常数)。如果你发现该值持续增长,说明需要优化,缺乏必要的索引或其他问题。
11.Slow_queries
mysql> show status like 'Slow_queries';
超过该值(--long-query-time)的查询数量,或没有使用索引查询数量。对于全部查询会有小的冲突。如果该值增长,表明系统有性能问题。
12.Threads_created
mysql> show status like 'Threads_created';
该值应该是低的。较高的值可能意味着你需要增加thread_cache的数值,或你遇到了持续增加的连接,表明了潜在的问题。
13.客户端连接进程数
shell> mysqladmin processlist
mysql> show processlist;
你可以通过使用其他的统计信息得到已连接线程数量和正在运行线程的数量,检查正在运行的查询花了多长时间是一个好主意。如果有一些长时间的查询,管理员可以被通知。你可能也想了解多少个查询是在"Locked"的状态—---该值作为正在运行的查询不被计算在内而是作为非活跃的。一个用户正在等待一个数据库响应。
14.innodb状态
mysql> show engine innodb statusG;
该语句产生很多信息,从中你可以得到你感兴趣的。首先你要检查的就是“从最近的XX秒计算出来的每秒的平均负载”。
(1)Pending normal aio reads: 该值是innodb io请求查询的大小(size)。如果该值大到超过了10—20,你可能有一些瓶颈。
(2)reads/s, avg bytes/read, writes/s, fsyncs/s:这些值是io统计。对于reads/writes大值意味着io子系统正在被装载。适当的值取决于你系统的配置。
(3)Buffer pool hit rate:这个命中率非常依赖于你的应用程序。当你觉得有问题时请检查你的命中率
(4)inserts/s, updates/s, deletes/s, reads/s:有一些Innodb的底层操作。你可以用这些值检查你的负载情况查看是否是期待的数值范围。
如何用shell脚本实现自动监测mysql实例状态
本文介绍 MySQL 8.0 shell 子模块 Util 的两个导入特性 importTable/import_table(JS和python 版本的命名差异)、importJson/import_json的使用方法。
其中 import_table 是通过传统 MySQL 协议来通信,Import_json 是通过 X 插件协议来通信。MySQL 一直以来提供导入文件 SQL 命令 load data infile(单线程)以及对应的可执行文件 mysqlimport(多线程)。
比如我导入 100W 行示例数据到表 ytt.tl1,花了 24 秒。这个已经是 MySQL 默认导入来的最快的。分析那我们现在看下 mysqlimport 工具的升级版,mysqlshell 的 util 工具集。
使用这两个工具之前,必须得临时开启 local_infile 选项。1. import_table建立 3306 端口的新连接我这里切换为 python 模式清空掉示例表 Ytt.tl1import_table 有两个参数,第一个参数定义导入文件的路径,第二个定义相关选项,比如导入的格式,并发的数量等。定义文件路径(参数1)定义选项(参数2)执行导入:只花了不到 17 秒,比传统 mysqlimport 快了不少。
我们上面指定了显式指定了字段分隔符,那有没有已经定义好的组合格式呢? 答案是有的,选项 dialect 可以指定以下格式:csv,tsv,json,csv-unix那么上面的导入,我们可以更简单,改下变量 y_options1 的定义导入时间差不多。这里要说明下,dialect 选项的优先级比较低,比如添加了'linesTerminatedBy':' ', 则覆盖他自己的' '。
选项 diaelect 还有一个可选值为 json,可以直接把 json 结果导入到文档表里。比如我新建一张表 tl1_json重新定义文件以及导入选项。导入 JSON 数据速度也还可以,不到 24 秒。那导入 json 数据,就必须得提到以 X 插件协议通信的工具 import_json了。2. imort_json我们切换到 mysqlx 端口import_json 参数和 Import_table 参数类似,这里我改下选项我在手册上没有看到多线程的选项,所以单线程跑 35 秒慢了些。查看刚刚导入的数据import_json 不仅仅可以导入 Json 数据,更重要的是可以在 BSON 和 JSON 之间平滑的转换,有兴趣的同学可以去 TRY 下。
如何用shell脚本实现自动监测mysql实例状态
本文介绍 MySQL 8.0 shell 子模块 Util 的两个导入特性 importTable/import_table(JS和python 版本的命名差异)、importJson/import_json的使用方法。
其中 import_table 是通过传统 MySQL 协议来通信,Import_json 是通过 X 插件协议来通信。MySQL 一直以来提供导入文件 SQL 命令 load data infile(单线程)以及对应的可执行文件 mysqlimport(多线程)。
比如我导入 100W 行示例数据到表 ytt.tl1,花了 24 秒。这个已经是 MySQL 默认导入来的最快的。分析那我们现在看下 mysqlimport 工具的升级版,mysqlshell 的 util 工具集。
使用这两个工具之前,必须得临时开启 local_infile 选项。1. import_table建立 3306 端口的新连接我这里切换为 python 模式清空掉示例表 Ytt.tl1import_table 有两个参数,第一个参数定义导入文件的路径,第二个定义相关选项,比如导入的格式,并发的数量等。定义文件路径(参数1)定义选项(参数2)执行导入:只花了不到 17 秒,比传统 mysqlimport 快了不少。
我们上面指定了显式指定了字段分隔符,那有没有已经定义好的组合格式呢? 答案是有的,选项 dialect 可以指定以下格式:csv,tsv,json,csv-unix那么上面的导入,我们可以更简单,改下变量 y_options1 的定义导入时间差不多。这里要说明下,dialect 选项的优先级比较低,比如添加了'linesTerminatedBy':' ', 则覆盖他自己的' '。
选项 diaelect 还有一个可选值为 json,可以直接把 json 结果导入到文档表里。比如我新建一张表 tl1_json重新定义文件以及导入选项。导入 JSON 数据速度也还可以,不到 24 秒。那导入 json 数据,就必须得提到以 X 插件协议通信的工具 import_json了。2. imort_json我们切换到 mysqlx 端口import_json 参数和 Import_table 参数类似,这里我改下选项我在手册上没有看到多线程的选项,所以单线程跑 35 秒慢了些。查看刚刚导入的数据import_json 不仅仅可以导入 Json 数据,更重要的是可以在 BSON 和 JSON 之间平滑的转换,有兴趣的同学可以去 TRY 下。
如何执行一个mysql的sql脚本文件
基本步骤如下:
1、创建包含sql命令的sql脚本文件
文件中包含一些列的sql语句,每条语句最后以;结尾,文件内容示例如下:
--创建表,使用“--”进行注释
create table 表名称(Guid Varchar(38) not null primary key,
Title Varchar(255),
) TYPE=InnoDB;
--在表A中增加字段Status
alter table A add Status TinyInt default '0';
--在表A上创建索引
create index XX_TaskId_1 on A(Id_);
--在表A中添加一条记录
Insert into A (Id,ParentId, Name) values(1,0,'名称');
--添加、修改、删除数据后,有可能需要提交事务Commit;2、执行sql脚本文件
方法一 使用cmd命令执行(windows下,unix或linux在的其控制台下)
【Mysql的bin目录】\mysql –u用户名 –p密码 –D数据库<【sql脚本文件路径全名】,示例:
D:\mysql\bin\mysql –uroot –p123456 -Dtest<d:\test\ss.sql注意:A、如果在sql脚本文件中使用了use 数据库,则-D数据库选项可以忽略
B、如果【Mysql的bin目录】中包含空格,则需要使用“”包含,如:“C:\Program Files\mysql\bin\mysql” –u用户名 –p密码 –D数据库<【sql脚本文件路径全名】
方法二 进入mysql的控制台后,使用source命令执行