[MySQL Reference Manual] 4 MYSQL Program

时间:2024-08-22 23:36:38

4 MYSQL Program

目录

4 MYSQL Program.. 1

4.3 MySQL Server和Server启动程序... 1

4.3.1 mysqld. 1

4.3.2 mysqld_safe. 1

4.3.3 mysql.server. 1

4.3.4 mysqld_multi1

4.4 MySQL安装相关Program.. 2

4.4.1 comp_err. 2

4.4.2 mysqlbug. 2

4.4.3 mysql_install_db. 2

4.4.4 mysql_plugin. 2

4.4.5 mysql_secure_installation. 3

4.4.6 mysql_tzinfo_to_sql3

4.4.7 mysql_upgrade. 3

4.5 MySQL客户端程序... 4

4.5.1 mysql4

4.5.2 mysqladmin. 4

4.5.3 mysqlcheck. 4

4.5.4 mysqldump. 5

4.5.5 mysqlimport. 5

4.5.6 mysqlshow.. 5

4.5.7 mysqlslap. 6

4.6 MySQL管理和效率Programs. 6

4.6.1 innochecksum.. 6

4.6.2 myisam_ftdump. 6

4.6.3 myisamchk. 7

4.6.4 myisamlog. 7

4.6.5 myisampack. 7

4.6.6 mysql_config_editor. 7

4.6.7 mysqlaccess. 8

4.6.8 mysqlbinlog. 8

4.6.9 mysqldumpslow.. 9

4.6.10 mysqlhotcopy. 9

4.6.11 mysql_convert_table_format. 9

4.6.12 mysql_find_rows. 9

4.6.13 mysql_fix_extensions. 10

4.6.14 mysql_setpermission. 10

4.6.15 mysql_waitpid. 10

4.6.16 mysql_zap. 10

4.7 Mysql开发工具... 10

4.8 其他program.. 10

4.3 MySQL Server和Server启动程序

4.3.1 mysqld

mysqld是mysql的服务程序,监听端口,通过系统变量和配置参数来影响mysqld的行为

4.3.2 mysqld_safe

mysqld_safe是在unix服务器上推荐的启动方法,mysqld_safe启动mysqld程序并且覆盖默认的行为和显示的指定启动什么服务。mysql_safe会读取配置文件为[mysqld],[server],[msqld_safe]里面的配置信息。

具体的mysqld_safe参数信息请看:

http://dev.mysql.com/doc/refman/5.6/en/mysqld-safe.html

另:在centos 用yum安装的mariadb,如果配置了配置文件,用service mysql start的时候有个坑,会无线的点(.)下去。

这个情况在这里有详细的描述:

http://www.oschina.net/question/1261643_149788?sort=time

4.3.3 mysql.server

mysql.server用于mac os x对于unix like 的系统基本不用。详细看:

http://dev.mysql.com/doc/refman/5.6/en/mysql-server.html

4.3.4 mysqld_multi

mysqld_multi用来管理多个mysqld进程的。可以启动关闭服务,或者报告当前状态。mysqld_multi会读取配置文件中[mysqldN],N是正数。

启动[mysqld7]:

shell> mysqld_multi start 17

关闭[mysqld8],[mysqld10]到[mysqld13]:

shell> mysqld_multi stop 8,10-13

具体mysqld_multi的参数可以看:

http://dev.mysql.com/doc/refman/5.6/en/mysqld-multi.html

使用mysqld_multi要注意点:

1.在使用前要知道传递给mysqld的各个参数的意思,并注意不同的mysqld使用同一个数据文件夹可能带来的问题。

2.保证启动mysqld用户可以访问数据库文件夹

3.保证有相同的MYSQL账号来关闭mysqld并且有SHOUTDOWN权限。

4.每个socket文件和端口都不一样

5.每个mysqld都要有自己的pid文件

6.如果不是以root启动会有告警

配置文件的例子和详细信息可以看:

http://dev.mysql.com/doc/refman/5.6/en/mysqld-multi.html

4.4 MySQL安装相关Program

4.4.1 comp_err

comp_err编译错误信息文件,comp_err在编译产生errmsg.sys用于mysqld确定错误的显示。同时comp_err也会产生mysqld_error.h,mysqld_ername.h,sql_state.h。

详细信息和参数:

http://dev.mysql.com/doc/refman/5.6/en/comp-err.html

4.4.2 mysqlbug

将会在mysql5.7被干掉,一般报告bug的方法是http://bugs.mysql.com/

4.4.3 mysql_install_db

mysql_install_db初始化MySQL数据文件夹和创建系统数据,也会创建以my-default.cnf为模板创建配置文件my.cnf如果my.cnf存在会创建my-new.cnf(mysql 5.6.19测试后发现会在/usr/下生产配置文件,但是mariadb不会生成配置文件)。

调用方法:

shell> scripts/mysql_install_db --user=mysql \

--basedir=/opt/mysql/mysql \

--datadir=/opt/mysql/mysql/data

如果要修改innodb的一些设置,那么就可以现在my.cnf上面先设置比如innodb_data_file_path 和innodb_log_file_size

mysql_install_db参数和详细信息:

http://dev.mysql.com/doc/refman/5.6/en/mysql-install-db.html

4.4.4 mysql_plugin

mysql_plugin可以让mysql管理启动哪些插件要被mysql加载,mysql.plugin表决定了通过mysql_plugin加载哪些插件。在服务启动的时候mysql会加载mysql.plugin中的插件,当然也可以通过—plugin_name来指定插件。

更多关于插件安装可以查看:

Section 5.1.8.1, “Installing and Uninstalling Plugins”

更多关于参数信息可以查看:

http://dev.mysql.com/doc/refman/5.6/en/mysql-plugin.html

4.4.5 mysql_secure_installation

用mysql_secure_installation,可以:

1.设置root账号密码

2.可以设置root不让非localhost登陆

3.可以删除匿名账号

4.可以删除test账号

直接运行mysql_secure_installaiton,然后会进入交互模式进行设置。

4.4.6 mysql_tzinfo_to_sql

mysql_tzinfo_to_sql把时区信息加载到mysql,如:

shell> mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root mysql

这些数据会被插入到mysql.timezhone*表里面

详细信息查看:

http://dev.mysql.com/doc/refman/5.6/en/mysql-tzinfo-to-sql.html

4.4.7 mysql_upgrade

mysql_upgrade检查当前mysql服务,所有数据库中不兼容的表。mysql_upgrade应该在每次升级之后都要运行一遍。检查不兼容问题。如果找到一个不兼容的表,会检查问题,如果问题被找到会试图修复这个表,如果无法修复那么之恩能够手动修复,修复表策略可以查看:Section 2.10.4, “Rebuilding or Repairing Tables or Indexes”

shell> mysql_upgrade [options]

mysql_upgrade之后,重启服务,让mysql_upgrade修复生效。mysql_upgrade其实是运行一下的过程:

mysqlcheck --no-defaults –databases --fix-db-names --fix-table-names mysql

mysqlcheck --no-defaults --check-upgrade –databases --auto-repair mysql

mysql < fix_priv_tables

mysqlcheck --no-defaults --all-databases --skip-database=mysql --fix-db-names --fix-table-names

mysqlcheck --no-defaults --check-upgrade --all-databases --skip-database=mysql --auto-repair

更详细的信息查看:

http://dev.mysql.com/doc/refman/5.6/en/mysql-upgrade.html

4.5 MySQL客户端程序

4.5.1 mysql

mysql是最常使用的工具之一弄能也十分的强大,主要有个特点是可以使用system或者/!来调用shell,如:

system ls

\! ls

用help [content]查看服务端的帮助

关于mysql的参数,交互式命令等可以查看:

http://dev.mysql.com/doc/refman/5.6/en/mysql.html

4.5.2 mysqladmin

mysqladmin是一个管理工具,可以用来检查mysql的配置,当前状态,创建和删除数据库等。

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

mysqladmin由2部分组成:

1.选项,基本和mysql的选项差不多

2.命令,通过这些命令执行到mysqld

如,设置root密码

mysqladmin  -u root password ‘newpassword’

关于选项和命令的详细内容:

http://dev.mysql.com/doc/refman/5.6/en/mysqladmin.html

4.5.3 mysqlcheck

mysqlcheck用来维护表的,检查,修复,优化,分析表。当mysqlcheck执行的时候对表加锁(读锁),但是其他会话无法访问。对于大表mysqlcheck是很花时间的。mysqlcheck和myisamchk类似,但是也有不同:1.在mysqld启动的时候才能运行,2.运行的时候不需要关闭服务。

对于用户来说mysqlcheck只是更加方便运行CHECK TABLE,REPAIR TABLE,ANALYZE TABLE,OPTIMIZE TABLE。由mysqlcheck决定需要运行哪个sql。有些存储引擎不不支持上面4个sql,所有会报错。

shell> mysqlcheck [options] db_name [tbl_name ...]

shell> mysqlcheck [options] --databases db_name ...

shell> mysqlcheck [options] --all-databases

具体参数和命令:

http://dev.mysql.com/doc/refman/5.6/en/mysqlcheck.html

4.5.4 mysqldump

mysqldump是逻辑备份工具,备份产生sql语句结果可以放在txt,xml和cvs中。mysqldump也是常用工具之一。mysqldump可以适用于小数据库但是大数据库用mysqldump备份在恢复的时候很坑爹。大数据库如果是innodb表可以考虑使用mysqlbackup,做物理备份,如果是myISAM表可以考虑使用mysqlhotcopy。

例子:

备份数据库

shell> mysqldump db_name > backup-file.sql

恢复数据库:

shell> mysql db_name < backup-file.sql

shell> mysql -e "source /path-to-backup/backup-file.sql" db_name

迁移数据库:

shell> mysqldump --opt db_name | mysql --host=remote_host -C db_name

备份多个数据库:

shell> mysqldump --databases db_name1 [db_name2 ...] > my_databases.sql

更多的mysqldump的参数和选项:

http://dev.mysql.com/doc/refman/5.6/en/mysqldump.html

4.5.5 mysqlimport

mysqlimport导入工具,是通过LOAD DATA INFILE导入数据。

关于LOAD DATAINFILE可以查看:

http://dev.mysql.com/doc/refman/5.6/en/load-data.html

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

mysqlimport的选项很多,主要介绍2个:

列分隔符:

--fields-terminated-by=...--fields-enclosed-by=...--fields-optionally-enclosed-by=...--fields-escaped-by=...,这些都是列分隔符

行分隔符:

--lines-terminated-by=...,是用方法: --lines-terminated-by="\r\n"和列分隔符一样。

其他参数请看:

http://dev.mysql.com/doc/refman/5.6/en/mysqlimport.html

4.5.6 mysqlshow

mysqlshow,就是使用show命令,show命令是比较常用的,所以mysqlshow没啥好说的。

具体信息查看:

http://dev.mysql.com/doc/refman/5.6/en/mysqlshow.html

4.5.7 mysqlslap

mysqlslap就是mysql的压测工具。如果能够搞到tpc-h测试标准的sql那么就可以对mysql做tpc-h标准的测试了。

mysqlslap运行分3个阶段:

1.创建元数据,加载测试数据

2.测试

3.清理

有些例子:

mysqlslap --delimiter=";"

--create="CREATE TABLE a (b int);INSERT INTO a VALUES (23)"

--query="SELECT * FROM a" --concurrency=50 --iterations=200

mysqlslap --concurrency=5 --iterations=20
  --number-int-cols=2 --number-char-cols=3
  --auto-generate-sql
mysqlslap --concurrency=5
  --iterations=5 --query=query.sql --create=create.sql
  --delimiter=";"

一些选项可以看:

http://dev.mysql.com/doc/refman/5.6/en/mysqlslap.html

4.6 MySQL管理和效率Programs

4.6.1 innochecksum

Innochecksum打印innodb文件的checksum,通过读取innodb表空间文件计算每个page的checksum然后和保存的checksum对比,报告不匹配的,不匹配说明page损坏。主要用于断电情况下表空间文件一致性检查。

Innochecksum不能服务启动的情况下使用,对于这种的表空间文件只能通过check table在表空间内的表来完成。

如果checksum出现不匹配,那么要通过还原备份来还原表空间。

shell> innochecksum [options] file_name

具体参数请看:

http://dev.mysql.com/doc/refman/5.6/en/innochecksum.html

4.6.2 myisam_ftdump

Myisam_ftdump显示myisam表中FULLTEXT索引信息。在运行myisam_ftdump之前如果服务还是启动的,那么闲运行FLUSH TABLES。

shell> myisam_ftdump [options] tbl_name index_num

例:

myisam_ftdump /usr/local/mysql/data/test/mytexttable 1

详细参数:

http://dev.mysql.com/doc/refman/5.6/en/myisam-ftdump.html

4.6.3 myisamchk

Myisamchk获取myisam表信息,check,修复,优化表的工具。检查和修复表也可以使用CHECK TABLE REPAIR TABLE。

Mysiamchk不带选项是,只做一些简单的表检查。

myisamchk [options] tbl_name ...

如果不再database目录,也可以

myisamchk /path/to/database_dir/*.MYI

具体参数“

http://dev.mysql.com/doc/refman/5.6/en/myisamchk.html

4.6.4 myisamlog

myisamlog处理myisam日志文件,调用方法:

shell> myisamlog [options] [file_name [tbl_name] ...]

具体参数:

http://dev.mysql.com/doc/refman/5.6/en/myisamlog.html

4.6.5 myisampack

myisampack压缩myisam表,对表的没列进行压缩,可以压缩40%到70%。当表要使用的时候,读入内存会解压缩。当访问某一行的时候会带来不错的性能,因为只要解压缩一行。

对压缩表的访问尽量使用mmap如果不行或使用通用的读写文件操作。

注意:

1.最好在mysqld没有启动的时候压缩,如果启动了没有使用external lock最好不要使用压缩。

2.压缩后的表变成了只读

shell> myisampack [options] file_name ...

具体参数:

http://dev.mysql.com/doc/refman/5.6/en/myisampack.html

4.6.6 mysql_config_editor

mysql_config_editor会保存认证信息到一个加密的登陆文件(.mylogin.cnf)

shell> mysql_config_editor [program_options] command [command_options]

例:

shell> mysql_config_editor set --login-path=local
         --host=localhost --user=localuser --password
Enter password: enter password "localpass" here
shell> mysql_config_editor set --login-path=remote
         --host=remote.example.com --user=remoteuser --password
Enter password: enter password "remotepass" here

显示内容:

shell> mysql_config_editor print --all
[local]
user = localuser
password = *****
host = localhost
[remote]
user = remoteuser
password = *****
host = remote.example.com

mysql_config_editor命令和选项:

http://dev.mysql.com/doc/refman/5.6/en/mysql-config-editor.html

4.6.7 mysqlaccess

mysqlaccess用来诊断给定host,user,数据库的访问权限。

shell> mysqlaccess [host_name [user_name [db_name]]] [options]

具体选项:

http://dev.mysql.com/doc/refman/5.6/en/mysqlaccess.html

4.6.8 mysqlbinlog

mysqlbinlog是比较常用的工具,可以查看binlog的内容(也就是事务日志解析工具)。

mysqlbinlog [options] log_file ...

例:

mysqlbinlog binlog.0000003

除了sql之外还会显示一下信息:

# at 141
#100309  9:28:36 server id 123  end_log_pos 245
  Query thread_id=3350  exec_time=11  error_code=0

at:at所在行的行数

时间:发送sql的时间

server id:server id主要被用在数据库复制,用来唯一标示primary和secondary。

end log pos:下一个日志开始的位子

thread id:标示由那个thread执行

exec_time:在master中是执行时间,在slave中是在slave的完成时间减去master的开始事件。

error_code:执行返回的结果。

mysqlbinlog的结果是可以重现被执行的,具体:Section 7.5, “Point-in-Time (Incremental) Recovery Using the Binary Log”.

具体参数:

http://dev.mysql.com/doc/refman/5.6/en/mysqlbinlog.html

4.6.9 mysqldumpslow

mysqldumpshlow,显示slowlog的信息。slow根据参数配置产生日志。

shell> mysqldumpslow [options] [log_file ...]

具体参数:

http://dev.mysql.com/doc/refman/5.6/en/mysqldumpslow.html

4.6.10 mysqlhotcopy

mysqlhotcopy是一个perl脚本,使用FLUSH TABLES,LOCK TABLES和cp,scp备份数据库。只能备份myisam和ARCHIVE的表。

shell> mysqlhotcopy db_name [/path/to/new_directory]
shell> mysqlhotcopy db_name_1 ... db_name_n /path/to/new_directory

也可以用正则表达式,备份数据库中的表:

shell> mysqlhotcopy db_name./regex/

用~前缀排除表名

shell> mysqlhotcopy db_name./~regex/

具体参数:

http://dev.mysql.com/doc/refman/5.6/en/mysqlhotcopy.html

4.6.11 mysql_convert_table_format

把数据库中的表转化为指定的存储引擎。

shell> mysql_convert_table_format [options]db_name

具体参数:

http://dev.mysql.com/doc/refman/5.6/en/mysql-convert-table-format.html

4.6.12 mysql_find_rows

mysql_find_rows根据正则表达式,提取文件中的sql语句。

具体参数:

http://dev.mysql.com/doc/refman/5.6/en/mysql-find-rows.html

4.6.13 mysql_fix_extensions

规范表文件后缀名,把.frm, .myd, .myi, .isd, 和 .ism ,重命名为.frm, .MYD, .MYI, .ISD, 和 .ISM。

shell> mysql_fix_extensions data_dir

具体查看:

http://dev.mysql.com/doc/refman/5.6/en/mysql-fix-extensions.html

4.6.14 mysql_setpermission

mysql_setpermission是Perl脚本,用于交互式的设置mysql grant表的权限。

shell> mysql_setpermission [options]

mysql_setpermission会读取配置文件中[client]和[perl]

具体选项:

http://dev.mysql.com/doc/refman/5.6/en/mysql-setpermission.html

4.6.15 mysql_waitpid

mysql_waitpid,中断进程,并等待进程中断。只能适用于unix和unix-like系统

shell> mysql_waitpid [options] pid wait_time

具体选项:

http://dev.mysql.com/doc/refman/5.6/en/mysql-waitpid.html

4.6.16 mysql_zap

mysql_zap删除模式匹配到的所有进程。

shell> mysql_zap [-signal] [-?Ift] pattern

具体参数:

http://dev.mysql.com/doc/refman/5.6/en/mysql-zap.html

4.7 Mysql开发工具

4.8 其他program