mysql數(shù)據(jù)庫以體積小、速度快、總體擁有成本低等優(yōu)點(diǎn),深受廣大中小企業(yè)的喜愛,下面這篇文章主要給大家介紹了關(guān)于mysql中常用工具的相關(guān)資料,需要的朋友們可以參考學(xué)習(xí),下面來一起看看吧。
前言
本文主要給大家介紹了關(guān)于MySQL常用工具的相關(guān)內(nèi)容,分享出來供大家參考學(xué)習(xí),下面話不多說了,來一起看看詳細(xì)的介紹吧。
一、mysql (客戶端連接工具)
使用最頻繁的連接數(shù)據(jù)庫的客戶端工具,使用語法如下:
mysql?[options]?[database]
這里的 options 表示 mysql 的可用選項,可以一次寫一個或者多個,甚至可以不寫;database 表示連接的數(shù)據(jù)庫,一次只能寫一個或者不寫,如果不寫,連接成功后需要用 “use database”命令來進(jìn)入要操作的數(shù)據(jù)庫。
1. 連接選項
選項的表達(dá)方式有多種,例如:
#?這三種方式都是可以的 shell>?mysql?-u?root shell>?mysql?-uroot shell>?mysql?-user=root
1. 連接選項
-
-u, –user=name??? 指定用戶名
-
-p, –password[=name]??? 指定密碼?
-
-h, –host=name??? 指定服務(wù)器 IP 或者域名?
-
-P, –port=#??? 指定連接端口
一般在在本地環(huán)境,為了方便,可以在 配置文件 my.cnf 中配置當(dāng)前用戶和密碼,配置好后,直接執(zhí)行 mysql 就可以連接到數(shù)據(jù)庫:
[client] user=root password=000000 port?=?3306 socket?=?/tmp/mysql.sock default-character-set?=?utf8mb4
配置好后,直接執(zhí)行 mysql 即可:
zj@bogon:~$?mysql Welcome?to?the?MySQL?monitor.?Commands?end?with?;?or?g. Your?MySQL?connection?id?is?19 ...
登錄遠(yuǎn)程服務(wù)器,需要指定地址和端口:
shell>?mysql?-h?192.168.10.10?-P?3306?-uroot?-p
注意: 在正式的生產(chǎn)環(huán)境中,為了安全起見,一般需要創(chuàng)建應(yīng)用賬號并賦予適當(dāng)權(quán)限,而不會用 root 直接操作數(shù)據(jù)庫;默認(rèn)端口(3306)一般不要使用,可以改為任意操作系統(tǒng)未占用的端口。
2. 客戶端字符集選項
--default-character-set=charset-name
作為服務(wù)器的字符集選項,這個選項也可以配置在 my.cnf 的 [mysqld] 組中。同樣,作為客戶端字符集選項,也可以配置在 my.cnf 的 [mysql]組中,這樣每次用 mysql 工具連接數(shù)據(jù)庫的時候就會自動使用此客戶端字符集。當(dāng)然,也可以在 mysql 的命令行中手工指定客戶端字符集:
shell>?mysql?-u?user?-default-character-set=charset
相當(dāng)于在 mysql 客戶端連接成功后執(zhí)行:
set?names?charset;
3. 執(zhí)行選項
-e,?--execute=name?//?執(zhí)行?sql?語句并退出
此選項可以直接在 MySQL 客戶端執(zhí)行 sql 語句,對于一些批處理腳本,這是方式尤其方便:
zj@bogon:~$?mysql?mysql?-e?"select?user,host?from?user" +-----------+-----------+ |?user?|?host?| +-----------+-----------+ |?root?|?127.0.0.1?| |?mysql.sys?|?localhost?| |?root?|?localhost?| +-----------+-----------+
可以按這種方式連續(xù)執(zhí)行多個 sql 語句,用英文分號(;)隔開。
4. 格式化選項
-
-E, –vertical??? 將輸出方式按照字段順序豎著顯示?
-
-s, –silent??? 去掉 mysql 中的線條框顯示
“-E” 選項類似于 mysql 里面執(zhí)行 sql 語句后加 “G”, 經(jīng)常和 -e 一起使用。
二、myisampack (myisam 表壓縮工具)
myisampack 是一個表壓縮工具,可以使用很高的壓縮率來對 myisam 存儲引擎的表進(jìn)行壓縮,使得壓縮后的表占用比壓縮前小得多的空間。但是壓縮后的表將成為一個只讀表,不能進(jìn)行 DML 操作。
三、mysqladmin(MySQL 管理工具)
mysqladmin 是一個執(zhí)行管理操作的客戶端程序。可以用它來檢查服務(wù)器的配置和當(dāng)前狀態(tài)、創(chuàng)建并刪除數(shù)據(jù)庫等。它的功能與 mysql 客戶端非常類似,主要區(qū)別在于它更側(cè)重于一些管理方面的功能。
使用語法:
shell>?mysqladmin?[options]?command?[command-options]...
可以執(zhí)行的命令如下:
?create?databasename?Create?a?new?database?新建數(shù)據(jù)庫 ?debug??Instruct?server?to?write?debug?information?to?log?把?debug?日志記錄到日志文件中 ?drop?databasename?Delete?a?database?and?all?its?tables?刪除數(shù)據(jù)庫 ?extended-status?Gives?an?extended?status?message?from?the?server?查看?MySQL?服務(wù)器的狀態(tài)信息 ?flush-hosts?Flush?all?cached?hosts ?flush-logs?Flush?all?logs ?flush-status?Clear?status?variables ?flush-tables?Flush?all?tables ?flush-threads?Flush?the?thread?cache ?flush-privileges?Reload?grant?tables?(same?as?reload) ?kill?id,id,...?Kill?mysql?threads ?password?[new-password]?Change?old?password?to?new-password?in?current?format ?ping??Check?if?mysqld?is?alive ?processlist?Show?list?of?active?threads?in?server ?reload??Reload?grant?tables ?refresh??Flush?all?tables?and?close?and?open?logfiles ?shutdown??Take?server?down ?status??Gives?a?short?status?message?from?the?server ?start-slave?Start?slave ?stop-slave?Stop?slave ?variables??Prints?variables?available ?version??Get?version?info?from?server
舉例:
zj@bogon:/usr/local/mysql/bin$?mysqladmin?-uroot?-p?shutdown Enter?password:
四、日志管理工具
由于服務(wù)器生成的二進(jìn)制文件以二進(jìn)制格式保存,所以如果想要檢查這些文件的文本格式,就會用到 mysqlbinlog 日志管理工具。
用法如下:
shell>?mysqlbinlog?[option]?log-file1?log-file2...
option 有很多選項:
-
-d,–database=name: 指定數(shù)據(jù)庫名稱,只列出指定的數(shù)據(jù)庫相關(guān)操作。
-
-o, –offset=#: 忽略日志中的前 n 行命令。
-
-r, –result-file=name: 將輸出的文本格式日志輸出到指定文件
-
-s, –short-form: 顯示簡單格式,省略掉一些信息。
-
–start-datetime=name –stop-datetime=name: 指定日期間隔內(nèi)的所有日志。
-
–start-position=# –stop-position=#: 指定位置間隔內(nèi)的所有日志
1. 示例準(zhǔn)備:創(chuàng)建新日志,新建庫 t1 和 t2, 以及分別新建表 test1 和 test2
MySQL?[(none)]>?reset?master; Query?OK,?0?rows?affected?(0.01?sec) MySQL?[(none)]>?create?table?t1(id?int,name?varchar); ERROR?1046?(3D000):?No?database?selected MySQL?[(none)]>?reset?master; Query?OK,?0?rows?affected?(0.01?sec) MySQL?[(none)]>?create?database?t1; Query?OK,?1?row?affected?(0.04?sec) MySQL?[(none)]>?create?database?t2; Query?OK,?1?row?affected?(0.02?sec) MySQL?[(none)]>?use?t1; Database?changed MySQL?[t1]>?create?table?test1(id?int,?name?varchar(30)); Query?OK,?0?rows?affected?(0.11?sec) MySQL?[t1]>?insert?into?test1?value?(1,'zj'); Query?OK,?1?row?affected?(0.14?sec) MySQL?[t1]>?insert?into?test1?value?(2,'zj2'); Query?OK,?1?row?affected?(0.02?sec) MySQL?[t1]>?use?t2; Database?changed MySQL?[t2]>?create?table?test2(id?int,name?varchar(30)); Query?OK,?0?rows?affected?(0.02?sec) MySQL?[t2]>?insert?into?test2?select?*?from?t1.test1; Query?OK,?2?rows?affected?(0.03?sec) Records:?2?Duplicates:?0?Warnings:?0 MySQL?[t2]>?select?*?from?t1.test1; +------+------+ |?id?|?name?| +------+------+ |?1?|?zj?| |?2?|?zj2?| +------+------+ 2?rows?in?set?(0.02?sec) MySQL?[t2]>?select?*?from?test2; +------+------+ |?id?|?name?| +------+------+ |?1?|?zj?| |?2?|?zj2?| +------+------+ 2?rows?in?set?(0.00?sec)
2. 不加任何參數(shù),顯示所有日志
注意:必須擁有訪問目標(biāo)文件的權(quán)限
zj@bogon:/usr/local/mysql/bin$?sudo?./mysqlbinlog?--no-defaults?/data/mysql/mysql-bin.000001 [sudo]?password?for?zj:? /*!50530?SET?@@SESSION.PSEUDO_SLAVE_MODE=1*/; /*!50003?SET?@OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/; DELIMITER?/*!*/; #?at?4 #170920?20:44:49?server?id?1?end_log_pos?123?CRC32?0x42fd5a4d?Start:?binlog?v?4,?server?v?5.7.18-log?created?170920?20:44:49?at?startup ...... create?table?test2(id?int,name?varchar(30)) /*!*/; #?at?1366 #170920?20:50:29?server?id?1?end_log_pos?1431?CRC32?0x18a95938?Anonymous_GTID?last_committed=6?sequence_number=7 SET?@@SESSION.GTID_NEXT=?'ANONYMOUS'/*!*/; #?at?1431 #170920?20:50:29?server?id?1?end_log_pos?1509?CRC32?0x2fa8bd6c?Query?thread_id=4?exec_time=0?error_code=0 SET?TIMESTAMP=1505911829/*!*/; BEGIN /*!*/; #?at?1509 #170920?20:50:29?server?id?1?end_log_pos?1622?CRC32?0x77ce6f3b?Query?thread_id=4?exec_time=0?error_code=0 SET?TIMESTAMP=1505911829/*!*/; insert?into?test2?select?*?from?t1.test1 /*!*/; #?at?1622 #170920?20:50:29?server?id?1?end_log_pos?1653?CRC32?0x41b7a45b?Xid?=?29 COMMIT/*!*/; SET?@@SESSION.GTID_NEXT=?'AUTOMATIC'?/*?added?by?mysqlbinlog?*/?/*!*/; DELIMITER?; #?End?of?log?file /*!50003?SET?COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/; /*!50530?SET?@@SESSION.PSEUDO_SLAVE_MODE=0*/;
3. 加 -d 選項,將只顯示 t2 數(shù)據(jù)庫的操作日志
zj@bogon:/usr/local/mysql/bin$?sudo?./mysqlbinlog?--no-defaults?/data/mysql/mysql-bin.000001?-d?t2 /*!50530?SET?@@SESSION.PSEUDO_SLAVE_MODE=1*/; /*!50003?SET?@OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/; ...... SET?TIMESTAMP=1505911829/*!*/; insert?into?test2?select?*?from?t1.test1 /*!*/; #?at?1622 #170920?20:50:29?server?id?1?end_log_pos?1653?CRC32?0x41b7a45b?Xid?=?29 COMMIT/*!*/; SET?@@SESSION.GTID_NEXT=?'AUTOMATIC'?/*?added?by?mysqlbinlog?*/?/*!*/; DELIMITER?; #?End?of?log?file /*!50003?SET?COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/; /*!50530?SET?@@SESSION.PSEUDO_SLAVE_MODE=0*/;
4. 加 -o 選項, 忽略掉前 20 行命令
zj@bogon:/usr/local/mysql/bin$?sudo?./mysqlbinlog?--no-defaults?/data/mysql/mysql-bin.000001?-o?20 /*!50530?SET?@@SESSION.PSEUDO_SLAVE_MODE=1*/; /*!50003?SET?@OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/; DELIMITER?/*!*/; #?at?4 #170920?20:44:49?server?id?1?end_log_pos?123?CRC32?0x42fd5a4d?Start:?binlog?v?4,?server?v?5.7.18-log?created?170920?20:44:49?at?startup #?Warning:?this?binlog?is?either?in?use?or?was?not?closed?properly. ROLLBACK/*!*/; BINLOG?' wWLCWQ8BAAAAdwAAAHsAAAABAAQANS43LjE4LWxvZwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAADBYsJZEzgNAAgAEgAEBAQEEgAAXwAEGggAAAAICAgCAAAACgoKKioAEjQA AU1a/UI= '/*!*/; #?at?1509 #170920?20:50:29?server?id?1?end_log_pos?1622?CRC32?0x77ce6f3b?Query?thread_id=4?exec_time=0?error_code=0 use?`t2`/*!*/; SET?TIMESTAMP=1505911829/*!*/; SET?@@session.pseudo_thread_id=4/*!*/; SET?@@session.foreign_key_checks=1,?@@session.sql_auto_is_null=0,?@@session.unique_checks=1,?@@session.autocommit=1/*!*/; SET?@@session.sql_mode=1436549152/*!*/; SET?@@session.auto_increment_increment=1,?@@session.auto_increment_offset=1/*!*/; /*!C?utf8mb4?*//*!*/; SET?@@session.character_set_client=45,@@session.collation_connection=45,@@session.collation_server=45/*!*/; SET?@@session.lc_time_names=0/*!*/; SET?@@session.collation_database=DEFAULT/*!*/; insert?into?test2?select?*?from?t1.test1 /*!*/; #?at?1622 #170920?20:50:29?server?id?1?end_log_pos?1653?CRC32?0x41b7a45b?Xid?=?29 COMMIT/*!*/; SET?@@SESSION.GTID_NEXT=?'AUTOMATIC'?/*?added?by?mysqlbinlog?*/?/*!*/; DELIMITER?; #?End?of?log?file /*!50003?SET?COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/; /*!50530?SET?@@SESSION.PSEUDO_SLAVE_MODE=0*/;
5. 加 -r 選項,將上面的結(jié)果輸出到文件 resultfile 中。
zj@bogon:/usr/local/mysql/bin$?sudo?./mysqlbinlog?--no-defaults?/data/mysql/mysql-bin.000001?-o?20?-r?./logfile zj@bogon:/usr/local/mysql/bin$?sudo?more?./logfile /*!50530?SET?@@SESSION.PSEUDO_SLAVE_MODE=1*/; /*!50003?SET?@OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/; ...
6. 結(jié)果顯示的內(nèi)容較多,顯得比較亂,加 -s 選項將上面的內(nèi)容進(jìn)行簡單顯示
zj@bogon:/usr/local/mysql/bin$?sudo?./mysqlbinlog?--no-defaults?/data/mysql/mysql-bin.000001?-o?20?-s /*!50530?SET?@@SESSION.PSEUDO_SLAVE_MODE=1*/; /*!50003?SET?@OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/; DELIMITER?/*!*/; ROLLBACK/*!*/; use?`t2`/*!*/; SET?TIMESTAMP=1505911829/*!*/; SET?@@session.pseudo_thread_id=999999999/*!*/; SET?@@session.foreign_key_checks=1,?@@session.sql_auto_is_null=0,?@@session.unique_checks=1,?@@session.autocommit=1/*!*/; SET?@@session.sql_mode=1436549152/*!*/; SET?@@session.auto_increment_increment=1,?@@session.auto_increment_offset=1/*!*/; /*!C?utf8mb4?*//*!*/; SET?@@session.character_set_client=45,@@session.collation_connection=45,@@session.collation_server=45/*!*/; SET?@@session.lc_time_names=0/*!*/; SET?@@session.collation_database=DEFAULT/*!*/; insert?into?test2?select?*?from?t1.test1 /*!*/; COMMIT/*!*/; SET?@@SESSION.GTID_NEXT=?'AUTOMATIC'?/*?added?by?mysqlbinlog?*/?/*!*/; DELIMITER?; #?End?of?log?file /*!50003?SET?COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/; /*!50530?SET?@@SESSION.PSEUDO_SLAVE_MODE=0*/;
7. 加 “–start-datetime –stop-datetime” 選項顯示 5:00:00 ~ 5:01:00 之間的日志
zj@bogon:/usr/local/mysql/bin$?sudo?./mysqlbinlog?--no-defaults?/data/mysql/mysql-bin.000001?--start-datetime="2017/09/30?05:00:00"?--stop-datetime='2017/09/30?05:01:00'
開始日期和結(jié)束日期可以只寫一個。如果只寫開始日期,表示范圍開始日期到日志結(jié)束;如果只寫結(jié)束日期,表示日志開始到指定的結(jié)束日期。
8. –start-position=# 和 –stop-position=#, 與日期范圍類似,不過可以更精確的表示范圍。
sudo?./mysqlbinlog?--no-defaults?/data/mysql/mysql-bin.000001?--start-position=4?--stop-datetime=100
五、mysqlcheck (myisam 表維護(hù)工具)
mysqlcheck 工具可以檢查和修復(fù) myisam 表,還可以優(yōu)化和分析表。實際上,它集成了 mysql 工具中的 check、repair、analyze、optimize
有 3 種方式可以來調(diào)用 mysqlcheck:
shell>?mysqlcheck?[options]?db_name?[tables] shell>?mysqlcheck?[options]?--database?DB1?[DB2?DB3...] shell>?mysqlcheck?[options]?--all-databse
option 中有以下常用選項:
-
-c, –check (檢查表)
-
-r, –repair (修復(fù)表)
-
-a, –analyze (分析表)
-
-o, –optimize (優(yōu)化表)
其中,默認(rèn)選項是 -c (檢查表)
示例:
1. 檢查表
zj@bogon:/data/mysql$?mysqlcheck?-c?t2 t2.test1??????OK t2.test2??????OK
2. 修復(fù)表
zj@bogon:/data/mysql$?mysqlcheck?-r?t2 t2.test1 note?:?The?storage?engine?for?the?table?doesn't?support?repair t2.test2??????OK
test1 表的存儲引擎為 innodb,不支持 repair。
3. 分析表
zj@bogon:/data/mysql$?mysqlcheck?-a?t2 t2.test1??????OK t2.test2??????OK
4. 優(yōu)化表
zj@bogon:/data/mysql$?mysqlcheck?-o?t2 t2.test1 note?:?Table?does?not?support?optimize,?doing?recreate?+?analyze?instead status?:?OK t2.test2
六、mysqldump (數(shù)據(jù)導(dǎo)出工具)
mysqldump 客戶端工具用來備份數(shù)據(jù)庫或在不同數(shù)據(jù)庫之間進(jìn)行數(shù)據(jù)遷移。備份內(nèi)容包含創(chuàng)建表或裝載表的 sql 語句。
有三中方式來調(diào)用 mysqldump:
mysqldump?[OPTIONS]?database?[tables]?//?備份單個數(shù)據(jù)庫或者庫中部分?jǐn)?shù)據(jù)表 mysqldump?[OPTIONS]?--databases?[OPTIONS]?DB1?[DB2?DB3...]?//備份指定的一個或者多個數(shù)據(jù)庫 mysqldump?[OPTIONS]?--all-databases?[OPTIONS]?//?備份所有數(shù)據(jù)庫
1. 連接選項
-
-u, –user=name???????????? // 指定用戶名
-
-p, –password[=name]?????? // 指定密碼?
-
-h, –host=name???????????? // 指定服務(wù)器 IP 或者域名
-
-p, –port=#??????????????? // 指定連接端口
示例:
shell>?mysqldump?-h192.18.10.10?-p3306?-uroot?-p?test?>?test.sql
2. 輸出內(nèi)容選項
-
–add-drop-database???? 每個數(shù)據(jù)庫創(chuàng)建語句前加上 drop database 語句
-
–add-drop-table??????? 在每個表創(chuàng)建語句前加上 drop table 語句
在默認(rèn)情況下,這兩個參數(shù)都自動加上。
-
-n, –no-create-db????? 不包含數(shù)據(jù)庫的創(chuàng)建語句?
-
-t, –no-create-info??? 不包含數(shù)據(jù)表的創(chuàng)建語句
-
-d, –no-data?????????? 不包含數(shù)據(jù)
3. 輸出格式選項
–compact 選項使得輸出結(jié)果簡潔,不包括默認(rèn)選項中的各種注釋。
root@bogon:/usr/local/mysql/bin#?./mysqldump?--compact?t2?emp?>?emp.sql root@bogon:/usr/local/mysql/bin#?more?emp.sql /*!40101?SET?@saved_cs_client?=?@@character_set_client?*/; /*!40101?SET?character_set_client?=?utf8?*/; CREATE?TABLE?`emp`?( ?`id`?int(11)?NOT?NULL?DEFAULT?'0', ?`name`?varchar(10)?DEFAULT?NULL, ?`context`?text, ?PRIMARY?KEY?(`id`) )?ENGINE=InnoDB?DEFAULT?CHARSET=utf8mb4; /*!40101?SET?character_set_client?=?@saved_cs_client?*/; INSERT?INTO?`emp`?VALUES?(1,'a','a'),(2,'b','b');
-c 或者 –complete-insert 選項使得輸出文件中的 insert 語句包括字段名稱,默認(rèn)是不包括字段名稱的。
root@bogon:/usr/local/mysql/bin#?./mysqldump?-c?--compact?t2?emp?>?emp.sql root@bogon:/usr/local/mysql/bin#?more?emp.sql /*!40101?SET?@saved_cs_client?=?@@character_set_client?*/; /*!40101?SET?character_set_client?=?utf8?*/; CREATE?TABLE?`emp`?( ?`id`?int(11)?NOT?NULL?DEFAULT?'0', ?`name`?varchar(10)?DEFAULT?NULL, ?`context`?text, ?PRIMARY?KEY?(`id`) )?ENGINE=InnoDB?DEFAULT?CHARSET=utf8mb4; /*!40101?SET?character_set_client?=?@saved_cs_client?*/; INSERT?INTO?`emp`?(`id`,?`name`,?`context`)?VALUES?(1,'a','a'),(2,'b','b');
-T 選項將指定數(shù)據(jù)表中的數(shù)據(jù)備份為單純的數(shù)據(jù)文本和建表 sql 兩個文件,經(jīng)常和下面幾個選項一起配合使用,將數(shù)據(jù)導(dǎo)出為指定格式顯示。
-
-T, –tab=name????????????????? 備份數(shù)據(jù)和建表語句
-
–fileds-terminated-by=name???? 域分隔符
-
–fileds-enclosed-by=name?????? 域引用符
-
–fileds-optionally-enclosed-by=name??? 域可選引用符
-
–fileds-escaped-by=name??????? 轉(zhuǎn)義字符
示例:將 t2 數(shù)據(jù)庫中的表 emp 導(dǎo)出為單純的數(shù)據(jù)文本和建表 sql 兩個文件,并存放在當(dāng)前路徑下的 bak 目錄下。
1.創(chuàng)建備份目錄
root@bogon:/usr/local/mysql/bin#?mkdir?bak
2. 將 t2 數(shù)據(jù)庫下的表 emp 備份到 bak 目錄下
root@bogon:/usr/local/mysql/bin#?./mysqldump?t2?emp?-T?./bak
3. 查看 bak 目錄,發(fā)現(xiàn)兩個文件
root@bogon:/usr/local/mysql/bin#?ls?./bak emp.sql?emp.txt
4. 查看兩個文件的內(nèi)容, .sql 結(jié)尾的是建表及插入數(shù)據(jù)的sql,.txt 結(jié)尾的是表數(shù)據(jù)
root@bogon:/usr/local/mysql/bin#?more?./bak/emp.sql --?MySQL?dump?10.13?Distrib?5.7.18,?for?Linux?(x86_64) -- --?Host:?localhost?Database:?t2 --?------------------------------------------------------ --?Server?version?5.7.18-log /*!40101?SET?@OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT?*/; /*!40101?SET?@OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS?*/; /*!40101?SET?@OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION?*/; /*!40101?SET?NAMES?utf8mb4?*/; /*!40103?SET?@OLD_TIME_ZONE=@@TIME_ZONE?*/; /*!40103?SET?TIME_ZONE='+00:00'?*/; /*!40101?SET?@OLD_SQL_MODE=@@SQL_MODE,?SQL_MODE=''?*/; /*!40111?SET?@OLD_SQL_NOTES=@@SQL_NOTES,?SQL_NOTES=0?*/; -- --?Table?structure?for?table?`emp` -- DROP?TABLE?IF?EXISTS?`emp`; /*!40101?SET?@saved_cs_client?=?@@character_set_client?*/; /*!40101?SET?character_set_client?=?utf8?*/; CREATE?TABLE?`emp`?( ?`id`?int(11)?NOT?NULL?DEFAULT?'0', ?`name`?varchar(10)?DEFAULT?NULL, ?`context`?text, ?PRIMARY?KEY?(`id`) )?ENGINE=InnoDB?DEFAULT?CHARSET=utf8mb4; /*!40101?SET?character_set_client?=?@saved_cs_client?*/; /*!40103?SET?TIME_ZONE=@OLD_TIME_ZONE?*/; /*!40101?SET?SQL_MODE=@OLD_SQL_MODE?*/; /*!40101?SET?CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT?*/; /*!40101?SET?CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS?*/; /*!40101?SET?COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION?*/; /*!40111?SET?SQL_NOTES=@OLD_SQL_NOTES?*/; --?Dump?completed?on?2017-09-21?12:07:38
root@bogon:/usr/local/mysql/bin#?more?./bak/emp.txt? 1?a?a 2?b?b
4. 字符集選項
mysqldump 導(dǎo)出的數(shù)據(jù)的字符集使用的是 mysqld 啟動時的默認(rèn)字符集,如果表的字符集用的不是默認(rèn)字符集,導(dǎo)出的數(shù)據(jù)就有可能出現(xiàn)亂碼。所以在導(dǎo)出時,應(yīng)該先確定表的字符集,在導(dǎo)出時指定該字符集即可。
shell>?mysqldump?-uroot?--compact?--default-character-set=utf8?t2?emp?>?emp.sql
5. 其他常用選項
-F –flush-logs (備份前刷新日志)
加上此選項后,備份前將關(guān)閉就日志,生成新日志。使得進(jìn)行恢復(fù)的時候直接從新日志開始進(jìn)行重做,大大方便了恢復(fù)過程。
-l –lock-tables (給所有表加讀鎖)
可以在備份期間使用,使得數(shù)據(jù)無法被更新,從而使備份的數(shù)據(jù)保持一致性,可以配合 -F 選項一起使用。
七、mysqlimport (數(shù)據(jù)導(dǎo)入工具)
mysqlimport 是客戶端數(shù)據(jù)導(dǎo)入工具,用來導(dǎo)入 mysqldump 加 -T 選項后導(dǎo)出的文本文件。
基本用法:
shell>?mysqlimport?[options]?db_name?textfile1
八、mysqlshow (數(shù)據(jù)庫對象查看工具)
mysqlshow 客戶端對象查找工具,用來很快的查找存在哪些數(shù)據(jù)庫,數(shù)據(jù)庫中的表、表中的列或索引,和 mysql 客戶端工具很類似,不過有些特性是 mysql 客戶端工具所不具備的。
使用方法:
shell>?mysqlshow?[option]?[db_name?[tbl_name?[col_name]]]
如果不加任何選項,默認(rèn)情況下會顯示所有數(shù)據(jù)庫。
常用選項:
1. –count (顯示數(shù)據(jù)庫和表的統(tǒng)計信息)
如果不指定數(shù)據(jù)庫,則顯示每個數(shù)據(jù)庫的名稱、表數(shù)量、記錄數(shù)量;
如果指定數(shù)據(jù)庫,則顯示指定數(shù)據(jù)庫的每個表名、字段數(shù)量,記錄數(shù)量;
如果指定具體數(shù)據(jù)庫中的具體表,則顯示表的字段信息。
2. -k 或者 –keys (顯示指定表中的所有索引)
此選項顯示了兩部分內(nèi)容,一部分是指定表的表結(jié)構(gòu),另一部分中是指定表的當(dāng)前索引信息
3. -i 或者 –status (顯示表的一些狀態(tài)信息)
九、perror (錯誤代碼查看工具)
在 MySQL 的使用過程中,可能會出現(xiàn)各種各樣的 error。這些 error 有些是由于操作系統(tǒng)引起的,比如文件或者目錄不存在;有些則是由于存儲引擎使用不當(dāng)引起的。這些 error 一般都有一個代碼,類似于 “error:#” 或者 “Errcode:#”,“#” 代表具體的錯誤號。perror 的作用就是解釋這些錯誤代碼的詳細(xì)含義:
perror?[options]?[errorcode?[errorcode]] zj@bogon:/usr/local/mysql/bin$?perror?30 OS?error?code?30:?Read-only?file?system zj@bogon:/usr/local/mysql/bin$?perror?60 OS?error?code?60:?Device?not?a?stream zj@bogon:/usr/local/mysql/bin$?perror?30?60 OS?error?code?30:?Read-only?file?system OS?error?code?60:?Device?not?a?stream
總結(jié)