前言
本文主要給大家介紹了關(guān)于MySQL常用工具的相關(guān)內(nèi)容,分享出來(lái)供大家參考學(xué)習(xí),下面話不多說(shuō)了,來(lái)一起看看詳細(xì)的介紹吧。
一、mysql (客戶端連接工具)
使用最頻繁的連接數(shù)據(jù)庫(kù)的客戶端工具,使用語(yǔ)法如下:
mysql [options] [database]
這里的 options 表示 mysql 的可用選項(xiàng),可以一次寫一個(gè)或者多個(gè),甚至可以不寫;database 表示連接的數(shù)據(jù)庫(kù),一次只能寫一個(gè)或者不寫,如果不寫,連接成功后需要用 “use database”命令來(lái)進(jìn)入要操作的數(shù)據(jù)庫(kù)。
1. 連接選項(xiàng)
選項(xiàng)的表達(dá)方式有多種,例如:
# 這三種方式都是可以的
shell> mysql -u root
shell> mysql -uroot
shell> mysql -user=root
1. 連接選項(xiàng)
- -u, --user=name 指定用戶名
- -p, --password[=name] 指定密碼
- -h, --host=name 指定服務(wù)器 IP 或者域名
- -P, --port=# 指定連接端口
一般在在本地環(huán)境,為了方便,可以在 配置文件 my.cnf 中配置當(dāng)前用戶和密碼,配置好后,直接執(zhí)行 mysql 就可以連接到數(shù)據(jù)庫(kù):
[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)境中,為了安全起見(jiàn),一般需要?jiǎng)?chuàng)建應(yīng)用賬號(hào)并賦予適當(dāng)權(quán)限,而不會(huì)用 root 直接操作數(shù)據(jù)庫(kù);默認(rèn)端口(3306)一般不要使用,可以改為任意操作系統(tǒng)未占用的端口。
2. 客戶端字符集選項(xiàng)
--default-character-set=charset-name
作為服務(wù)器的字符集選項(xiàng),這個(gè)選項(xiàng)也可以配置在 my.cnf 的 [mysqld] 組中。同樣,作為客戶端字符集選項(xiàng),也可以配置在 my.cnf 的 [mysql]組中,這樣每次用 mysql 工具連接數(shù)據(jù)庫(kù)的時(shí)候就會(huì)自動(dòng)使用此客戶端字符集。當(dāng)然,也可以在 mysql 的命令行中手工指定客戶端字符集:
shell> mysql -u user -default-character-set=charset
相當(dāng)于在 mysql 客戶端連接成功后執(zhí)行:
3. 執(zhí)行選項(xiàng)
-e, --execute=name // 執(zhí)行 sql 語(yǔ)句并退出
此選項(xiàng)可以直接在 MySQL 客戶端執(zhí)行 sql 語(yǔ)句,對(duì)于一些批處理腳本,這是方式尤其方便:
zj@bogon:~$ mysql mysql -e "select user,host from user"
+-----------+-----------+
| user | host |
+-----------+-----------+
| root | 127.0.0.1 |
| mysql.sys | localhost |
| root | localhost |
+-----------+-----------+
可以按這種方式連續(xù)執(zhí)行多個(gè) sql 語(yǔ)句,用英文分號(hào)(;)隔開(kāi)。
4. 格式化選項(xiàng)
- -E, --vertical 將輸出方式按照字段順序豎著顯示
- -s, --silent 去掉 mysql 中的線條框顯示
“-E” 選項(xiàng)類似于 mysql 里面執(zhí)行 sql 語(yǔ)句后加 “G”, 經(jīng)常和 -e 一起使用。
二、myisampack (myisam 表壓縮工具)
myisampack 是一個(gè)表壓縮工具,可以使用很高的壓縮率來(lái)對(duì) myisam 存儲(chǔ)引擎的表進(jìn)行壓縮,使得壓縮后的表占用比壓縮前小得多的空間。但是壓縮后的表將成為一個(gè)只讀表,不能進(jìn)行 DML 操作。
三、mysqladmin(MySQL 管理工具)
mysqladmin 是一個(gè)執(zhí)行管理操作的客戶端程序??梢杂盟鼇?lái)檢查服務(wù)器的配置和當(dāng)前狀態(tài)、創(chuàng)建并刪除數(shù)據(jù)庫(kù)等。它的功能與 mysql 客戶端非常類似,主要區(qū)別在于它更側(cè)重于一些管理方面的功能。
使用語(yǔ)法:
shell> mysqladmin [options] command [command-options]...
可以執(zhí)行的命令如下:
create databasename Create a new database 新建數(shù)據(jù)庫(kù)
debug Instruct server to write debug information to log 把 debug 日志記錄到日志文件中
drop databasename Delete a database and all its tables 刪除數(shù)據(jù)庫(kù)
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)制格式保存,所以如果想要檢查這些文件的文本格式,就會(huì)用到 mysqlbinlog 日志管理工具。
用法如下:
shell> mysqlbinlog [option] log-file1 log-file2...
option 有很多選項(xiàng):
- -d,--database=name: 指定數(shù)據(jù)庫(kù)名稱,只列出指定的數(shù)據(jù)庫(kù)相關(guān)操作。
- -o, --offset=#: 忽略日志中的前 n 行命令。
- -r, --result-file=name: 將輸出的文本格式日志輸出到指定文件
- -s, --short-form: 顯示簡(jiǎn)單格式,省略掉一些信息。
- --start-datetime=name --stop-datetime=name: 指定日期間隔內(nèi)的所有日志。
- --start-position=# --stop-position=#: 指定位置間隔內(nèi)的所有日志
1. 示例準(zhǔn)備:創(chuàng)建新日志,新建庫(kù) 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ù),顯示所有日志
注意:必須擁有訪問(wèn)目標(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 選項(xiàng),將只顯示 t2 數(shù)據(jù)庫(kù)的操作日志
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 選項(xiàng), 忽略掉前 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 選項(xiàng),將上面的結(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 選項(xiàng)將上面的內(nèi)容進(jìn)行簡(jiǎ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” 選項(xiàng)顯示 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'
開(kāi)始日期和結(jié)束日期可以只寫一個(gè)。如果只寫開(kāi)始日期,表示范圍開(kāi)始日期到日志結(jié)束;如果只寫結(jié)束日期,表示日志開(kāi)始到指定的結(jié)束日期。
8. --start-position=# 和 --stop-position=#, 與日期范圍類似,不過(guò)可以更精確的表示范圍。
sudo ./mysqlbinlog --no-defaults /data/mysql/mysql-bin.000001 --start-position=4 --stop-datetime=100
五、mysqlcheck (myisam 表維護(hù)工具)
mysqlcheck 工具可以檢查和修復(fù) myisam 表,還可以優(yōu)化和分析表。實(shí)際上,它集成了 mysql 工具中的 check、repair、analyze、optimize
有 3 種方式可以來(lái)調(diào)用 mysqlcheck:
shell> mysqlcheck [options] db_name [tables]
shell> mysqlcheck [options] --database DB1 [DB2 DB3...]
shell> mysqlcheck [options] --all-databse
option 中有以下常用選項(xiàng):
- -c, --check (檢查表)
- -r, --repair (修復(fù)表)
- -a, --analyze (分析表)
- -o, --optimize (優(yōu)化表)
其中,默認(rèn)選項(xiàng)是 -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 表的存儲(chǔ)引擎為 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 客戶端工具用來(lái)備份數(shù)據(jù)庫(kù)或在不同數(shù)據(jù)庫(kù)之間進(jìn)行數(shù)據(jù)遷移。備份內(nèi)容包含創(chuàng)建表或裝載表的 sql 語(yǔ)句。
有三中方式來(lái)調(diào)用 mysqldump:
mysqldump [OPTIONS] database [tables] // 備份單個(gè)數(shù)據(jù)庫(kù)或者庫(kù)中部分?jǐn)?shù)據(jù)表
mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...] //備份指定的一個(gè)或者多個(gè)數(shù)據(jù)庫(kù)
mysqldump [OPTIONS] --all-databases [OPTIONS] // 備份所有數(shù)據(jù)庫(kù)
1. 連接選項(xiàng)
- -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)容選項(xiàng)
- --add-drop-database 每個(gè)數(shù)據(jù)庫(kù)創(chuàng)建語(yǔ)句前加上 drop database 語(yǔ)句
- --add-drop-table 在每個(gè)表創(chuàng)建語(yǔ)句前加上 drop table 語(yǔ)句
在默認(rèn)情況下,這兩個(gè)參數(shù)都自動(dòng)加上。
- -n, --no-create-db 不包含數(shù)據(jù)庫(kù)的創(chuàng)建語(yǔ)句
- -t, --no-create-info 不包含數(shù)據(jù)表的創(chuàng)建語(yǔ)句
- -d, --no-data 不包含數(shù)據(jù)
3. 輸出格式選項(xiàng)
--compact 選項(xiàng)使得輸出結(jié)果簡(jiǎn)潔,不包括默認(rèn)選項(xiàng)中的各種注釋。
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 選項(xiàng)使得輸出文件中的 insert 語(yǔ)句包括字段名稱,默認(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 選項(xiàng)將指定數(shù)據(jù)表中的數(shù)據(jù)備份為單純的數(shù)據(jù)文本和建表 sql 兩個(gè)文件,經(jīng)常和下面幾個(gè)選項(xiàng)一起配合使用,將數(shù)據(jù)導(dǎo)出為指定格式顯示。
- -T, --tab=name 備份數(shù)據(jù)和建表語(yǔ)句
- --fileds-terminated-by=name 域分隔符
- --fileds-enclosed-by=name 域引用符
- --fileds-optionally-enclosed-by=name 域可選引用符
- --fileds-escaped-by=name 轉(zhuǎn)義字符
示例:將 t2 數(shù)據(jù)庫(kù)中的表 emp 導(dǎo)出為單純的數(shù)據(jù)文本和建表 sql 兩個(gè)文件,并存放在當(dāng)前路徑下的 bak 目錄下。
1.創(chuàng)建備份目錄
root@bogon:/usr/local/mysql/bin# mkdir bak
2. 將 t2 數(shù)據(jù)庫(kù)下的表 emp 備份到 bak 目錄下
root@bogon:/usr/local/mysql/bin# ./mysqldump t2 emp -T ./bak
3. 查看 bak 目錄,發(fā)現(xiàn)兩個(gè)文件
root@bogon:/usr/local/mysql/bin# ls ./bak
emp.sql emp.txt
4. 查看兩個(gè)文件的內(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. 字符集選項(xiàng)
mysqldump 導(dǎo)出的數(shù)據(jù)的字符集使用的是 mysqld 啟動(dòng)時(shí)的默認(rèn)字符集,如果表的字符集用的不是默認(rèn)字符集,導(dǎo)出的數(shù)據(jù)就有可能出現(xiàn)亂碼。所以在導(dǎo)出時(shí),應(yīng)該先確定表的字符集,在導(dǎo)出時(shí)指定該字符集即可。
shell> mysqldump -uroot --compact --default-character-set=utf8 t2 emp > emp.sql
5. 其他常用選項(xiàng)
-F --flush-logs (備份前刷新日志)
加上此選項(xiàng)后,備份前將關(guān)閉就日志,生成新日志。使得進(jìn)行恢復(fù)的時(shí)候直接從新日志開(kāi)始進(jìn)行重做,大大方便了恢復(fù)過(guò)程。
-l --lock-tables (給所有表加讀鎖)
可以在備份期間使用,使得數(shù)據(jù)無(wú)法被更新,從而使備份的數(shù)據(jù)保持一致性,可以配合 -F 選項(xiàng)一起使用。
七、mysqlimport (數(shù)據(jù)導(dǎo)入工具)
mysqlimport 是客戶端數(shù)據(jù)導(dǎo)入工具,用來(lái)導(dǎo)入 mysqldump 加 -T 選項(xiàng)后導(dǎo)出的文本文件。
基本用法:
shell> mysqlimport [options] db_name textfile1
八、mysqlshow (數(shù)據(jù)庫(kù)對(duì)象查看工具)
mysqlshow 客戶端對(duì)象查找工具,用來(lái)很快的查找存在哪些數(shù)據(jù)庫(kù),數(shù)據(jù)庫(kù)中的表、表中的列或索引,和 mysql 客戶端工具很類似,不過(guò)有些特性是 mysql 客戶端工具所不具備的。
使用方法:
shell> mysqlshow [option] [db_name [tbl_name [col_name]]]
如果不加任何選項(xiàng),默認(rèn)情況下會(huì)顯示所有數(shù)據(jù)庫(kù)。
常用選項(xiàng):
1. --count (顯示數(shù)據(jù)庫(kù)和表的統(tǒng)計(jì)信息)
如果不指定數(shù)據(jù)庫(kù),則顯示每個(gè)數(shù)據(jù)庫(kù)的名稱、表數(shù)量、記錄數(shù)量;
如果指定數(shù)據(jù)庫(kù),則顯示指定數(shù)據(jù)庫(kù)的每個(gè)表名、字段數(shù)量,記錄數(shù)量;
如果指定具體數(shù)據(jù)庫(kù)中的具體表,則顯示表的字段信息。
2. -k 或者 --keys (顯示指定表中的所有索引)
此選項(xiàng)顯示了兩部分內(nèi)容,一部分是指定表的表結(jié)構(gòu),另一部分中是指定表的當(dāng)前索引信息
3. -i 或者 --status (顯示表的一些狀態(tài)信息)
九、perror (錯(cuò)誤代碼查看工具)
在 MySQL 的使用過(guò)程中,可能會(huì)出現(xiàn)各種各樣的 error。這些 error 有些是由于操作系統(tǒng)引起的,比如文件或者目錄不存在;有些則是由于存儲(chǔ)引擎使用不當(dāng)引起的。這些 error 一般都有一個(gè)代碼,類似于 “error:#” 或者 “Errcode:#”,“#” 代表具體的錯(cuò)誤號(hào)。perror 的作用就是解釋這些錯(cuò)誤代碼的詳細(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é)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來(lái)一定的幫助,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)腳本之家的支持。
您可能感興趣的文章:- 5個(gè)常用的MySQL數(shù)據(jù)庫(kù)管理工具詳細(xì)介紹
- Mysql導(dǎo)入導(dǎo)出工具M(jìn)ysqldump和Source命令用法詳解
- MYSQL ZIP免安裝版配置步驟及圖形化管理工具mysql-workbench
- MySQL性能分析工具profile使用教程
- Mysqlslap MySQL壓力測(cè)試工具 簡(jiǎn)單教程
- 利用Xtrabackup工具備份及恢復(fù)(MySQL DBA的必備工具)
- mysql中優(yōu)化和修復(fù)數(shù)據(jù)庫(kù)工具mysqlcheck詳細(xì)介紹
- Mysql自帶profiling性能分析工具使用分享
- 五款常用mysql slow log分析工具的比較分析
- mytop 使用介紹 mysql實(shí)時(shí)監(jiān)控工具