如何运用sql语句查看mysql表上的目录消息,占用超大空间的标题

mysql提供了show index from tablename语句来查看表上的索引信息。

最近几个月服务器总是频繁当机,导致比尔盖子的可用性得不到保证。但说也奇怪,当机的时候,服务器可以正常连接,Nginx也看似正常,但就是PHP-FPM失去响应。后来无意中df
-h一下,发现:
rootfs 7.7G 7.7G 0 100% /

mysql_affected_rows — 取得前一次 MySQL 操作所影响的记录行数
mysql_num_rows — 函数返回结果集中行的数目。

例如:

根目录满了!便认为是日志太多,清理了下日志。但基本每个一个星期日志就会满。弄得比尔盖子不得安宁。后来就把/var独立分区了,但依然不奏效,有多少占多少。也清理过/var/tmp和/var/cache,但效果依然有限。

config.php

show index from j_page_entry;

今天,耐着性子du -ah,发现/var/lib/mysql占用空间异常,cd到这里ls
-lh后发现:
 -rw-rw—- 1 mysql mysql 5242880 Feb 27 14:49 ib_logfile0
 -rw-rw—- 1 mysql mysql 5242880 Dec 27 17:55 ib_logfile1
 -rw-rw—- 1 mysql mysql 588M Mar 12 02:03 maria_log.00000003
 -rw-rw—- 1 mysql mysql 52 Mar 12 01:54 maria_log_control
 drwx—— 2 mysql root 4.0K Jan 15 14:28 mysql
 -rw-rw—- 1 mysql mysql 20K Dec 27 17:54 mysqld-bin.000001
 -rw-rw—- 1 mysql mysql 715K Dec 27 17:54 mysqld-bin.000002
 -rw-rw—- 1 mysql mysql 625 Dec 28 11:46 mysqld-bin.000003
 -rw-rw—- 1 mysql mysql 125 Dec 27 18:20 mysqld-bin.000004
 -rw-rw—- 1 mysql mysql 125 Dec 27 18:20 mysqld-bin.000005
 -rw-rw—- 1 mysql mysql 125 Dec 27 18:21 mysqld-bin.000006
 -rw-rw—- 1 mysql mysql 125 Dec 27 18:21 mysqld-bin.000007
 -rw-rw—- 1 mysql mysql 125 Dec 27 18:22 mysqld-bin.000008
 -rw-rw—- 1 mysql mysql 125 Dec 27 18:22 mysqld-bin.000009
 -rw-rw—- 1 mysql mysql 20K Dec 27 18:22 mysqld-bin.000010
 -rw-rw—- 1 mysql mysql 715K Dec 27 18:22 mysqld-bin.000011
 -rw-rw—- 1 mysql mysql 125 Dec 27 18:24 mysqld-bin.000012
 -rw-rw—- 1 mysql mysql 125 Dec 27 18:25 mysqld-bin.000013
 -rw-rw—- 1 mysql mysql 125 Dec 27 18:27 mysqld-bin.000014
 -rw-rw—- 1 mysql mysql 125 Dec 28 09:55 mysqld-bin.000015
 -rw-rw—- 1 mysql mysql 125 Dec 28 11:41 mysqld-bin.000016
 -rw-rw—- 1 mysql mysql 125 Dec 28 11:42 mysqld-bin.000017
 -rw-rw—- 1 mysql mysql 125 Dec 28 12:07 mysqld-bin.000018
 -rw-rw—- 1 mysql mysql 1.4K Dec 28 12:49 mysqld-bin.000019
 -rw-rw—- 1 mysql mysql 125 Dec 28 16:31 mysqld-bin.000020
 -rw-rw—- 1 mysql mysql 107M Dec 28 18:30 mysqld-bin.000021
 -rw-rw—- 1 mysql mysql 1.2M Dec 30 09:22 mysqld-bin.000022
 -rw-rw—- 1 mysql mysql 125 Dec 30 09:26 mysqld-bin.000023
 -rw-rw—- 1 mysql mysql 3.8K Dec 30 12:29 mysqld-bin.000024
 -rw-rw—- 1 mysql mysql 59M Jan 11 21:34 mysqld-bin.000025
 -rw-rw—- 1 mysql mysql 10M Jan 14 15:16 mysqld-bin.000026
 -rw-rw—- 1 mysql mysql 186K Jan 15 05:16 mysqld-bin.000027
 -rw-rw—- 1 mysql mysql 21K Jan 15 14:46 mysqld-bin.000028
 -rw-rw—- 1 mysql mysql 13K Jan 15 15:12 mysqld-bin.000029
 -rw-rw—- 1 mysql mysql 62M Jan 17 16:36 mysqld-bin.000030
 -rw-rw—- 1 mysql mysql 63M Jan 18 17:10 mysqld-bin.000031
 -rw-rw—- 1 mysql mysql 125 Jan 18 17:16 mysqld-bin.000032
 -rw-rw—- 1 mysql mysql 21K Jan 18 17:23 mysqld-bin.000033
 -rw-rw—- 1 mysql mysql 118M Jan 22 12:41 mysqld-bin.000034
 -rw-rw—- 1 mysql mysql 209K Jan 22 12:59 mysqld-bin.000035
 -rw-rw—- 1 mysql mysql 117M Jan 28 11:59 mysqld-bin.000036
 -rw-rw—- 1 mysql mysql 125 Jan 28 13:46 mysqld-bin.000037
 -rw-rw—- 1 mysql mysql 24M Jan 28 16:01 mysqld-bin.000038
 -rw-rw—- 1 mysql mysql 460K Jan 28 16:10 mysqld-bin.000039
 -rw-rw—- 1 mysql mysql 7.0M Jan 28 16:52 mysqld-bin.000040
 -rw-rw—- 1 mysql mysql 2.3M Jan 28 17:12 mysqld-bin.000041
 -rw-rw—- 1 mysql mysql 2.1M Jan 28 17:27 mysqld-bin.000042
 -rw-rw—- 1 mysql mysql 173K Jan 28 17:37 mysqld-bin.000043
 -rw-rw—- 1 mysql mysql 378K Jan 28 17:44 mysqld-bin.000044
 -rw-rw—- 1 mysql mysql 79K Jan 28 17:50 mysqld-bin.000045
 -rw-rw—- 1 mysql mysql 272K Jan 28 18:12 mysqld-bin.000046
 -rw-rw—- 1 mysql mysql 156K Jan 28 18:15 mysqld-bin.000047
 -rw-rw—- 1 mysql mysql 962K Jan 28 18:33 mysqld-bin.000048
 -rw-rw—- 1 mysql mysql 43K Jan 28 18:40 mysqld-bin.000049
 -rw-rw—- 1 mysql mysql 28M Jan 29 11:43 mysqld-bin.000050
 -rw-rw—- 1 mysql mysql 125 Jan 29 11:46 mysqld-bin.000051
 -rw-rw—- 1 mysql mysql 139K Jan 29 12:37 mysqld-bin.000052
 -rw-rw—- 1 mysql mysql 135K Jan 29 12:44 mysqld-bin.000053
 -rw-rw—- 1 mysql mysql 409M Feb 9 23:18 mysqld-bin.000054
 -rw-rw—- 1 mysql mysql 482M Feb 17 09:37 mysqld-bin.000055
 -rw-rw—- 1 mysql mysql 542M Feb 27 12:30 mysqld-bin.000056
 -rw-rw—- 1 mysql mysql 125 Feb 27 12:31 mysqld-bin.000057
 -rw-rw—- 1 mysql mysql 125 Feb 27 14:48 mysqld-bin.000058
 -rw-rw—- 1 mysql mysql 854M Mar 13 12:08 mysqld-bin.000059
 -rw-rw—- 1 mysql mysql 1.1K Feb 27 14:49 mysqld-bin.index

 1 <?php
 2     header('Content-Type:text/html; charset=utf-8');
 3     
 4     define('DB_HOST', 'localhost');
 5     define('DB_USER', 'root');
 6     define('DB_PWD', '123456');
 7     define('DB_NAME', 'zhiwen');
 8     
 9     $conn = @mysql_connect(DB_HOST, DB_USER, DB_PWD) or die('数据库链接失败:'.mysql_error());
10     
11     @mysql_select_db(DB_NAME) or die('数据库错误:'.mysql_error());
12     
13     @mysql_query('SET NAMES UTF8') or die('字符集错误:'.mysql_error());
14 ?>

<?php

 1 <?php
 2     sleep(3);
 3     require 'config.php';
 4     
 5     $query = "INSERT INTO user (user, pass, email, sex, birthday, date) 
 6             VALUES ('{$_POST['user']}', sha1('{$_POST['pass']}'), '{$_POST['email']}', '{$_POST['sex']}', '{$_POST['birthday']}', NOW())";
 7     
 8     mysql_query($query) or die('新增失败!'.mysql_error());
 9     
10     echo mysql_affected_rows();
11     
12     mysql_close();
13 ?>

$conn=mysql_connect('localhost','root','');//连接数据库 mysql_select_db('flag');//选择数据库 echo mysql_affected_rows(); ?>//最经 INSERT,UPDATE 或 DELETE 查询所影响的记录行数。

<?php
mysql_connect('localhost','root','');//连接数据库
mysql_select_db('flag');//选择数据库
$query=mysql_query('select * from test');//执行查询运距
echo mysql_num_rows($query);
?>//结果是返回查询的行数

将输出:

上帝老天爷,这些log和bin都是什么玩意儿?!最后找到资料:
mysql-bin.000001、mysql-bin.000002等文件是数据库的操作日志,例如UPDATE一个表,或者DELETE一些数据,即使该语句没有匹配的数据,这个命令也会存储到日志文件中,还包括每个语句执行的时间,也会记录进去的。这主要是用于操作审查和多数据库同步的。ib_logfile则是用来记录InnoDB的表一致性的,只有在当机后才能发挥作用。maria_log.00000003则是比尔盖子使用的MariaDB特有的文件,作用也差不多。

可以理解为mysql_affected_rows();常用在 INSERT,UPDATE 或
DELETE所影响的记录行数,而mysql_num_rows();是返回SELECT查询的行数

'j_page_entry', '0', 'PRIMARY', '1', 'pageId', 'A', '0', NULL, NULL, '', 'BTREE', '', ''
'j_page_entry', '0', 'IX_entryId', '1', 'entryId', 'A', '0', NULL, NULL, '', 'BTREE', '', ''

但是对比尔盖子来说,没有主从数据库,也不用审查操作,这些文件完全没有任何用处!因此,首先清理一下这些文件。然后编辑mysql配置文件,组织其再记录这些日志,铲草除根。Gentoo的MySQL日志在/etc/mysql/my.cnf。把里面的log-bin这一行注释掉。

    75个基本的mysql c api

更多用法可以参考mysql官网:

然后重启MySQL服务器,问题搞定!可用空间瞬间增加数GB!

    mysql_affected_rows();
    mysql_autocommit();
    mysql_change_user();
    mysql_character_set_name();
    mysql_close();
    mysql_commit();
    mysql_connect();
    mysql_create_db();
    mysql_data_seek();
    mysql_debug();
    mysql_drop_db();
    mysql_dump_debug_info();
    mysql_eof();
    mysql_errno();
    mysql_error();
    mysql_escape_string();
    mysql_fetch_field();
    mysql_fetch_field_direct();
    mysql_fetch_fields();
    mysql_fetch_lengths();
    mysql_fetch_row();
    mysql_field_count();
    mysql_field_seek();
    mysql_field_tell();
    mysql_free_result();
    mysql_get_client_info();
    mysql_get_character_set_info();
    mysql_get_client_version();
    mysql_get_host_info();
    mysql_get_proto_info();
    mysql_get_server_info();
    mysql_get_server_version();
    mysql_get_ssl_cipher();
    mysql_hex_string();
    mysql_info();
    mysql_init();
    mysql_insert_id();
    mysql_kill();
    mysql_library_end();
    mysql_library_init();
    mysql_list_dbs();
    mysql_list_fields();
    mysql_list_processes();
    mysql_list_tables();
    mysql_more_results();
    mysql_next_result();
    mysql_num_fields();
    mysql_num_rows();
    mysql_options();
    mysql_ping();
    mysql_query();
    mysql_real_connect();
    mysql_real_escape_string();
    mysql_real_query();
    mysql_reload();
    mysql_refresh();
    mysql_rollback();
    mysql_row_seek();
    mysql_row_tell();
    mysql_select_db();
    mysql_set_character_set();
    mysql_set_local_infile_default();
    mysql_set_local_infile_handler();
    mysql_set_server_option();
    mysql_shutdown();
    mysql_sqlstate();
    mysql_ssl_set();
    mysql_stat();
    mysql_store_result();
    mysql_thread_end();
    mysql_thread_id();
    mysql_thread_init();
    mysql_thread_safe();
    mysql_use_result();
    mysql_warning_count();

作者 biergaizi2009