MySQL中的常用工具的實例總結(jié)

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é)

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點(diǎn)贊9 分享