MySQL参考手册第4章:MySQL程序集

来源:互联网 发布:mac如何下载土豆视频 编辑:程序博客网 时间:2024/06/10 00:22
一 MySQL部署工具
1 mysqld_safe
这是一个脚本,用于启动mysqld,它会在出错时记录一些日志,最关键的是在mysqld挂起后,可能拉起mysql进程。
mysqld_safe是一个包装器,对于mysqld_safe不理解的选项,会传递给mysqld,配置文件中可以有[mysqld_safe]一节用来指定其执行参数。其默认行为是杀死当前运行的mysqld然后启动一个新的mysqld。如果线上服务器正在运行,则执行此命令就会中止正常服务,因此执行此命令需谨慎。

2 mysql.server/mysqld
用于开机启动的mysql脚本,其会调用mysqld_safe来完成大部分工作。

3 mysqld_multi
一个用于管理多个mysqld运行实例的程序,若需要运行多个mysqld,需要在配置文件中针对每个实例进行配置一个区[mysqld2],区中配置各个实例的pid,socket,datadir文件等,示例可以通过--example选项查看。

二 MySQL安装工具
4 mysql_install_db
用于在指定的路径下初始化Mysql数据目录及系统表,及相应的配置文件。其为Shell脚本或Perl脚本。

5 mysql_plugin
用于指定管理MySQL服务器启动时加载哪些插件。

6 mysql_secure_installation
可以启动一个交互过程用于设置root帐户,移除匿名用户及test表等。

三 MySQL客户工具
1 mysql的配置参数
mysql本身支持三种类型的参数传递方式,命令行参数、配置文件、环境变量,三者优先级由高到低,若同时指定的话,高优先级会覆盖低优先级来源。

同时在命令行上若传递一个参数多次,则最后一次的有效。

命令行选项上可以控制配置文件的使用,相关参数如--no-defaults将使得不使用配置文件 --defaults-file=file_name来指定所用的配置文件路径,--print-defaults可以打印从配置文件中读取值。

此外在命令行上也可以传递程序变量,通过传入key=value的形式即可,如:
mysql --max_allowed_packet=4M,当然这个选项也可以配置文件中设置,此时连词符可以是"_"也可以是"-"
部分服务器支持的动态选项可以连接数据库后设备,如SET GLOBAL max_allowed_packet=16M

而环境变量则设置在shell的变量中,将相关选项的变量及值导出就可以了。

2 mysql客户端
-h host_name -u user -ppassword -P port database --protocol [TCP/PIPE/SOCKET]
其中host,user,password也可以放在mysql的配置文件中
mysql客户端支持交互式运行,也支持以管道方式或重定向的非交互方式运行。
例如mysql dbname <1.sql
mysql有不少选项,只列一些常用的,查看选项可以用--help选项
-e 'statements' 执行语句后退出
-f 在执行错误时继续后续语句
--socket指定sock文件地址
--safe-updatesa 防止没有条件的delete 和 updte执行

进入mysql后,可以用help列出在交互模式下支持的命令,比较有用的如下:
ego \G  以列模式输出
quit \q 退出
pager   指定结果的pager处理器
rehash  构建补全hash
source \. 加载路径下的sql文件执行
status \s 显示服务器状态
sysytem \! 执行外部shell命令
这些命令在使用其他SQL客户端时是无用的。

在Linux上,mysql客户端会在用户的主目录里创建.mysql_history的文件,其中保存执行的mysql的命令历史。可以通过修改系统的SHELL环境变量MYSQL_HISTORY的值来控制此文件的路径,若将其置为/dev/null,则可以禁用此功能。

3 mysqladmin
支持以非交互的形式进行服务端管理,可以用来创建数据库、表、查看当前服务状态等
使用格式为mysqladmin [optiotn] cmd args
其选项的部分与mysql类似
常用命令有create db; drop db; extended-status;flush-logs;flush-privileges;kill id;
ping; processlist; reload (授权表); refresh; shutdown; start-slave; status; stop-slave; variables;version;


4 mysqlcheck
mysqlcheck 执行服务的维护,检查、修复、优化及分析表。
其在检查时会为表加上读锁,如果执行全库的检查,过程可能会比较耗时。其可以在mysqld运行时执行检查,而myisamchk却需要在mysqld关闭时执行。
mysqlcheck会调用SQL的check table ,repair table, analyze table, optimize table来进行操作,但不同的存储引擎支持的语句不同。
在修复表之前,最好先备份数据,在某些时候修复可能引起数据丢失。

mysqlcheck [option] db_name [table]
如果只希望执行其中的某一步,则可能通过选项--check, --repair, --analyze, --optmize来控制check的行为

5 mysqldump
数据库备份工具,可以将模式和数据都导出成sql文件或其他格式的数据,以便于数据的恢复和传输。
其执行时至少需要具有select权限。若备份视图还需要有show view权限;若未启动--single-transaction,则需要lock table权限。

其优势在于导出数据在恢复之前可以进行修改,其劣势在于其并不是一个少量数据的快速或可扩展的方案。备份数据比较慢,且恢复时更为慢。通常适合用来物理全量备份。

mysqldump [opt] db_name tbl_name ...
mysqldump [opt] --databases db_name ...
常用选项:
--add-drop-database, --add-drop-table  在创建库或表的语句前加drop语句
--no-autocommit   提升插入性能,生成关闭自动提交功能的语句
--extended-insert 减小输出文件
--lock-all-tables,--lock-tables  在备份时进行加锁
--no-data           不导出数据
--result-file=file  指定导出文件
--single-transaction  以单个事务方式执行,导出innodb更好的选择
--apply-slave-statements 为导出文件添加stop slave/ start slave
--flush-logs        执行新建日志文件
--master-data = 1|2 此选项将最新的日志文件和LSN写入到输出中。1通常用于将数据从主库同步从库,其会在文件前面增加CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000056', MASTER_LOG_POS=279; 若设置为2,则注释掉此句。若无此选项,则无此语句。
--ignore-table=name; 连接使用多次以不导出不需要的部分表
使用mysqldump --help 可以得到各个选项的简单解释,在帮助的最后,有默认情况下各选项的默认值。

6 mysqlimport
一个数据导入工具,类同SQL级别的LOAD DATA INFILE,其选项也支持LOAD DATA的语法。
mysqlimport [option] db_name sql_file ...功能等同于mysql -D db_name <sql_file

7 mysqlshow 
类似于mysqladmin,但只支持执行show database; show table; describe table的等查询方法

四 维护性工具
1 innochecksum 
离线计算datafile的校验和,不能在运行的服务器上执行。
innochecksum [opt] file_name

2 mysqlaccess
用来检查用户权限的小工具

3 mysqlbinlog
一个用来查看mysql日志文件的工具。此工具可以用来导出远程的数据文件。如果日志导出的有blob对象,则需要以--binary-mode模式启动mysql
mysqlbinlog [option] binlog-file 将日志文件转换成sql语句,此语句可以直接传递给mysql并应用到指定的服务器
--disable-log-bin         关闭binlog日志
--read-from-remote-server 从远程服务器读取日志,而非本地,通过--host,--password,--port,--protocol,--socket,--user选项来打开远程数据。此选项有用,可以用来实现远程数据的实时同步备份。
--offset=n    跳过前N条记录
--result-file=file  输出为文件
--server-id=id  输出指定id的服务器写的日志
--start-datatime=dt dt示例"2013-02-10 13:00:21"
--stop-datetime=dt
--start-position=n pos指日志中at后的数值
--stop-position=n
--raw 以二进制形式导出 5.6版本支持
--to-last-log  读取当前文件一直到最新的日志文件
由于mysqlbinlog的read-from-remote-server及raw的能力,可以利用其进行备份binlog文件,支持实时备份,可以进行连续的binlog文件读取,直到连接被中断或进程被中断。如果被中断,mysqlbinlog不会进行重试,需要进行重启。
--stop-never 在一个binlog文件读取到结尾之后,自动转到后续文件的读取,设置server-id=65535。
--stop-never-slave-server-id = id 指定上报的server-id,指定为0则文件读取结束即关闭连接,指定为65535则连接不关闭
实时备份的示例:mysqlbinlog --read-from-remote-server -h --raw --stop-never binlog.000001
默认情况下,数据被备份到当前目录,并以原始文件名来命名存储。若使用--result-file=/path/x,则备份以/path/xbinlog.00000x形式存储。
使用mysqlbinlog与msyqldump来备份和恢复的示例:
http://dev.mysql.com/doc/refman/5.6/en/mysqlbinlog-backup.html


4 mysqldumpslow
用于分析慢查询日志 
mysqldumpslow [option] slow_file
-s X 排序依据X可为 t:查询时间 l:加锁时间 r:发送行数 c:计数 这4个方面前可加a表示平均值
-t N 只显示top N数据

5 mysqlhotcopy
一个perl脚本,只用来备份MyISAM或Archive表,它使用 flush table,lock table,然后用cp和scp来进行数据库备份,使用此命令必须具有SELECT ,RELOAD,FLUSH TABLE,LOCK TABLE的权限。
使用方式mysqlhotcopy db_name ... [path]
--flushlog 在锁定表后刷新日志
--method=cp|scp   复制文件的方法
如果希望热备份innodb数据,可使用Percona的Xtrabackup工具。

6 mysql_convert_table_format
perl脚本,用来转换数据库表的引擎
mysql_convert_table_format -e engine db_name 
其功能赞同于alter table tb_name engine="engine"


0 0
原创粉丝点击