您的位置:首页 > 博客中心 > 数据库 >

细聊MySQL之常用工具及基本操作(二)

时间:2022-03-14 03:22


四、客户端管理工具mysqlcheck的使用。mysqlcheck是客户端表维护工具,可以检查、修复、优化或分析表。

如 shell> mysqlcheck databasename tablename [options]

databasename为数据库名

tablename为表名

如果你只指定databasename,通常会检查databasename下所有的表。如果你既不指定databasename,也不指定tablename,那么一定要添加参数--all-databases,否则系统会不知道检查哪个数据库。参数的作用已经写在表格内,请大家参看。

--all-databases检查所有数据库中的所有表是否正常
--analyze分析表是否正常
--auto-repair如果表损坏,自动修复
--bind-address=ip_address同mysql命令
--character-sets-dir=path同mysql命令
--check检查表的错误
--check-only-changed只检查自上次检查后改变的地方
--compress同mysql命令
--databases处理所有在命令行上指定的数据库
--debug[=debug_options]写debug日志
--debug-check同mysql命令
--debug-info同mysql命令
--default-character-set=charset_name同mysql命令
--defaults-extra-file=file_name同mysql命令
--defaults-file=file_name同mysql命令
--defaults-group-suffix=str同mysql命令
--extended检查并且修复表
--fast检查没有被正常关闭的表
--force同mysql命令
--help同mysql命令
--host=host_name同mysql命令
--medium-check比--extended更快的操作
--no-defaultsRead no option files
--optimize优化表
--password[=password]同mysql命令
--port=port_num同mysql命令
--print-defaults同mysql命令
--protocol=type同mysql命令
--quick最快速检查表
--repair修复表错误,但不能修复唯一约束内有不唯一的值的情况
--silent同mysql命令
--socket=path同mysql命令
--ssl同mysql命令
--ssl-ca=file_name同mysql命令
--ssl-capath=dir_name同mysql命令
--ssl-cert=file_name同mysql命令
--ssl-cipher=cipher_list同mysql命令
--ssl-crl=file_name同mysql命令
--ssl-crlpath=dir_name同mysql命令
--ssl-key=file_name同mysql命令
--ssl-verify-server-cert同mysql命令
--tables覆盖--databases选项
--use-frm修复MyISAM引擎表
--user=user_name,同mysql命令
--verbose同mysql命令
--version同mysql命令
--write-binlog记录ANALYZE, OPTIMIZE, REPAIR到binlog

它有以下参数可供选择:

mysqlcheck的例子:/usr/local/mysql/bin/mysqlcheck --databases test  --auto-repair  --user=root --host=127.0.0.1 自动修复test库内的表。


五、数据库备份工具mysqldump的使用。mysqldump需要select权限以备份表,需要show view权限以备份视图,需要trigger权限以备份触发器。mysqldump能生成csv、文本、XML等格式。

    mysqldump的优点是方便和灵活,并且在恢复前可以做一定的自定义修改。但它在速度方面和可扩展性方面不是很强。如果需要备份大数据,mysqldummp不是一个好的解决方案,恢复数据会非常慢。对于高扩展的备份与恢复,物理备份是更好的选择。

    mysqldump语法如下

    shell> mysqldump [options] db_name [tbl_name ...]或

    shell> mysqldump [options] --databases db_name ...或

    shell> mysqldump [options] --all-databases


    参数如下表所示:

--add-drop-database--add-drop-table--add-drop-trigger--add-locks--all-databases--allow-keywords--apply-slave-statements--bind-address=ip_address--comments--compact--compatible=name[,name,...]--complete-insert--create-options--databases--debug[=debug_options]--debug-check--debug-info--default-auth=plugin--default-character-set=charset_name--defaults-extra-file=file_name--defaults-file=file_name--defaults-group-suffix=str--delete-master-logs--disable-keys--dump-date--flush-logs--flush-privileges--help--hex-blob--host--ignore-error=error[,error]...--ignore-table=db_name.tbl_name--insert-ignore--lock-all-tables--lock-tables--log-error=file_name--login-path=name--max_allowed_packet=value--net_buffer_length=value--no-autocommit--no-create-db--no-data--no-defaults--no-set-names--no-tablespaces--opt--order-by-primary--password[=password]--port=port_num--print-defaults--protocol=type--quick--quote-names--replace--result-file=file--secure-auth--set-charset--set-gtid-purged=value--shared-memory-base-name=name--single-transaction--skip-add-drop-table--skip-add-locks--skip-comments--skip-compact--skip-disable-keys--skip-extended-insert--skip-opt--skip-quick--skip-quote-names--skip-set-charset--skip-triggers--skip-tz-utc--socket=path--ssl--ssl-ca=file_name--ssl-capath=dir_name--ssl-cert=file_name--ssl-cipher=cipher_list--ssl-crl=file_name--ssl-crlpath=dir_name--ssl-key=file_name--ssl-verify-server-cert--tab=path--tables--triggers--tz-utc--user=user_name--verbose--version--where=‘where_condition‘--xml
在每个 CREATE DATABASE 声明前加上DROP DATABASE 声明

在每个 CREATE TABLE  声明前加上DROP TABLE 声明

在每个 CREATE TRIGGER  声明前加上DROP TRIGGER 声明

在备份时所表

备份所有数据库里的所有表

将表名作为列名的前缀

将STOP SLAVE放在CHANGE MASTER声明前,并将START SLAVE放在结尾

同mysql命令

增加注释到备份文件

生成更加紧凑的输出

生成更加兼容的格式

使用完整的 INSERT 声明

在CREATE TABLE声明里包含所有的MySQL指定选项

备份指定的数据库

写debug日志

同mysql命令

同mysql命令

同mysql命令

同mysql命令

同mysql命令

同mysql命令

同mysql命令

在执行dump操作后删除master节点的binlog

对于每一个表的INSERT声明前加上/*!40000 ALTER TABLE tbl_name DISABLE KEYS */; 和/*!40000 ALTER TABLE tbl_name ENABLE KEYS */,这样可以更快的载入dump文件,但仅仅对具有非唯一索引的MyISAM表有效。

包含dump时间

在开始导出前刷新MYSQL server日志文件

在导出后刷新权限

同mysql命令

使用16进制导出二进制列

同mysql命令

跳过指定的错误5.7.1
不导出指定的表

写INSERT IGNORE 声明,而不是 INSERT 声明

锁所有的数据库表

导出前锁数据库内的表

追加错误日志到指定文件

同mysql命令

同mysql命令

同mysql命令

添加 SET autocommit = 0 和COMMIT 声明在每个  INSERT 声明前

不创建 CREATE DATABASE 声明

不导出表的数据

同mysql命令

不设置字符集

不写任何 CREATE LOGFILE GROUP 或 CREATE TABLESPACE 声明

--add-drop-table --add-locks --create-options --disable-keys --extended-insert --lock-tables --quick --set-charset的缩写

按逐渐或唯一索引排序导出数据行

同mysql命令

同mysql命令

同mysql命令

同mysql命令

一次检索一行,而不分析每行的内容

添加引用标识

用 REPLACE 声明代替 INSERT 声明

输出文件到指定位置

同mysql命令5.7.45.7.5
设置字符集

增加 SET @@GLOBAL.GTID_PURGED 

同mysql命令

在导出前写 BEGIN SQL 声明

add-drop-table 反向操作

add-locks 反向操作

comments 反向操作

compact 反向操作

disable-keys 反向操作

extended-insert 反向操作

关闭 --opt 选项

quick 反向操作

quote-names 反向操作

不设置字符集

不导出触发器

关闭 tz-utc 选项

同mysql命令

同mysql命令

同mysql命令

同mysql命令

同mysql命令

同mysql命令

同mysql命令

同mysql命令

同mysql命令

同mysql命令

生成一个用tab隔开的数据文件。

覆盖 --databases 选项

导出触发器

针对列中的TIMESTAMP字段,增加SET TIME_ZONE=‘+00:00‘到导出文件中

同mysql命令

同mysql命令

同mysql命令

导出符合where条件的行

生成XML输出

mysqldump的操作很简单,用的最多的就是/usr/local/mysql/bin/mysqldump test --skip-comments --opt > backup.sql --opt这个选项,使用--opt这个选项代表同时使用了

--add-drop-table 在create前先drop

--add-locks 导出前加lock table,完成后加unlock table

--create-options 包含所有create语句声明选项

--disable-keys 使键约束失效

--extended-insert 使用多行插入语句

--lock-tables 对表加读锁

--quick 一次检索一行

--set-charset 设置字符集

使用这个设置可以保证数据的完整性,在效率上也有一定保证。


六、mysqlimport工具的使用,mysqlimport为数据导入操作,能将文本数据导入到数据库内。

    语法如下:

    shell> mysqlimport [options] db_name textfile1 [textfile2 ...]


    注意:它并不是针对mysqldump的,而是针对文本数据文件的。

    下面举个例子:

    首先在test库里创建表:

    shell> mysql -e ‘CREATE TABLE imptest(id INT, n VARCHAR(30))‘ test

    然后创建文本 data.txt,文本内容为


    100[tab]Max Sydow[回车]

    101[tab]Count Dracula

    然后调用mysqlimport

    shell> mysqlimport --user=root --host=127.0.0.1 test imptest.txt

    注意:数据文件名应与表名一致。

    操作完成后,imptest表里会有两行数据,数据内容为刚才data.txt内的内容。

本文出自 “” 博客,请务必保留此出处

热门排行

今日推荐

热门手游