>

开发进阶篇系列,MySQL中的常用工具实例汇总

- 编辑:大富豪棋牌游戏下载 -

开发进阶篇系列,MySQL中的常用工具实例汇总

一.概述

    mysqlshow顾客端查找工具,能非常快地寻觅存在怎么样数据库,数据库中的表,表中的列或索引,和mysql客商端工具很左近,不过有一点性情是mysql顾客端工具所不抱有的。
  mysqlshow的利用格局如下:
大富豪棋牌游戏手机版 1

    如果不加任何选取,私下认可处境下,会来得全数数据库,下边将展现当前mysql中兼有数据库。
大富豪棋牌游戏手机版 2

mysql(客商端连接工具)

mysql[options][database]

这里的 options 表示 mysql 的可用选项,能够一遍写叁个照旧八个,也足以不写;database 表示连接的数据库,二遍只好写一个,假设不写,连接成功后供给用 use database 来进入要操作的数据库

有二种表明情势:

  • -加选项单词的缩写字符,加选项值

      mysql --uroot
    
  • --加选项的一体化单词加=加选项的实际值

      mysql --user=root
    

要询问越来越多的选项,能够使用 mysql --help 命令查看

前言

二.上面是mysqlshow的片段常用选项

    2.1 --count 呈现数据库和表的总括音讯

      假如不点名数据库,则体现每一种数据库的称号,表数据,库总记录行数。下边是查看全部数据库。
大富豪棋牌游戏手机版 3

      假若钦点数据库,则显示内定数据库的各样表名,表字段数量,表记录总行数。 上边是翻开mysql库。
大富豪棋牌游戏手机版 4

      假设钦赐数据库和表,则显得字段音讯, 下边是翻开mysql库的user表。
大富豪棋牌游戏手机版 5

    2.2 -k 展现内定表中的享有索引 
     该采用展现两部份,一是钦命表的表结构,二是钦赐表的当下目录音信.上面是展现mysql库下的user表。
大富豪棋牌游戏手机版 6

--下面的sql语句显示与上面功能一样,查询mysql库下的user表,一是字段信息,二是索引信息
    SHOW FULL COLUMNS FROM mysql.`user`
    SHOW INDEX  FROM mysql.`user`

   2.3 -i 展现表的部分情状音讯

      该选用照旧很有用的,上面是显得mysql库下的user表状态新闻。
大富豪棋牌游戏手机版 7

大富豪棋牌游戏手机版 8

   更多mysqlshow信息

一而再选项

-u 或者 --user=name 内定客商名

-p 或者 --password[=name]内定密码

-h 或者 --host=name 钦赐服务器 IP 或许域名

-P 或者 --port=# 钦赐连接端口

本文首要给大家介绍了有关MySQL常用工具的相干内容,分享出来供我们参考学习,上边话十分少说了,来三只看看详细的牵线吧。

客户端字符集选项

--default-character-set=character-name

一、mysql (客商端连接工具)

施行选项

-e 或者 --execute=name 施行 SQL 语句并退出

此选项能够一直在 MySQL 顾客端施行 SQL 语句,而不用接二连三到 MySQL 数据库后再实践

能够接踵而至 蜂拥而至进行多少个 SQL 语句,用分号隔离

mysql -uroot -p -e"select * from dbtest.xixi;select * from dbtest.haha"

利用最频仍的连接数据库的客户端工具,使用语法如下:

格式化选项

-E 或者 --vertical 将出口格局根据字段顺序竖着显示,类似于 SQL 语句后加 G,能够将出口内容相当多的行更清楚完整的显得,平日和 -e 选项联合利用

-s 或者 --silent 去掉 mysql 中的线条框突显,字段之间用 tab 进行私分,每条记下呈现一行

mysql [options] [database]

错误处理选项

-f 或者 --force 强制推行 SQL

-v 或者 --verbose 展现越多音讯

--show-warnings 呈现警告音信

此处的 options 表示 mysql 的可用选项,可以一回写一个要么三个,以致足以不写;database 表示连接的数据库,叁次只好写一个依旧不写,假若不写,连接成功后必要用 “use database”命令来步向要操作的数据库。

myisampack(MyISAM 表压缩工具)

myisampack tname

缩减后变为只读表

1. 一而再选项

mysqladmin(MySQL 管理工科具)

mysqladmin 是七个推行管理操作的客商端程序。能够用它来检查服务器的配备和当下的意况,创设并剔除数据库等。它的功效和 mysql 客商端特别周围,首要区别在于它更看得起于某个管理方面包车型客车效果与利益,比方关闭数据库

mysqladmin [options] command [command-options] [command [command-options]]...

选料的表达方式有多样,比方:

mysqlbinlog(日志管理工科具)

由于劳动器生成的二进制日志文件以二进制格式保存,所以假诺想要检查这几个文件的文本格式,就能够用到 mysqlbinlog 日志管理工具

mysqlbinlog [options] log-files1 log-files2...

option 常用的选项如下:

-d 或者 --database=name 钦赐数据库名称,只列出钦赐的数据库相关操作

-o 或者 --offset=# 忽略掉日志中的前 n 行命令

-r 或者 -result-file=name 将出口的文本格式日志输出到钦命文件

-s 或者 -short-form 展现轻便格式,省略掉一部分音信

--set-charset=char-name 在输出为文本格式时,在文书的第一行加上 set names char-name

--start-datetime=name --stop-datetime=name 钦赐日期区间内的全体日志

--start-position=# --stop-position=# 内定地点距离内的富有日志

# 这三种方式都是可以的
shell> mysql -u root
shell> mysql -uroot
shell> mysql -user=root

mysqlcheck(MyISM 表维护理工人具)

mysqlcheck 顾客端工具得以检查和修补 MyISAM 表,还足以优化和分析表,实际上,它集成了 mysql 工具中的 check,repair,analyze,optimize 的职能

mysqlcheck [options] dbname [table]
mysqlcheck [options] --database db1[db2 db3...]
mysqlcheck [options] --all-database

option 中有以下常用选项:

-c 或者 --check 检查表(默认)

-r 或者 --repair 修复表

-a 或者 --analyze大富豪棋牌游戏手机版, 分析表

-o 或者 --optimize 优化表

  1. 接连选项

mysqldump(数据导出工具)

mysqldump 顾客端工具用来备份数据库或在不相同数据库之间开展多少迁移。备份内容包涵成立表或装载表的 SQL 语句

mysqldump [options] dbname [tables]
mysqldump [options] --database db1[db2 db3]...
mysqldump [options] --all-database

mysqldump --help 查看更详实功用

  • -u, --user=name    钦赐顾客名
  • -p, --password[=name]    钦命密码 
  • -h, --host=name    钦赐服务器 IP 可能域名 
  • -P, --port=#    钦命连接端口

出口内容选择

--add-drop-database 每一种数据库创建语句前增进 drop database 语句

--add-drop-table 在各种表成立语句前拉长 drop table 语句

上述这两个挑选能够在导入数据库时决不先手工删除旧的数据库,而是会活动删除,提升导入成效,可是导入前早晚要做好备份况兼认可旧数据库的确已经能够去除,否则误操作将会招致数据的损失。暗中认可情状下,那多少个参数都是机关抬高的

-n 或者 --no-create-db 不含有数据库的成立语句

-t 或者 --no-create-info 不包罗数据表的创设语句

-d 或者 --no-data 不含有数据

貌似在在本地景况,为了便于,能够在 配置文件 my.cnf 中陈设当前客户和密码,配置好后,直接实施 mysql 就可以接连到数据库:

输出格式选项

--compact 使输出结果简洁,不包含默许选项中的各样注释

-c 或者 --complete-insert 使得出口文件中的 insert 语句包涵字段名称,暗中认可不包蕴

-T 将钦定数量表中的数量被分成单纯的数量文本和建表 SQL 四个公文

[client]
user=root
password=000000
port = 3306
socket = /tmp/mysql.sock
default-character-set = utf8mb4

字符集选项

--default-character-set=name 能够设置导出的客商端字符集

其一选项在导出数据库的时候十分重大,如若客商端字符集和数据库字符集不均等,数据在导出的时候就供给开展字符集转变,将数据库字符集调换为客户端字符集,经过转换后的数量很恐怕成为乱码也许特殊字符,使得备份文件不可能复苏

配备好后,直接施行 mysql 就可以:

别的常用选项

-F 或者 --flush-logs:备份前刷新日志。加上此选项后,备份前将关门旧日志,生成新日志。使得举办还原的时候平昔从新日志开头实行重做,大大有助于了过来进程

-l 或者 --lock-tables:给全部表加读锁。能够在备份期间利用,使得数据不能够被更新,从而使备份的多寡保持一致性,能够同盟 -F 选项联合使用

zj@bogon:~$ mysql
Welcome to the MySQL monitor. Commands end with ; or g.
Your MySQL connection id is 19
...

mysqlimport(数据导入工具)

用来导入 mysqldump 加 -T 选项后导出的文件文件。它实际上是顾客端提供了 load data infile 语句的多少个发令行接口

mysqlimport [options] dbname textfile1 [textfile2]...

报到远程服务器,供给内定地点和端口:

mysqlshow(数据库对象查看工具)

用来急忙的追寻存在什么样数据库,数据库中的表,表中的列或索引

mysqlshow [option] [dbname [tablename [colname]]]

若是不加任何选取,默许景况下会议及展览示全数数据库

常用选项:

--count:彰显数据库和表的计算音讯。要是不钦点数据库,则展现各类数据库的名称,表数据,记录数据;借使钦命数据库,则显得钦赐数据库的各种表名,字段数量,记录数据;若是钦赐具体数据库中的具体表,则呈现表的字段消息

-k 或者 --keys:展现钦定表中的具有索引

-i 或者 --status:彰显表的局地动静音讯

shell> mysql -h 192.168.10.10 -P 3306 -uroot -p

perror(错误代码查看工具)

perror [options] [errorcode [errorcode...]]

注意: 在行业内部的生育条件中,为了安全起见,一般要求创制应用账号并赋予适当权限,而不会用 root 直接操作数据库;暗许端口(3306)一般不要使用,能够改为随便操作系统未占用的端口。

replace(文本替换工具)

replace from to [from to]... -- file [file]...
replace from to [from to]... < file

-- 表示字符串甘休,文件的启幕,能够跟四个源文件,替换达成后会覆盖原来的文章件

< 表示前面包车型地铁文件作为输入,替换后的文书展现在业内输出上,不会覆盖原著件

2. 顾客端字符集选项

--default-character-set=charset-name

作为服务器的字符集选项,那一个选项也足以部署在 my.cnf 的 [mysqld] 组中。同样,作为客商端字符集选项,也足以布置在 my.cnf 的 [mysql]组中,那样每趟用 mysql 工具连接数据库的时候就能够活动使用此客商端字符集。当然,也足以在 mysql 的下令行中手工业钦命顾客端字符集:

shell> mysql -u user -default-character-set=charset

也正是在 mysql 客商端连接成功后试行:

set names charset;

3. 实施选项

-e, --execute=name // 执行 sql 语句并退出

此选项能够一贯在 MySQL 顾客端实行 sql 语句,对于有个别批管理脚本,那是艺术更是有益:

zj@bogon:~$ mysql mysql -e "select user,host from user"
 ----------- ----------- 
| user | host |
 ----------- ----------- 
| root | 127.0.0.1 |
| mysql.sys | localhost |
| root | localhost |
 ----------- ----------- 

能够按这种措施连接施行五个 sql 语句,用德语分号(;)隔开分离。

4. 格式化选项

  • -E, --vertical    将出口情势遵照字段顺序竖着呈现 
  • -s, --silent    去掉 mysql 中的线条框展现

“-E” 选项类似于 mysql 里面实施 sql 语句后加 “G”, 平日和 -e 一齐行使。

二、myisampack (myisam 表压缩工具)

myisampack 是贰个表压缩工具,能够动用相当高的压缩率来对 myisam 存款和储蓄引擎的表展开削减,使得压缩后的表占用比压缩前小得多的长空。但是压缩后的表将成为一个只读表,不能够开展 DML 操作。

三、mysqladmin(MySQL 管理工科具)

mysqladmin 是三个实行管理操作的顾客端程序。可以用它来检查服务器的安顿和当下情状、创立并剔除数据库等。它的效用与 mysql 客商端特别类似,首要差别在于它更强调于部分管理方面包车型大巴作用。

使用语法:

shell> mysqladmin [options] command [command-options]...

能够实行的吩咐如下:

 create databasename Create a new database 新建数据库
 debug  Instruct server to write debug information to log 把 debug 日志记录到日志文件中
 drop databasename Delete a database and all its tables 删除数据库
 extended-status Gives an extended status message from the server 查看 MySQL 服务器的状态信息
 flush-hosts Flush all cached hosts
 flush-logs Flush all logs
 flush-status Clear status variables
 flush-tables Flush all tables
 flush-threads Flush the thread cache
 flush-privileges Reload grant tables (same as reload)
 kill id,id,... Kill mysql threads
 password [new-password] Change old password to new-password in current format
 ping  Check if mysqld is alive
 processlist Show list of active threads in server
 reload  Reload grant tables
 refresh  Flush all tables and close and open logfiles
 shutdown  Take server down
 status  Gives a short status message from the server
 start-slave Start slave
 stop-slave Stop slave
 variables  Prints variables available
 version  Get version info from server

举例:

zj@bogon:/usr/local/mysql/bin$ mysqladmin -uroot -p shutdown
Enter password: 

四、日志管理工科具

是因为服务器生成的二进制文件以二进制格式保存,所以如若想要检查那一个文件的文本格式,就能够用到 mysqlbinlog 日志管理工科具。

用法如下:

shell> mysqlbinlog [option] log-file1 log-file2...

option 有相当多选项:

  • -d,--database=name: 钦点数据库名称,只列出钦点的数据库相关操作。
  • -o, --offset=#: 忽略日志中的前 n 行命令。
  • -r, --result-file=name: 将出口的文本格式日志输出到钦赐文件
  • -s, --short-form: 显示轻便格式,省略掉一部分新闻。
  • --start-datetime=name --stop-datetime=name: 内定日期区间内的有所日志。
  • --start-position=# --stop-position=#: 钦点地方间距内的保有日志
  1. 演示企图:创立新日志,新建库 t1 和 t2, 以及个别新建表 test1 和 test2
MySQL [(none)]> reset master;
Query OK, 0 rows affected (0.01 sec)

MySQL [(none)]> create table t1(id int,name varchar);
ERROR 1046 (3D000): No database selected
MySQL [(none)]> reset master;
Query OK, 0 rows affected (0.01 sec)

MySQL [(none)]> create database t1;
Query OK, 1 row affected (0.04 sec)

MySQL [(none)]> create database t2;
Query OK, 1 row affected (0.02 sec)

MySQL [(none)]> use t1;
Database changed
MySQL [t1]> create table test1(id int, name varchar(30));
Query OK, 0 rows affected (0.11 sec)

MySQL [t1]> insert into test1 value (1,'zj');
Query OK, 1 row affected (0.14 sec)

MySQL [t1]> insert into test1 value (2,'zj2');
Query OK, 1 row affected (0.02 sec)

MySQL [t1]> use t2;
Database changed
MySQL [t2]> create table test2(id int,name varchar(30));
Query OK, 0 rows affected (0.02 sec)

MySQL [t2]> insert into test2 select * from t1.test1;
Query OK, 2 rows affected (0.03 sec)
Records: 2 Duplicates: 0 Warnings: 0

MySQL [t2]> select * from t1.test1;
 ------ ------ 
| id | name |
 ------ ------ 
| 1 | zj |
| 2 | zj2 |
 ------ ------ 
2 rows in set (0.02 sec)

MySQL [t2]> select * from test2;
 ------ ------ 
| id | name |
 ------ ------ 
| 1 | zj |
| 2 | zj2 |
 ------ ------ 
2 rows in set (0.00 sec)
  1. 不加任何参数,呈现全体日志

注意:总得具有采访目的文件的权能

zj@bogon:/usr/local/mysql/bin$ sudo ./mysqlbinlog --no-defaults /data/mysql/mysql-bin.000001
[sudo] password for zj: 
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1*/;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
DELIMITER /*!*/;
# at 4
#170920 20:44:49 server id 1 end_log_pos 123 CRC32 0x42fd5a4d Start: binlog v 4, server v 5.7.18-log created 170920 20:44:49 at startup

......

create table test2(id int,name varchar(30))
/*!*/;
# at 1366
#170920 20:50:29 server id 1 end_log_pos 1431 CRC32 0x18a95938 Anonymous_GTID last_committed=6 sequence_number=7
SET @@SESSION.GTID_NEXT= 'ANONYMOUS'/*!*/;
# at 1431
#170920 20:50:29 server id 1 end_log_pos 1509 CRC32 0x2fa8bd6c Query thread_id=4 exec_time=0 error_code=0
SET TIMESTAMP=1505911829/*!*/;
BEGIN
/*!*/;
# at 1509
#170920 20:50:29 server id 1 end_log_pos 1622 CRC32 0x77ce6f3b Query thread_id=4 exec_time=0 error_code=0
SET TIMESTAMP=1505911829/*!*/;
insert into test2 select * from t1.test1
/*!*/;
# at 1622
#170920 20:50:29 server id 1 end_log_pos 1653 CRC32 0x41b7a45b Xid = 29
COMMIT/*!*/;
SET @@SESSION.GTID_NEXT= 'AUTOMATIC' /* added by mysqlbinlog */ /*!*/;
DELIMITER ;
# End of log file
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=0*/;
  1. 加 -d 选项,将只显示 t2 数据库的操作日志
zj@bogon:/usr/local/mysql/bin$ sudo ./mysqlbinlog --no-defaults /data/mysql/mysql-bin.000001 -d t2
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1*/;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;

......

SET TIMESTAMP=1505911829/*!*/;
insert into test2 select * from t1.test1
/*!*/;
# at 1622
#170920 20:50:29 server id 1 end_log_pos 1653 CRC32 0x41b7a45b Xid = 29
COMMIT/*!*/;
SET @@SESSION.GTID_NEXT= 'AUTOMATIC' /* added by mysqlbinlog */ /*!*/;
DELIMITER ;
# End of log file
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=0*/;
  1. 加 -o 选项, 忽略掉前 20 行命令
zj@bogon:/usr/local/mysql/bin$ sudo ./mysqlbinlog --no-defaults /data/mysql/mysql-bin.000001 -o 20
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1*/;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
DELIMITER /*!*/;
# at 4
#170920 20:44:49 server id 1 end_log_pos 123 CRC32 0x42fd5a4d Start: binlog v 4, server v 5.7.18-log created 170920 20:44:49 at startup
# Warning: this binlog is either in use or was not closed properly.
ROLLBACK/*!*/;
BINLOG '
wWLCWQ8BAAAAdwAAAHsAAAABAAQANS43LjE4LWxvZwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAADBYsJZEzgNAAgAEgAEBAQEEgAAXwAEGggAAAAICAgCAAAACgoKKioAEjQA
AU1a/UI=
'/*!*/;
# at 1509
#170920 20:50:29 server id 1 end_log_pos 1622 CRC32 0x77ce6f3b Query thread_id=4 exec_time=0 error_code=0
use `t2`/*!*/;
SET TIMESTAMP=1505911829/*!*/;
SET @@session.pseudo_thread_id=4/*!*/;
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
SET @@session.sql_mode=1436549152/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!C utf8mb4 *//*!*/;
SET @@session.character_set_client=45,@@session.collation_connection=45,@@session.collation_server=45/*!*/;
SET @@session.lc_time_names=0/*!*/;
SET @@session.collation_database=DEFAULT/*!*/;
insert into test2 select * from t1.test1
/*!*/;
# at 1622
#170920 20:50:29 server id 1 end_log_pos 1653 CRC32 0x41b7a45b Xid = 29
COMMIT/*!*/;
SET @@SESSION.GTID_NEXT= 'AUTOMATIC' /* added by mysqlbinlog */ /*!*/;
DELIMITER ;
# End of log file
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=0*/;
  1. 加 -r 选项,将上边的结果输出到文件 resultfile 中。
zj@bogon:/usr/local/mysql/bin$ sudo ./mysqlbinlog --no-defaults /data/mysql/mysql-bin.000001 -o 20 -r ./logfile
zj@bogon:/usr/local/mysql/bin$ sudo more ./logfile
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1*/;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
...
  1. 结果突显的原委很多,显得比较乱,加 -s 选项将方面的内容实行简要突显
zj@bogon:/usr/local/mysql/bin$ sudo ./mysqlbinlog --no-defaults /data/mysql/mysql-bin.000001 -o 20 -s
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1*/;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
DELIMITER /*!*/;
ROLLBACK/*!*/;
use `t2`/*!*/;
SET TIMESTAMP=1505911829/*!*/;
SET @@session.pseudo_thread_id=999999999/*!*/;
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
SET @@session.sql_mode=1436549152/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!C utf8mb4 *//*!*/;
SET @@session.character_set_client=45,@@session.collation_connection=45,@@session.collation_server=45/*!*/;
SET @@session.lc_time_names=0/*!*/;
SET @@session.collation_database=DEFAULT/*!*/;
insert into test2 select * from t1.test1
/*!*/;
COMMIT/*!*/;
SET @@SESSION.GTID_NEXT= 'AUTOMATIC' /* added by mysqlbinlog */ /*!*/;
DELIMITER ;
# End of log file
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=0*/;
  1. 加 “--start-datetime --stop-datetime” 选项突显 5:00:00 ~ 5:01:00 之间的日记
zj@bogon:/usr/local/mysql/bin$ sudo ./mysqlbinlog --no-defaults /data/mysql/mysql-bin.000001 --start-datetime="2017/09/30 05:00:00" --stop-datetime='2017/09/30 05:01:00'

初阶日期和甘休日期能够只写二个。倘诺只写起来日期,表示范围最初日期到日志结束;假使只写停止日期,表示日志初步到钦赐的截至日期。

  1. --start-position=# 和 --stop-position=#, 与日期范围类似,可是能够更可信赖的意味范围。
sudo ./mysqlbinlog --no-defaults /data/mysql/mysql-bin.000001 --start-position=4 --stop-datetime=100

五、mysqlcheck (myisam 表维护理工科人具)

mysqlcheck 工具得以检查和修补 myisam 表,还能优化和分析表。实际上,它集成了 mysql 工具中的 check、repair、analyze、optimize

有 3 种艺术得以来调用 mysqlcheck:

shell> mysqlcheck [options] db_name [tables]
shell> mysqlcheck [options] --database DB1 [DB2 DB3...]
shell> mysqlcheck [options] --all-databse

option 中有以下常用选项:

  • -c, --check (检查表)
  • -r, --repair (修复表)
  • -a, --analyze (分析表)
  • -o, --optimize (优化表)

个中,默许选项是 -c (检查表)

示例:

  1. 检查表
zj@bogon:/data/mysql$ mysqlcheck -c t2
t2.test1      OK
t2.test2      OK
  1. 修复表
zj@bogon:/data/mysql$ mysqlcheck -r t2
t2.test1
note : The storage engine for the table doesn't support repair
t2.test2      OK

test1 表的囤积引擎为 innodb,不援助 repair。

  1. 分析表
zj@bogon:/data/mysql$ mysqlcheck -a t2
t2.test1      OK
t2.test2      OK
  1. 优化表
zj@bogon:/data/mysql$ mysqlcheck -o t2
t2.test1
note : Table does not support optimize, doing recreate   analyze instead
status : OK
t2.test2  

六、mysqldump (数据导出工具)

mysqldump 顾客端工具用来备份数据库或在差别数据库之间张开数据迁移。备份内容包括创制表或装载表的 sql 语句。

有三中方法来调用 mysqldump:

mysqldump [OPTIONS] database [tables] // 备份单个数据库或者库中部分数据表
mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...] //备份指定的一个或者多个数据库
mysqldump [OPTIONS] --all-databases [OPTIONS] // 备份所有数据库
  1. 连天选项
  • -u, --user=name             // 钦赐客户名
  • -p, --password[=name]       // 内定密码 
  • -h, --host=name             // 钦命服务器 IP 大概域名
  • -p, --port=#                // 钦赐连接端口

示例:

shell> mysqldump -h192.18.10.10 -p3306 -uroot -p test > test.sql
  1. 出口内容选拔
  • --add-drop-database     每一个数据库创造语句前拉长 drop database 语句
  • --add-drop-table        在各类表创设语句前增进 drop table 语句

在暗中同意情形下,那五个参数都自动抬高。

  • -n, --no-create-db      不带有数据库的创始语句 
  • -t, --no-create-info    不分包数据表的创办语句
  • -d, --no-data           不含有数据
  1. 输出格式选项

--compact 选项使得出口结果简洁,不包涵暗许选项中的种种注释。

root@bogon:/usr/local/mysql/bin# ./mysqldump --compact t2 emp > emp.sql
root@bogon:/usr/local/mysql/bin# more emp.sql
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `emp` (
 `id` int(11) NOT NULL DEFAULT '0',
 `name` varchar(10) DEFAULT NULL,
 `context` text,
 PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
/*!40101 SET character_set_client = @saved_cs_client */;
INSERT INTO `emp` VALUES (1,'a','a'),(2,'b','b');

-c 或许 --complete-insert 选项使得出口文件中的 insert 语句富含字段名称,暗中认可是不蕴涵字段名称的。

root@bogon:/usr/local/mysql/bin# ./mysqldump -c --compact t2 emp > emp.sql
root@bogon:/usr/local/mysql/bin# more emp.sql
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `emp` (
 `id` int(11) NOT NULL DEFAULT '0',
 `name` varchar(10) DEFAULT NULL,
 `context` text,
 PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
/*!40101 SET character_set_client = @saved_cs_client */;
INSERT INTO `emp` (`id`, `name`, `context`) VALUES (1,'a','a'),(2,'b','b');

-T 选项将点名数量表中的数据备份为单纯的数量文本和建表 sql 三个文件,经常和底下多少个选取一同合营使用,将数据导出为钦点格式彰显。

  • -T, --tab=name                  备份数据和建表语句
  • --fileds-terminated-by=name     域分隔符
  • --fileds-enclosed-by=name       域援引符
  • --fileds-optionally-enclosed-by=name    域可选引用符
  • --fileds-escaped-by=name        转义字符

示范:将 t2 数据库中的表 emp 导出为单独的数据文本和建表 sql 三个公文,并存放在脚下路线下的 bak 目录下。

1.创办备份目录

root@bogon:/usr/local/mysql/bin# mkdir bak
  1. 将 t2 数据库下的表 emp 备份到 bak 目录下
root@bogon:/usr/local/mysql/bin# ./mysqldump t2 emp -T ./bak
  1. 查阅 bak 目录,发掘三个文件
root@bogon:/usr/local/mysql/bin# ls ./bak
emp.sql emp.txt
  1. 翻看五个文件的内容, .sql 结尾的是建表及插入数据的sql,.txt 结尾的是表数据
root@bogon:/usr/local/mysql/bin# more ./bak/emp.sql
-- MySQL dump 10.13 Distrib 5.7.18, for Linux (x86_64)
--
-- Host: localhost Database: t2
-- ------------------------------------------------------
-- Server version 5.7.18-log

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE=' 00:00' */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;

--
-- Table structure for table `emp`
--

DROP TABLE IF EXISTS `emp`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `emp` (
 `id` int(11) NOT NULL DEFAULT '0',
 `name` varchar(10) DEFAULT NULL,
 `context` text,
 PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
/*!40101 SET character_set_client = @saved_cs_client */;

/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;

/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;

-- Dump completed on 2017-09-21 12:07:38


root@bogon:/usr/local/mysql/bin# more ./bak/emp.txt 
1 a a
2 b b
  1. 字符集选项

mysqldump 导出的数据的字符集使用的是 mysqld 运维时的暗中认可字符集,如若表的字符集用的不是暗许字符集,导出的数目就有望出现乱码。所以在导出时,应该先分明表的字符集,在导出时钦赐该字符集就能够。

shell> mysqldump -uroot --compact --default-character-set=utf8 t2 emp > emp.sql
  1. 别的常用选项

-F --flush-logs (备份前刷新日志)

加上此选项后,备份前将关门就日志,生成新日志。使得举行理并答复原的时候一直从新日志开首开展重做,大大有利于了苏醒进度。

-l --lock-tables (给持有表加读锁)

能够在备份时期使用,使得数据不可能被更新,进而使备份的多都督持一致性,可以相配-F 选项联合利用。

七、mysqlimport (数据导入工具)

mysqlimport 是顾客端数据导入工具,用来导入 mysqldump 加 -T 选项后导出的文书文件。

主导用法:

shell> mysqlimport [options] db_name textfile1

八、mysqlshow (数据库对象查看工具)

mysqlshow 顾客端对象查找工具,用来十分的快的检索存在哪些数据库,数据库中的表、表中的列或索引,和 mysql 顾客端工具很相近,然而有一点性子是 mysql 顾客端工具所不富有的。

使用办法:

shell> mysqlshow [option] [db_name [tbl_name [col_name]]]

假定不加任何取舍,暗中同意境况下会来得全部数据库。

常用选项:

  1. --count (展现数据库和表的总括音信)

假使不钦定数据库,则展现各类数据库的名称、表数据、记录数据;

万一钦赐数据库,则显得内定数据库的各类表名、字段数量,记录数据;

要是钦赐具体数据库中的具体表,则呈现表的字段音信。

  1. -k 恐怕 --keys (呈现钦命表中的有所索引)

此选项呈现了两有些剧情,一部分是钦命表的表结构,另一局地中是内定表的方今目录音讯

  1. -i 或然 --status (彰显表的部分状态音讯)

九、perror (错误代码查看工具)

在 MySQL 的施用进程中,或许会并发五光十色的 error。那几个 error 有些是由于操作系统引起的,比如文件可能目录官样文章;有些则是出于存储引擎使用不当引起的。那么些error 一般都有三个代码,类似于 “error:#” 或者 “Errcode:#”,“#” 代表切实的错误号。perror 的成效正是分解这么些错误代码的事无巨细含义:

perror [options] [errorcode [errorcode]]

zj@bogon:/usr/local/mysql/bin$ perror 30
OS error code 30: Read-only file system
zj@bogon:/usr/local/mysql/bin$ perror 60
OS error code 60: Device not a stream
zj@bogon:/usr/local/mysql/bin$ perror 30 60
OS error code 30: Read-only file system
OS error code 60: Device not a stream

总结

如上正是那篇小说的全部内容了,希望本文的内容对咱们的学习恐怕干活能推动一定的赞助,假使有疑难大家能够留言沟通,多谢大家对台本之家的援救。

您或然感兴趣的篇章:

  • 5个常用的MySQL数据库管理工科具详细介绍
  • Mysql导入导出工具Mysqldump和Source命令用法详解
  • MYSQL ZIP免安装版配置步骤及图形化管理工科具mysql-workbench
  • MySQL质量深入分析工具profile使用教程
  • Mysqlslap MySQL压力测量检验工具 轻便教程
  • 选拔Xtrabackup工具备份及回复(MySQL DBA的不可缺少乏工人具)
  • mysql中优化和修补数据库工具mysqlcheck详细介绍
  • Mysql自带profiling质量剖析工具使用分享
  • 五款常用mysql slow log剖析工具的比较深入分析
  • mytop 使用介绍 mysql实时监察工具

本文由关于我们发布,转载请注明来源:开发进阶篇系列,MySQL中的常用工具实例汇总