MySQL金典培训教程:14附录二.doc_第1页
MySQL金典培训教程:14附录二.doc_第2页
MySQL金典培训教程:14附录二.doc_第3页
MySQL金典培训教程:14附录二.doc_第4页
MySQL金典培训教程:14附录二.doc_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

附录二MySQL实用程序 各种MySQL程序概述 mysqladmin mysqldump mysqlimport myisampack myisamchk2.1 各种MySQL程序概述所有使用mysqlclient客户库与服务器通信的MySQL客户使用下列环境变量:表2-1 MySQL客户程序使用的变量名字说明MYSQL_UNIX_PORT缺省套接字;用于连接localhostMYSQL_TCP_PORT缺省MYSQL_PWD缺省口令MYSQL_DEBUG调试时调试-踪迹选项TMPDIR临时表/文件被创建的目录使用MYSQL_PWD是不安全的。“mysql”客户使用MYSQL_HISTFILE环境变量中命名的文件来保存命令行历史,历史文件的缺省值是“$HOME/.mysql_history”,这里$HOME是HOME环境变量的值。 所有MySQL程序取许多不同的选项,然而,每个MySQL程序提供一个-help选项,你可以使用它得到程序不同选项的完整描述。例如,试一试mysql -help。 你能用一个选项文件覆盖所有的标准客户程序的缺省选项。下表简单地描述MySQL程序: myisamchk 描述、检查、优化和修复MySQL表的使用程序。make_binary_release 制作一个编译MySQL的一个二进制的版本。这能用FTP传送到在ftp.tcx.se网站的“/pub/mysql/Incoming”以方便其它MySQL用户。 msql2mysql 一个外壳脚本,转换mSQL程序到MySQL。它不能处理所有的情况,但是当转换时,它给出一个好起点。 mysql mysql是一个简单的SQL外壳(具有GNU readline 能力),它支持交互式和非交互式使用。当交互地使用时,查询结果以ASCII表的格式被表示。当非交互地使用时(例如,作为一个过滤器),结果是以定位符分隔的格式表示。(输出格式可以使用命令行选项改变)你可以简单地象这样运行脚本: shell mysql database output.tab如果你在客户中由于内存不足造成问题,使用-quick选项!这迫使mysql使用mysql_use_result()而非mysql_store_result()来检索结果集合。 mysqlaccess 一个脚本,检查对主机、用户和数据库组合的存取权限。 mysqladmin 执行管理操作的实用程序,例如创建或抛弃数据库,再装载授权表,清洗表到磁盘中和再打开日志文件。mysqladmin也可以被用来从服务器检索版本,进程和状态信息。mysqlbug MySQL错误报告脚本。当填写一份错误报告到MySQL邮件列表时,应该总是使用该脚本。 mysqld SQL守护进程。它应该一直在运行。 mysqldump 以SQL语句或定位符分隔的文本文件将一个MySQL数据库倾倒一个文件中。这是最早由Igor Romanenko编写的自由软件的增强版本。mysqlimport 使用LOAD DATA INFILE将文本文件倒入其各自的表中。mysqlshow 显示数据库,表,列和索引的信息。 mysql_install_db 以缺省权限创建MySQL授权表。这通常仅被执行一次。就是在系统上第一次安装MySQL时。 replace 一个实用程序,由msql2mysql使用,但是有更一般的适用性。replace改变文件中或标准输入上的字符串。使用一台有限状态机首先匹配更长的字符串,能被用来交换字符串。例如,这个命令在给定的文件中交换a和b: shell replace a b b a - file1 file2 .safe_mysqld 一个脚本,用某些更安全的特征启动mysqld守护进程,例如当一个错误发生时,重启服务器并且记载运行时刻信息到一个日志文件中。2.2 mysqladmin用于执行管理性操作。语法是: shell mysqladmin OPTIONS command command-option command .通过执行mysqladmin -help,你可以得到你mysqladmin的版本所支持的一个选项列表。 目前mysqladmin支持下列命令: create databasename 创建一个新数据库 drop databasename 删除一个数据库及其所有表 extended-status 给出服务器的一个扩展状态消息 flush-hosts 洗掉所有缓存的主机 flush-logs 洗掉所有日志 flush-tables 洗掉所有表 flush-privileges 再次装载授权表(同reload) kill id,id,. 杀死mysql线程 password 新口令,将老口令改为新口令 ping 检查mysqld是否活着 processlist 显示服务其中活跃线程列表 reload 重载授权表 refresh 洗掉所有表并关闭和打开日志文件 shutdown 关掉服务器 status 给出服务器的简短状态消息 variables 打印出可用变量 version 得到服务器的版本信息所有命令可以被缩短为其唯一的前缀。例如: shell mysqladmin proc stat+-+-+-+-+-+-+-+-+| Id | User | Host | db | Command | Time | State | Info |+-+-+-+-+-+-+-+-+| 6 | monty | localhost | | Processlist | 0 | | |+-+-+-+-+-+-+-+-+Uptime: 10077 Threads: 1 Questions: 9 Slow queries: 0 Opens: 6 Flush tables: 1 Open tables: 2 Memory in use: 1092K Max memory used: 1116K2.3 mysqldump实用程序,为备份或为把数据转移到另外的SQL服务器上倾倒一个数据库或许多数据库。倾倒将包含 创建表或充实表的SQL语句。 shell mysqldump OPTIONS database tables如果你不给定任何表,整个数据库将被倾倒。 通过执行mysqldump -help,你能得到你mysqldump的版本支持的选项表。 注意,如果你运行mysqldump没有-quick或-opt选项,mysqldump将在倾倒结果前装载整个结果集到内存中,如果你正在倾倒一个大的数据库,这将可能是一个问题。 mysqldump支持下列选项: -add-locks 在每个表倾倒之前增加LOCK TABLES并且之后UNLOCK TABLE。(为了使得更快地插入到MySQL)。 -add-drop-table 在每个create语句之前增加一个drop table。 -allow-keywords 允许创建是关键词的列名字。这由表名前缀于每个列名做到。 -c, -complete-insert 使用完整的insert语句(用列名字)。 -C, -compress 如果客户和服务器均支持压缩,压缩两者间所有的信息。 -delayed 用INSERT DELAYED命令插入行。 -e, -extended-insert 使用全新多行INSERT语法。(给出更紧缩并且更快的插入语句) -#, -debug=option_string 跟踪程序的使用(为了调试)。 -help 显示一条帮助消息并且退出。 -fields-terminated-by=. -fields-enclosed-by=. -fields-optionally-enclosed-by=. -fields-escaped-by=. -fields-terminated-by=. 这些选择与-T选择一起使用,并且有相应的LOAD DATA INFILE子句相同的含义。见附录1.16 LOAD DATA INFILE语法。 -F, -flush-logs 在开始倾倒前,洗掉在MySQL服务器中的日志文件。 -f, -force, 即使我们在一个表倾倒期间得到一个SQL错误,继续。 -h, -host=. 从命名的主机上的MySQL服务器倾倒数据。缺省主机是localhost。 -l, -lock-tables. 为开始倾倒锁定所有表。 -t, -no-create-info 不写入表创建信息(CREATE TABLE语句) -d, -no-data 不写入表的任何行信息。如果你只想得到一个表的结构的倾倒,这是很有用的! -opt 同-quick -add-drop-table -add-locks -extended-insert -lock-tables。应该给你为读入一个MySQL服务器的尽可能最快的倾倒。 -pyour_pass, -password=your_pass 与服务器连接时使用的口令。如果你不指定“=your_pass”部分,mysqldump需要来自终端的口令。 -P port_num, -port=port_num 与一台主机连接时使用的TCP/IP端口号。(这用于连接到localhost以外的主机,因为它使用 Unix套接字。) -q, -quick 不缓冲查询,直接倾倒至stdout;使用mysql_use_result()做它。 -S /path/to/socket, -socket=/path/to/socket 与localhost连接时(它是缺省主机)使用的套接字文件。 -T, -tab=path-to-some-directory 对于每个给定的表,创建一个table_name.sql文件,它包含SQL CREATE 命令,和一个table_name.txt文件,它包含数据。 注意:这只有在mysqldump运行在mysqld守护进程运行的同一台机器上的时候才工作。.txt文件的格式根据-fields-xxx和-lines-xxx选项来定。 -u user_name, -user=user_name 与服务器连接时,MySQL使用的用户名。缺省值是你的Unix登录名。 -O var=option, -set-variable var=option 设置一个变量的值。可能的变量被列在下面。 -v, -verbose 冗长模式。打印出程序所做的更多的信息。 -V, -version 打印版本信息并且退出。 -w, -where=where-condition 只倾倒被选择了的记录;注意引号是强制的! -where=user=jimf -wuserid1 -wuserid backup-file.sql 但是它对用来自于一个数据库的信息充实另外一个MySQL数据库也是有用的: mysqldump -opt database | mysql -host=remote-host -C database2.4 mysqlimportmysqlimport提供一个到LOAD DATA INFILESQL语句的命令行接口。mysqlimport的大多数选项直接对应于LOAD DATA INFILE的相同选项。见附录1.16 LOAD DATA INFILE语法。 mysqlimport象这样调用: shell mysqlimport options filename .对于在命令行上命名的每个文本文件,mysqlimport剥去文件名的扩展名并且使用它决定哪个表导入文件的内容。例如,名为“patient.txt”、“patient.text”和“patient”将全部被导入名为patient的一个表中。 mysqlimport支持下列选项: -C, -compress 如果客户和服务器均支持压缩,压缩两者之间的所有信息。 -#, -debug=option_string 跟踪程序的使用(为调试)。 -d, -delete 在导入文本文件前倒空表格。 -fields-terminated-by=. -fields-enclosed-by=. -fields-optionally-enclosed-by=. -fields-escaped-by=. -fields-terminated-by=. 这些选项与对应于LOAD DATA INFILE的子句相同的含义。见7.16 LOAD DATA INFILE语法。 -f, -force 忽略错误。例如,如果对于一个文本文件的一个表不存在,继续处理任何余下的文件。没有-force,如果表不存在,mysqlimport退出。 -help 显示一条帮助消息并且退出。 -h host_name, -host=host_name 导入数据到命名的主机上的MySQL服务器。缺省主机是localhost。 -i, -ignore 见为-replace选项的描述。 -l, -lock-tables 在处理任何文本文件前为写入所定所有的表。这保证所有的表在服务器上被同步。 -L, -local 从客户读取输入文件。缺省地,如果你连接localhost(它是缺省主机),文本文件被假定在服务器上。 -pyour_pass, -password=your_pass 与服务器连接时使用的口令。如果你不指定“=your_pass”部分,mysqlimport要求来自终端的口令。 -P port_num, -port=port_num 与一台主机连接时使用的TCP/IP端口号。(这被用于连接到除localhost以外的主机,因为它使用Unix套接字。) -r, -replace -replace和-ignore选项控制对输入在唯一键值上有重复的现有记录的输入处理。如果你指定-replace,新行将代替有相同唯一键的存在的行。如果你指定-ignore,跳过输入在唯一键值上有重复的现有记录。如果你不指定任何一个选项,当找到一个重复的键值,出现一个错误,并且文本文件余下部分被忽略。 -s, -silent 安静模式。只有在错误发生时,写出输出。 -S /path/to/socket, -socket=/path/to/socket 与localhost(它是缺省主机)连接时使用的套接字文件。 -u user_name, -user=user_name MySQL使用的用户名字当与服务者联接时。缺省价值是你的 Unix 登录名字。 -v, -verbose 冗长模式。打印程序所做的更多信息。 -V, -version 打印版本信息并且退出。2.5 myisampackmyisampack被用来压缩MyISAM表,而pack_isam被用来压缩ISAM表。由于ISAM表被淘汰,这里我们将只讨论myisampack。 myisampack是当你订购超过10个许可证或扩展的支持时,你得到的一个额外的实用程序。因为这些仅以二进制形式被分发,他们仅在某些平台上可用。 下面我们仅谈论myisampack, 但是每件事情对pack_isam也是持有的。 myisampack通过单独压缩表中的每个列来工作。当表被打开时,需要加压缩的信息被读进内存,这使得在存取单个记录时能得到更好的性能,因为你只需要解压缩一个记录,不是更大的磁盘块,象在 MSDOS上使用Stacker时一样。通常,myisampack压缩数据文件40%-70%。 MySQL使用内存映射(mmap()在压缩表上而如果mmap()的使用不工作,倒回到正常的读/写文件。 当前myisampack有2个限制: 在压缩后,表只能读。 myisampack也能压缩BLOB或TEXT列。较老的pack_isam不能做到。 修正这些限制以在我们的TODO表上,但是具有低优先级。 myisampack象这样调用: shell myisampack options filename .每个文件名应该是一个索引(“.MYI”) 文件名。如果你不在数据库目录下,你应该指定文件的路径名。允许省略“.MYI”扩展名。 myisampack支持下列选项: -b, -backup 制作表的一个备份,为tbl_name.OLD。 -#, -debug=debug_options 输出调试日志。debug_options串经常是d:t:o,filename。 -f, -force 即使它变得更大或如果临时文件存在,强制表的压缩。(myisampack在压缩表时创建一个名位“tbl_name.TMD”的临时文件。如果你杀死myisampack,“.TMD”文件不能被删除。通常,如果myisampack发现“tbl_name.TMD”存在,它以一个错误退出。用-force,myisampack不管怎样都压缩表。 -?, -help 显示一条帮助消息并且退出。 -j big_tbl_name, -join=big_tbl_name 联结所有在命令行上被命名的表到一个单独的表big_tbl_name中。所有要被合并的表必须是相同的(同样的列名字和类型,同样的索引,等等。) -p #, -packlength=# 指定记录长度存储尺寸,按字节。值应该是1、2或3。(myisampack用1、2或3字节的长度指针存储所有行。在最一般的情况下,myisampack在它开始包装文件以前,能确定正确的长度值,但是它可能注意到在包装过程期间,它能使用了更短的长度。在这种情况下,myisampack在下一次你包装同样文件时间打印出一条提示,你可以使用更短的记录长度。) -s, -silent 安静模式。只有当错误发生时,写出输出。 -t, -test 不压缩表,仅仅测试压缩它。 -T dir_name, -tmp_dir=dir_name 使用命名的目录作为写入临时表的位置。 -v, -verbose 冗长模式。写出有关进展和包装结果的信息。 -V, -version 显示版本信息和出口。 -w, -wait 如果表正在使用,等待并且再试。如果mysqld服务器以-skip-locking选项被调用,如果表可能在包装过程中被更新,调用myisampack不是一个好主意。 下面显示的命令顺序说明了一个典型的表压缩表压缩过程: shell ls -l station.*-rw-rw-r- 1 monty my 994128 Apr 17 19:00 station.MYD-rw-rw-r- 1 monty my 53248 Apr 17 19:00 station.MYI-rw-rw-r- 1 monty my 5767 Apr 17 19:00 station.frmshell myisamchk -dvv stationshell ls -l station.*-rw-rw-r- 1 monty my 127874 Apr 17 19:00 station.MYD-rw-rw-r- 1 monty my 55296 Apr 17 19:04 station.MYI-rw-rw-r- 1 monty my 5767 Apr 17 19:00 station.frmshell myisamchk -dvv station(某些过长的输出已经省略)由myisampack打印的信息在下面描述: normal 不是用额外压缩的列数。 empty-space 仅包含空格值的列数;这些将占据1位。 empty-zero 只包含二进制0值的列数;这些将占据1位。 empty-fill 不占据其类型全部字节范围的整形列数;这些被改变为一种更小的类型(例如,一个INTEGER列可以被改变为MEDIUMINT)。 pre-space 用前导空间存储的小数的列数。在这种情况下,每个值将包含一个前导空格的数量的计数。 end-space 有很多拖后空格的列数。在这种情况下,每个值将包含一个拖后空格的数量的计数。 table-lookup 列只有少数不同的值,并且它在哈夫曼压缩前被变换一个ENUM。 zero 所有值为零的列数。 Original trees 哈夫曼树的初始数目。 After join 在联结哈夫曼树以节省一些表头空间后余下的不同树的数量。 在一张表被压缩以后,myisamchk -dvv打印出每个字段的额外信息: Type 字段类型可以包含下列描述符: constant 所有行有相同的值。 no endspace 不存储尾空格。 no endspace, not_always 不存储尾空格而且不对所有值做尾空格压缩。 no endspace, no empty 不存储尾空格。不存储空值。 table-lookup 列被变换到一个ENUM。 zerofill(n) 值中最高n位总是0并且不被存储。 no zeros 不存储零。 always zero 0值以1位被存储。 Huff tree 与字段相关的哈夫曼树 Bits 在哈夫曼树里使用的位数。2.6 myisamchkmyisamchk这样调用:shell myisamchk options tbl_nameoptions指定你想要myisamchk做什么。他们在下面描述。(你也可以通过调用myisamchk -help得到一张选项表。) 没有选项,myisamchk简单地检查你的表。为了得到更多的信息或告诉myisamchk执行校正操作,指定在下面和下小节描述的选项择。tbl_name是你想要检查的数据库表。如果你不在数据库目录的某处运行myisamchk,你必须指定到文件的路径,因为myisamchk不知道你的数据库位于哪儿。实际上,myisamchk别在乎你正在操作的文件是否位于一个数据库目录;你可以拷贝对应于一张数据库表的文件到别处并且在那里执行恢复操作。 如果你愿意,你可以myisamchk命令行命名几个表。你也能指定一个名字作为一个索引文件(用“ .MYI”后缀),它允许你通过使用模式“*.MYI”指定在一个目录所有的表。例如,如果你在一个数据库目录,你可以这样在目录下检查所有的表:shell myisamchk *.MYI 如果你不在数据库目录下,你可通过指定到目录的路径检查所有在那里的表: shell myisamchk /path/to/database_dir/*.MYI 你甚至可以通过为MySQL数据目录的路径指定一个通配符来检查所有的数据库中的所有表:shell myisamchk /path/to/datadir/*/*.MYImyisamchk支持下列选项: -a, -analyze 分析键值的分布。这通过让联结优化器更好地选择表应该以什么次序联结和应该使用哪个键来改进联结性能。 -#, -debug=debug_options 输出调试记录文件。debug_options字符串经常是d:t:o,filename。 -d, -description 打印出关于表的一些信息。 -e, -extend-check 非常彻底地检查表。这仅在极端情况下是必要的。通常,myisamchk应该找出所有错误,即使没有改选项。 -f, -force 覆盖老的临时文件。如果你在检查表时使用-f (运行myisamchk没有-r),myisamchk在检查期间将自动为出现一个错误的表用-r重启。 -h

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论