首页 > 代码库 > 细聊MySQL之常用工具及基本操作(二)
细聊MySQL之常用工具及基本操作(二)
接细聊MySQL之常用工具及基本操作(一)
四、客户端管理工具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-defaults | Read 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 | 在每个 CREATE DATABASE 声明前加上DROP DATABASE 声明 | ||
--add-drop-table | 在每个 CREATE TABLE 声明前加上DROP TABLE 声明 | ||
--add-drop-trigger | 在每个 CREATE TRIGGER 声明前加上DROP TRIGGER 声明 | ||
--add-locks | 在备份时所表 | ||
--all-databases | 备份所有数据库里的所有表 | ||
--allow-keywords | 将表名作为列名的前缀 | ||
--apply-slave-statements | 将STOP SLAVE放在CHANGE MASTER声明前,并将START SLAVE放在结尾 | ||
--bind-address=ip_address | 同mysql命令 | ||
--comments | 增加注释到备份文件 | ||
--compact | 生成更加紧凑的输出 | ||
--compatible=name[,name,...] | 生成更加兼容的格式 | ||
--complete-insert | 使用完整的 INSERT 声明 | ||
--create-options | 在CREATE TABLE声明里包含所有的MySQL指定选项 | ||
--databases | 备份指定的数据库 | ||
--debug[=debug_options] | 写debug日志 | ||
--debug-check | 同mysql命令 | ||
--debug-info | 同mysql命令 | ||
--default-auth=plugin | 同mysql命令 | ||
--default-character-set=charset_name | 同mysql命令 | ||
--defaults-extra-file=file_name | 同mysql命令 | ||
--defaults-file=file_name | 同mysql命令 | ||
--defaults-group-suffix=str | 同mysql命令 | ||
--delete-master-logs | 在执行dump操作后删除master节点的binlog | ||
--disable-keys | 对于每一个表的INSERT声明前加上/*!40000 ALTER TABLE tbl_name DISABLE KEYS */; 和/*!40000 ALTER TABLE tbl_name ENABLE KEYS */,这样可以更快的载入dump文件,但仅仅对具有非唯一索引的MyISAM表有效。 | ||
--dump-date | 包含dump时间 | ||
--flush-logs | 在开始导出前刷新MYSQL server日志文件 | ||
--flush-privileges | 在导出后刷新权限 | ||
--help | 同mysql命令 | ||
--hex-blob | 使用16进制导出二进制列 | ||
--host | 同mysql命令 | ||
--ignore-error=error[,error]... | 跳过指定的错误 | 5.7.1 | |
--ignore-table=db_name.tbl_name | 不导出指定的表 | ||
--insert-ignore | 写INSERT IGNORE 声明,而不是 INSERT 声明 | ||
--lock-all-tables | 锁所有的数据库表 | ||
--lock-tables | 导出前锁数据库内的表 | ||
--log-error=file_name | 追加错误日志到指定文件 | ||
--login-path=name | 同mysql命令 | ||
--max_allowed_packet=value | 同mysql命令 | ||
--net_buffer_length=value | 同mysql命令 | ||
--no-autocommit | 添加 SET autocommit = 0 和COMMIT 声明在每个 INSERT 声明前 | ||
--no-create-db | 不创建 CREATE DATABASE 声明 | ||
--no-data | 不导出表的数据 | ||
--no-defaults | 同mysql命令 | ||
--no-set-names | 不设置字符集 | ||
--no-tablespaces | 不写任何 CREATE LOGFILE GROUP 或 CREATE TABLESPACE 声明 | ||
--opt | --add-drop-table --add-locks --create-options --disable-keys --extended-insert --lock-tables --quick --set-charset的缩写 | ||
--order-by-primary | 按逐渐或唯一索引排序导出数据行 | ||
--password[=password] | 同mysql命令 | ||
--port=port_num | 同mysql命令 | ||
--print-defaults | 同mysql命令 | ||
--protocol=type | 同mysql命令 | ||
--quick | 一次检索一行,而不分析每行的内容 | ||
--quote-names | 添加引用标识 | ||
--replace | 用 REPLACE 声明代替 INSERT 声明 | ||
--result-file=file | 输出文件到指定位置 | ||
--secure-auth | 同mysql命令 | 5.7.4 | 5.7.5 |
--set-charset | 设置字符集 | ||
--set-gtid-purged=value | 增加 SET @@GLOBAL.GTID_PURGED | ||
--shared-memory-base-name=name | 同mysql命令 | ||
--single-transaction | 在导出前写 BEGIN SQL 声明 | ||
--skip-add-drop-table | add-drop-table 反向操作 | ||
--skip-add-locks | add-locks 反向操作 | ||
--skip-comments | comments 反向操作 | ||
--skip-compact | compact 反向操作 | ||
--skip-disable-keys | disable-keys 反向操作 | ||
--skip-extended-insert | extended-insert 反向操作 | ||
--skip-opt | 关闭 --opt 选项 | ||
--skip-quick | quick 反向操作 | ||
--skip-quote-names | quote-names 反向操作 | ||
--skip-set-charset | 不设置字符集 | ||
--skip-triggers | 不导出触发器 | ||
--skip-tz-utc | 关闭 tz-utc 选项 | ||
--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命令 | ||
--tab=path | 生成一个用tab隔开的数据文件。 | ||
--tables | 覆盖 --databases 选项 | ||
--triggers | 导出触发器 | ||
--tz-utc | 针对列中的TIMESTAMP字段,增加SET TIME_ZONE=‘+00:00‘到导出文件中 | ||
--user=user_name | 同mysql命令 | ||
--verbose | 同mysql命令 | ||
--version | 同mysql命令 | ||
--where=‘where_condition‘ | 导出符合where条件的行 | ||
--xml | 生成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内的内容。
本文出自 “架构师之路” 博客,请务必保留此出处http://wangweiak47.blog.51cto.com/2337362/1586307
细聊MySQL之常用工具及基本操作(二)