程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> [MySQL Reference Manual] 4 MYSQL Program

[MySQL Reference Manual] 4 MYSQL Program

編輯:MySQL綜合教程

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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved