细聊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内的内容。

时间: 2024-12-11 11:58:33

细聊MySQL之常用工具及基本操作(二)的相关文章

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

细聊MySQL之常用工具及基本操作(一) 细聊MySQL之常用工具及基本操作(二) 七.使用mysqlshow工具查看数据库.表和列的信息.具体语法: shell> mysqlshow [options] [db_name [tbl_name [col_name]]] 注:如果没有数据库给定,列出数据库列表 如果没有表给定,列出所有数据库的表 如果没有列给定,列出表内所有的列 详细参数如下: 参数 描述 适用 弃用 --bind-address=ip_address 同mysql命令 --com

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

一.对于MySQL用户来说,使用MySQL的第一步就是启动它.要启动MySQL,我们需要mysqld或mysqld_safe命令.默认情况下,直接执行mysqld或mysqld_safe即可.如 shell> mysqld & 或 shell> mysqld_safe &.当然不是所有事情都那么顺利,如果启动不了,请指定相关的参数.服务器运行的前提是你已经执行了mysql_install_db脚本.当然,如果就这样启动,将有很多功能启动不了.如没有binlog,当某一天你不小心

细聊MySQL的Innodb存储引擎(二)

细聊MySQL的Innodb存储引擎(一) 上一篇主要和大家探讨了下Innodb的锁机制与隔离机制.本篇来和大家一起研究下在使用Innodb是会出现的问题以及如何解决它们. Innodb是如何解决幻读问题的 什么是幻读?听起来似乎很高端,但实际上它只是反映了事务中的一种数据不一致的情况.下面看我来描述这样一个场景,通过这个场景,大家就能很清楚的知道幻读到底是什么意思. 打开两个客户端,设为A和B A客户端 mysql> start transaction; (步骤一) Query OK, 0 r

细聊MySQL的Innodb存储引擎(完)

细聊MySQL的Innodb存储引擎(一) 细聊MySQL的Innodb存储引擎(二) 细聊MySQL的Innodb存储引擎(完) 上篇主要和大家探讨了Innodb引擎中出现幻读的处理方法与死锁的探测及避免死锁的一些注意事项.此篇,我们来研究下Innodb的索引. Innodb里涉及到的索引主要有四种,分别为聚簇索引(Clustered Index).次级索引(Secondary Index).全文索引(FULLTEXT Index).哈希索引(Hash Index). 聚簇索引与次级索引 每一

细聊MySQL的备份与恢复

备份对于数据库来说是相当重要的工作.如果数据库在使用过程中出现了问题,比如系统崩溃.硬件故障或错误的删除了数据.这时,如果我们进行了数据备份,就能比较方便的使数据库恢复工作,并使我们的数据损失到最小.下面,我从备份类型.备份方法及一些常用的例子来和大家详细探讨下数据库的备份与恢复. 一.备份类别 1.物理备份与逻辑备份 物理备份用人话来形容就是复制数据库的数据文件.如果我们需要备份名为test的数据库,则我们可以将数据目录下的test目录复制到备份设备中.如果我们需要备份test库下名为user

细聊MySQL的分区功能

此篇主要介绍下MySQL的分区功能.我们分别从分区的概念.分区对于MySQL应用的优点.分区的类别及设置来和大家一起探讨下MySQL的分区. 什么是分区? MySQL在未启用分区功能时,数据库的单个表内容是以单个文件的形式存放在文件系统上的.当启用分区功能后,MySQL将按用户指定的规则将单个表内容分割成几个文件存放在文件系统上.分区分为水平分区和垂直分区,水平分区是将表的数据按行分割成不同的数据文件,而垂直分区则是将表的数据按列分割成不同的数据文件.分片要遵循完备性原则.可重构性原则与不相交原

细聊MySQL的安全机制

MySQL作为系统的数据库,在安全性方面有非常高的要求.如果一个系统的数据库被非法进入或窃听,则系统的数据将受到非常严重的威胁,轻则数据.密码被盗,重则导致整个系统瘫痪.所以数据库的安全对于系统来说是非常重要的. 本文将从MySQL的服务器启动与客户端访问.操作及链路三方面来阐述MySQL的安全机制. 一.MySQL的服务器启动与客户端访问.        1.服务器启动,启动服务器在安全方面的影响主要是启动它的用户.默认情况下,MySQL不允许使用root账号启动.我们应该建立一个只能操作My

细聊MySQL的Innodb存储引擎(一)

从MySQL5.5开始,Innodb就成为MySQL的默认存储引擎了.可想而知,Innodb已经成为MySQL的主要生产方式.那Innodb到底有什么本事能够击败其它几位存储引擎而荣登宝座呢?下面,我就来和大家一起探讨探讨牛逼的Innodb引擎.Innodb涉及到的知识点比较多,所以我会分几篇来叙述,此篇主要介绍Innodb的基本概念和架构. 要了解Innodb,首先需要了解MySQL的ACID模型.何为ACID?ACID指的是事务的原子性(A).一致性(C).隔离性(I).持久性(D). 原子

细聊MySQL之基本安装与启动

由于MySQL的生产环境通常会部署在Linux上,所以这里只说下Linux上的安装与启动. 一.版本识别 MYSQL的版本说明:如mysql-5.7.1-m1 第一个数字5代表主版本号和描述文件格式.所有的MYSQL 5发布版本有一样的文件格式. 第二个数字7代表发布等级.主版本号5和发布登记合起来组成发布序列号. 第三个号码1代表发布次数.每次有新的发布,发布次数号增加1. m+数字代表一个里程碑号,MYSQL开发使用一个里程碑模型管理. rc代表一个发布候选.发布候选版本通常是稳定的.通过了