Mysqldump源碼分析

版權聲明:本文由王珏原創文章,轉載請註明出處: 
文章原文連接:https://www.qcloud.com/community/article/261mysql

來源:騰雲閣 https://www.qcloud.com/communitysql

 

Mysqldump源碼分析

王珏 標籤: MySQL數據庫

2016-12-13 15:41:13 21安全

本文對mysql5.6.24 mysqldump工具作了簡要分析,流程調用序列以下圖所示:
網絡

流程分析:session

get_options
獲取mysql參數併發

connect_to_db
鏈接mysqlapp

write_header
寫入文件頭,保存源數據庫原始變量值:字符集、時區、SQL mode等socket

-- MySQL dump 10.13  Distrib 5.6.24, for Linux (x86_64)

--

-- Host: localhost    Database: test

-- ------------------------------------------------------

-- Server version       5.6.24-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 utf8 */;

/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;

/*!40103 SET TIME_ZONE='+00:00' */;

/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;

/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;

/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;

/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;

do_stop_slave_sql:函數

執行條件:

if (opt_slave_data && do_stop_slave_sql(mysql))

goto err;

若是設置--dump-slave,執行STOP SLAVE SQL_THREAD

do_flush_tables_read_lock:

執行條件:

if ((opt_lock_all_tables || opt_master_data ||

       (opt_single_transaction && flush_logs)) &&

      do_flush_tables_read_lock(mysql))

    goto err;

執行兩次FLUSH,第二次加讀鎖:

FLUSH TABLES;

FLUSH TABLES WITH READ LOCK;

get_bin_log_name:

執行條件:

if (opt_delete_master_logs)

  {

    if (get_bin_log_name(mysql, bin_log_name, sizeof(bin_log_name)))

     goto err;

  }

若是設置delete-master-logs,dump完畢須要刪除master binlog,首先須要保存當前的binlog信息:

經過SHOW MASTER STATUS;獲取master binlog信息;

start_transaction:

執行條件:

if (opt_single_transaction && start_transaction(mysql))

    goto err;

設置隔離級別爲可重複讀:

SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ;

開啓一個事務:START TRANSACTION WITH CONSISTENT SNAPSHOT;

add_stop_slave:

執行條件:

if (opt_slave_apply && add_stop_slave())

    goto err;

若是設置了--apply-slave-statements參數,寫入STOP SLAVE;

process_set_gtid_purged:

執行條件:

if (gtid_mode_val && strcmp(gtid_mode_val, "OFF"))

  {

add_set_gtid_purged(mysql_con);

  }

若是開啓gtid,則狀況GTID_PURGED變量:

SET @@GLOBAL.GTID_PURGED=

do_show_master_status:

執行條件:

if (opt_master_data && do_show_master_status(mysql))

    goto err;

若是設置了--master_data 參數,記錄當前日誌和位置:

SHOW MASTER STATUS;

CHANGE MASTER TO MASTER_LOG_FILE=%s, MASTER_LOG_POS=%s;

do_show_slave_status:

執行條件:

if (opt_slave_data && do_show_slave_status(mysql))

    goto err;

若是這個--dump-slave參數,經過slave獲取對應master日誌文件和位置:

SHOW SLAVE STATUS;

CHANGE MASTER TO MASTER_LOG_FILE=%s, MASTER_LOG_POS=%s;

do_unlock_tables:

執行條件:

if (opt_single_transaction && do_unlock_tables(mysql)) /* unlock but no commit! */

    goto err;

若是以前有加鎖,如今釋放:

UNLOCK TABLES;

dump_all_tablespaces:

執行條件:

if (opt_alltspcs)

    dump_all_tablespaces();

若是設置了--all-tablespaces,dump表空間:

從information_schema.FILES獲取表空間信息;

dump_all_databases:

執行條件:

if (opt_alldbs)

  {

    dump_all_databases();

  }

若是設置了--all-databases,dump全部庫表:

1.獲取全部數據庫:SHOW DATABASES;

2.排除information_schema、performance_schema等系統庫;

3.dump庫中全部表;

3.一、Use database,並打印頭信息:

--

-- Current Database: `test`

--

3.二、若是設置了--lock-tables,則LOCK TABLES xxx READ;

3.三、若是設置了--flush-logs, 則FLUSH LOGS;

3.四、若是設置了--single-transaction, 則SAVEPOINT sp;

3.五、逐一dump每一個表:dump_all_tables_in_db;

3.5.一、 Use database切換目標數據庫;

3.5.二、 獲取數據庫Create語句:SHOW CREATE DATABASE IF NOT EXISTS;

3.5.三、若是設置--add-drop-database, 輸出DROP DATABASE IF EXISTS xxx;

3.5.四、輸出CREATE DATABASE IF NOT EXISTS xxx;

3.5.五、調用dump_table dump表結構和數據;

3.5.5.一、調用get_table_structure獲取表結構:

SELECT`COLUMN_NAME`AS`Field`,`COLUMN_TYPE`AS`Type`,`IS_NULLABLE`AS`Null`,`COLUMN_KEY`AS
`Key`,`COLUMN_DEFAULT`AS`Default`,`EXTRA`AS`Extra`,`COLUMN_COMMENT`AS`Comment`FROM`
INFORMATION_SCHEMA`.`COLUMNS`WHERETABLE_SCHEMA='%s'ANDTABLE_NAME='%s';

3.5.5.1.一、若是設置--add-drop-table ,輸出DROP TABLE IF EXISTS;

3.5.5.1.二、若是沒有設置--no-create-info, 執行show create table xxx,輸出建表語句;

3.5.5.1.三、執行show fields from xxx,獲取表的字段信息;

3.5.5.1.四、執行show keys from xxx,獲取表索引信息;

3.5.5.1.五、執行show table status like xxx,獲取表引擎以及options信息;

3.5.5.1.六、經過以上信息獲取表建立語句;

3.5.5.二、執行SELECT * FROM xxx [ WHERE xxx=yyy ORDER BY xxx]獲取表中數據;

3.5.5.三、若是設置--add-locks,輸出LOCK TABLES xxx WRITE;

3.5.5.四、若是設置--disable-keys,輸出 ALTER TABLE xxx DISABLE KEYS;

3.5.5.五、根據表中數據,生成INSERT/REPLACE INTO 輸出到文件;

3.5.5.六、若是設置--disable-keys,輸出 ALTER TABLE xxx ENABLE KEYS;

3.5.5.七、若是設置--add-locks,輸出UNLOCK TABLES;

3.5.六、調用dump_triggers_for_table表關聯的數據庫;

3.5.6.一、執行SHOW TRIGGERS LIKE xxx,獲取全部觸發器;

3.5.6.二、執行SHOW CREATE TRIGGER xxx,獲取觸發器建立語句並輸出到文件;

3.5.七、若是設置了--single-transaction, 則ROLLBACK TO SAVEPOINT sp;

3.5.八、若是設置了--events,調用dump_events_for_db 獲取定時器信息;

3.5.8.一、執行show events,獲取全部定時器;

3.5.8.二、執行SHOW CREATE EVENT,獲取定時器建立語句並輸出到文件;

3.5.九、若是設置了--routines,調用dump_routines_for_db 獲取存儲過程、自定義函數信息;

3.5.9.一、執行SHOW FUNCTION/PROCEDURE STATUS WHERE Db = xxx,獲取全部存儲過程、自定義函數;

3.5.9.二、執行SHOW CREATE FUNCTION/PROCEDURE xxx,獲取全部存儲過程、自定義函數建立語句;

3.5.十、若是設置了--lock-tables,則執行UNLOCK TABLES;

3.5.十一、若是設置了--flush-privileges,輸出FLUSH PRIVILEGES;

3.六、逐一dump每一個表上的視圖:dump_all_views_in_db

3.6.一、調用get_view_structure獲取視圖結構:

3.6.1.一、獲取數據庫下全部表;

3.6.1.二、執行SHOW CREATE TABLE xxx和 information_schema.views中信息獲取視圖建立語句;

dump_selected_tables:

執行條件:

if (argc > 1 && !opt_databases)

    {

      dump_selected_tables(*argv, (argv + 1), (argc - 1));

    }

若是沒有設置--databases,則dump指定一個數據庫的多個表;

dump_databases:

執行條件:

if (argc > 1 && !opt_databases)

    {

    }

    else

    {

      /* One or more databases, all tables */

      dump_databases(argv);

    }

若是設置--databases,則dump指定多個數據庫;

do_start_slave_sql:

執行條件:

/* if --dump-slave , start the slave sql thread */

  if (opt_slave_data && do_start_slave_sql(mysql))

    goto err;

若是設置--dump-slave,如今須要執行START SLAVE啓動從複製進程:

set_session_binlog:

打開binlog;

add_slave_statements:

執行條件:

if (opt_slave_apply && add_slave_statements())

    goto err;

若是設置了--apply-slave-statements參數,寫入START SLAVE;

purge_bin_logs_to:

執行條件:

if (opt_delete_master_logs && purge_bin_logs_to(mysql, bin_log_name))

    goto err;

若是設置--delete-master-logs, purge掉舊日誌:

PURGE BINARY LOGS TO binlog_xxx;

dbDisconnect:

斷開mysql鏈接;

write_footer:

寫入文件結尾:

/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;



/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;

/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;

/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;

/*!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 */;

附錄一:mysqldump相關參數:

命令行 描述
--add-drop-database 在CREATE DATABASE前DROP DATABASE。
--add-drop-table 在CREATE TABLE前DROP TABLE。
--add-drop-trigger 在CREATE TRIGGER 前DROP TRIGGER。
--add-locks 在INSERT先後分別加LOCK TABLES和UNLOCK TABLES。
--all-databases 備份全部庫中全部表。
--allow-keywords 容許列名包含關鍵字。
--apply-slave-statements 在CHANGE MASTER前加 STOP SLAVE在最後添加 START SLAVE。
--bind-address=ip_address 對於有多個網絡接口的機器選擇使用指定的接口鏈接MySQL。
--comments 爲備份文件添加註釋。
--compact 禁用結構化註釋及首尾結構體。開啓--skip-add-drop-table、--skip-add-locks、--skip-comments、--skip-disable-keys、--skip-set-charset以產生更緊促的輸出。
--compatible=name[,name,...] 產生與其餘數據庫或者老版MySQL兼容的備份文件,可用的值有ansi, mysql323, mysql40, postgresql, Oracle, mssql, db2, maxdb, no_key_options, no_table_options, no_field_options。可同時使用多個以逗號分隔的值。
--complete-insert 使用帶有列名的完整INSERT。
--create-options 在CREATE TABLE中使用MySQL特定的表選項。
--databases 備份多個數據庫,選項後跟多個庫名。備份文件中會包含USE db_name。
--debug[=debug_options] 寫debug日誌。
--debug-check 程序退出時打印一些調試信息
--debug-info 程序退出時打印一些有關cpu和memory的統計信息。
--default-auth=plugin 指明要使用的客戶端認證插件
--default-character-set=charset_name 設置默認字符集
--delayed-insert 使用INSERT DELAYED 而非INSERT。MySQL5.6.6中INSERT DELAYED已不被推薦使用,相應的該選項也未來將來的mysqldump中移除。
--delete-master-logs 在master上備份後刪除其二進制日誌。該選項會自動激活—master-data選項。
--disable-keys 對每一個表在INSERT先後分別加/!40000 ALTER TABLE articlesDISABLE KEYS /和/!40000 ALTER TABLE articles ENABLE KEYS /。可以使從備份文件恢復數據更快,由於索引在全部行插入後建立。僅對於MyISAM表的非惟一索引。
--dump-date 若使用了—comments選項則會在末尾顯示-- Dump completed on xxxxxx,以標記時間。
--dump-slave[=value] 會在輸出結果添加包含master二進制文件和位置信息的CHANGE MASTER語句。與—master-data選項相似,但用於複製slave以創建另外的與其同master的slave。會開啓—lock-all-tables除非使用了—single-transaction。會在dump前中止slave的SQL thread在dump後開始該線程。可與--apply-slave-statements、--include-master-host-port結合使用。
--events 爲備份的數據庫備份事件。
--extended-insert 使用包含多個值列表的多行INSERT。
--fields-enclosed-by=string 與—tab選項結合使用。指明輸出文件中的filed以何種字符串enclosed,與 LOAD DATA INFILE對應的選項意義相同。
--fields-escaped-by 同上
--fields-optionally-enclosed-by=string 同上
--fields-terminated-by=string 同上
--flush-logs 在備份前刷新MySQL日誌。需RELOAD權限。若同時備份多個數據庫,如使用—all-database或—database,則對於每一個備份的數據庫都會刷新一第二天志,除非使用了—master-data或—lock-all-tables,此時日誌僅在鎖定表時刷新一次。若想讓備份和刷新日誌同時進行需結合使用—lock-all-tables或—master-data。
--flush-privileges 在備份了mysql這個數據庫後發出FLUSH PRIVILEGES語句。本分mysql庫或依賴mysql庫中數據的庫時需使用。
--help 顯示幫助信息
--hex-blob 將二進制列,如,BINARY,VARBINARY,BLOB,BIT備份爲十六進制形式。
--host 要鏈接的主機
--ignore-table=db_name.tbl_name 指明不備份的表
--include-master-host-port 使用了--dump-slave時在CHANGE MASTER語句中加入MASTER_HOST和MASTER_PORT。
--insert-ignore 用INSERT IGNORE 而非INSERT ,以忽略重複的數據。
--lines-terminated-by=string 與—tab選項結合使用。與LOAD DATA INFILE的LINE意義相同。指明行由何種字符串terminated。
--lock-all-tables 經過在備份期前加read lock鎖定全部庫的全部表。會自動關閉—single-transaction和—lock-tables。
--lock-tables 對於備份的庫在備份前鎖定將被備份的屬於該庫的表。使用READ LOCAL鎖定以容許MyIASM表的併發插入。對於事務型的表請使用—single-transaction而非—lock-tables。另外該選項不能保證備份文件上各數據庫間的表在邏輯上是一致的,由於市委每一個庫單獨鎖定表。一些選項如—opt會自動開啓—locak-tables,可經過使用在其後使用--skip-lock-tables規避。
--log-error=file_name 在給定文件中附加警告和錯誤信息。
--login-path=name 從.mylogin.cnf登陸文件讀取登陸參數。可經過mysql_config_editor建立登陸文件。
--master-data[=value] 在輸出中添加二進制日誌名和位置。會開啓—lock-all-tables除非也是用了—single-transaction。會自動關閉—lock-tables。
--max_allowed_packet=value 可發送或接收的最大包分組長度。
--net_buffer_length=value TCP/IP及socket通信的buffer大小。
--no-autocommit 在INSERT先後添加set autocommit=0和commit。
--no-create-db 若使用了—all-databases或—databases,不在輸出中添加CREATE DATABASE。
--no-create-info 不使用CREATE TABLE 重建備份的表。
--no-data 只備份結構不備份數據。
--no-set-names 同--skip-set-charset不設置charset。
--no-tablespaces 不在輸出中使用CREATE LOG FILE和CREATE TABLESPACE。
--opt --add-drop-table, --add-locks, --create-options, --quick, --extended-insert, --lock-tables, --set-charset,和--disable-keys幾個選項合起來的簡寫形式。
--order-by-primary 將備份的表中的行按主鍵排序或者第一個惟一鍵排序。當備份MyISAM表且將被載入到InnoDB表時頗有用,打包備份自己的時間會較長。
--password[=password] 鏈接主機的密碼
--pipe 在Windows上經過命名管道鏈接server。
--plugin-dir=path 插件存放目錄。
--port=port_num 經過主機所使用的端口。
--protocol=type 鏈接主機所使用的協議。
--quick 備份時逐行讀取表而非一次所有行後緩衝在內存中。在備份大表時有用。
--quote-names 使用「`」包圍數據庫名、表名、列名等標識符。若使用了ANSI_QUOTES則用「」」包圍。特別的,可能須要在—compatible後開啓該選項。
--replace 使用REPLACE而非INSERT。
--result-file=file 將結果輸出帶指定的文件。
--routines 備份routines(存儲過程和函數)。
--set-charset 添加SET NAMES default_character_set。默認開啓。
--set-gtid-purged=value 肯定是否在結果中添加SET @@GLOBAL.GTID_PURGED。若爲ON但在server中沒有開啓GTID則發生錯誤。若OFF則什麼都不作。若AUTO則server中開啓GTID那麼添加上述語句,反之不加。
--single-transaction 在備份前設置事務隔離級別爲REPEATABLE READ並向server發送START TRANSACTION語句。僅對事務型表如InnoDB有用。與--ock-tables互斥。對於大文件備份--single-transaction與--quick結合使用。
--skip-add-drop-table 禁用--add-drop-table。
--skip-add-locks 禁用--add-locks。
--skip-comments 禁用—comments。
--skip-compact 禁用—compact。
--skip-disable-keys 禁用—disable-keys。
--skip-extended-insert 禁用--extended-insert。
--skip-opt 禁用--skip-opt。
--skip-quick 禁用--quick。
--skip-quote-names 禁用--quote-names。
--skip-set-charset 禁用—set-charset。
--skip-triggers 不備份triggers
--skip-tz-utc 禁用-- tz-utc
--socket=path 鏈接本機server所使用的socket。
--ssl-ca=file_name 包含信任的SSL CAs列表的文件名。
--ssl-capath=dir_name 包含PEM格式的可信任SSL CA證書的目錄。
--ssl-cert=file_name 用於創建安全鏈接的SSL證書文件的名字。
--ssl-cipher=cipher_list 一系列用於SSL加密的所容許的密碼。
--ssl-crl=file_name 包含證書廢止列表的文件名。
--ssl-crlpath=dir_name 包含證書廢止列表的文件的目錄。
--ssl-key=file_name 用於創建安全鏈接的SSL key文件名。
--ssl-verify-server-cert The server's Common Name value in its certificate is verified against the host name used when connecting to the server
--tab=path 對於每一個備份的表mysqldump建立一個包含CREATE TABLE語句的tbl_name.sql,而被鏈接的server會建立一個由tab鍵分隔的包含相應數據的tbl_name.txt。選項值爲將被寫入的目錄。當mysqldump與mysqld處於同一主機時使用。不然tbl_name.txt文件會被寫入遠程主機相應的目錄。當使用了—databases或—all-databases時該選項不適用。
--tables 覆蓋--databases 或 -B 選項。該選項後的名稱參數均被認爲是表名。
--triggers 爲每一個備份的表備份trigger。
--tz-utc 在備份文件中添加SET TIME_ZONE='+00:00'。
--user=user_name 鏈接server所使用的用戶名
--verbose 詳細模式。
--version 顯示版本信息並退出。
--where='where_condition' 僅備份與where條件中匹配的行。
--xml 產生XML格式的輸出。

附錄二:mysqldump文件:

-- MySQL dump 10.13  Distrib 5.6.24, for Linux (x86_64)

--

-- Host: localhost    Database: test

-- ------------------------------------------------------

-- Server version  5.6.24-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 utf8 */;

/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;

/*!40103 SET TIME_ZONE='+00:00' */;

/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;

/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;

/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;

/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;



--

-- Position to start replication or point-in-time recovery from

--



CHANGE MASTER TO MASTER_LOG_FILE='binlog.000013', MASTER_LOG_POS=3209;



--

-- Current Database: `test`

--



CREATE DATABASE /*!32312 IF NOT EXISTS*/ `test` /*!40100 DEFAULT CHARACTER SET latin1 */;

USE `test`;

--

-- Table structure for table `abc`

--



DROP TABLE IF EXISTS `abc`;

/*!40101 SET @saved_cs_client     = @@character_set_client */;

/*!40101 SET character_set_client = utf8 */;

CREATE TABLE `abc` (

  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,

  `name` varchar(65000) DEFAULT NULL,

  PRIMARY KEY (`id`)

) ENGINE=InnoDB AUTO_INCREMENT=201 DEFAULT CHARSET=latin1 ROW_FORMAT=COMPACT;

/*!40101 SET character_set_client = @saved_cs_client */;



--

-- Dumping data for table `abc`

--



/*!40000 ALTER TABLE `abc` DISABLE KEYS */;

INSERT INTO `abc` VALUES (24,'111'),(25,'qwwqee'),(26,'dfdsf'),(27,'23'),(28,'123'),(29,'123'),(34,'rer'),(35,'fdfd'),(50,'wre'),(51,'re'),(52,'trt'),(100,'dddd'),(200,'200'),(231,'we');

/*!40000 ALTER TABLE `abc` ENABLE KEYS */;

/*!50003 SET @saved_cs_client      = @@character_set_client */ ;

/*!50003 SET @saved_cs_results     = @@character_set_results */ ;

/*!50003 SET @saved_col_connection = @@collation_connection */ ;

/*!50003 SET character_set_client  = utf8 */ ;

/*!50003 SET character_set_results = utf8 */ ;

/*!50003 SET collation_connection  = utf8_general_ci */ ;

/*!50003 SET @saved_sql_mode       = @@sql_mode */ ;

/*!50003 SET sql_mode              = 'STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION' */ ;

DELIMITER ;;

/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 trigger abc_trigger before insert on abc for each row

begin set @x = "hello trigger";

end */;;

DELIMITER ;

/*!50003 SET sql_mode              = @saved_sql_mode */ ;

/*!50003 SET character_set_client  = @saved_cs_client */ ;

/*!50003 SET character_set_results = @saved_cs_results */ ;

/*!50003 SET collation_connection  = @saved_col_connection */ ;



--

-- Temporary view structure for view `abc_view1`

--



DROP TABLE IF EXISTS `abc_view1`;

/*!50001 DROP VIEW IF EXISTS `abc_view1`*/;

SET @saved_cs_client     = @@character_set_client;

SET character_set_client = utf8;

/*!50001 CREATE VIEW `abc_view1` AS SELECT

 1 AS `id`,

 1 AS `name`*/;

SET character_set_client = @saved_cs_client;



--

-- Table structure for table `hello`

--



DROP TABLE IF EXISTS `hello`;

/*!40101 SET @saved_cs_client     = @@character_set_client */;

/*!40101 SET character_set_client = utf8 */;

CREATE TABLE `hello` (

  `name` varchar(20) DEFAULT NULL,

  `num` int(11) DEFAULT NULL

) ENGINE=InnoDB DEFAULT CHARSET=latin1;

/*!40101 SET character_set_client = @saved_cs_client */;



--

-- Dumping data for table `hello`

--



/*!40000 ALTER TABLE `hello` DISABLE KEYS */;

INSERT INTO `hello` VALUES ('qqq',888),('aaa',888),('www',888),('sdfsdf',888),('erere',888),('25',888);

/*!40000 ALTER TABLE `hello` ENABLE KEYS */;



--

-- Table structure for table `myisam_test`

--



DROP TABLE IF EXISTS `myisam_test`;

/*!40101 SET @saved_cs_client     = @@character_set_client */;

/*!40101 SET character_set_client = utf8 */;

CREATE TABLE `myisam_test` (

  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,

  `name` varchar(100) DEFAULT NULL,

  PRIMARY KEY (`id`)

) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=latin1;

/*!40101 SET character_set_client = @saved_cs_client */;



--

-- Dumping data for table `myisam_test`

--



/*!40000 ALTER TABLE `myisam_test` DISABLE KEYS */;

INSERT INTO `myisam_test` VALUES (1,'qqq');

/*!40000 ALTER TABLE `myisam_test` ENABLE KEYS */;



--

-- Table structure for table `t1`

--



DROP TABLE IF EXISTS `t1`;

/*!40101 SET @saved_cs_client     = @@character_set_client */;

/*!40101 SET character_set_client = utf8 */;

CREATE TABLE `t1` (

  `year_col` int(11) DEFAULT NULL,

  `some_data` int(11) DEFAULT NULL

) ENGINE=InnoDB DEFAULT CHARSET=latin1

/*!50100 PARTITION BY RANGE (year_col)

(PARTITION p0 VALUES LESS THAN (1991) ENGINE = InnoDB,

 PARTITION p1 VALUES LESS THAN (1995) ENGINE = InnoDB,

 PARTITION p2 VALUES LESS THAN (1999) ENGINE = InnoDB,

 PARTITION p5 VALUES LESS THAN MAXVALUE ENGINE = InnoDB) */;

/*!40101 SET character_set_client = @saved_cs_client */;



--

-- Dumping data for table `t1`

--



/*!40000 ALTER TABLE `t1` DISABLE KEYS */;

/*!40000 ALTER TABLE `t1` ENABLE KEYS */;



--

-- Current Database: `test`

--



USE `test`;



--

-- Final view structure for view `abc_view1`

--



/*!50001 DROP VIEW IF EXISTS `abc_view1`*/;

/*!50001 SET @saved_cs_client          = @@character_set_client */;

/*!50001 SET @saved_cs_results         = @@character_set_results */;

/*!50001 SET @saved_col_connection     = @@collation_connection */;

/*!50001 SET character_set_client      = utf8 */;

/*!50001 SET character_set_results     = utf8 */;

/*!50001 SET collation_connection      = utf8_general_ci */;

/*!50001 CREATE ALGORITHM=UNDEFINED */

/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */

/*!50001 VIEW `abc_view1` AS select `abc`.`id` AS `id`,`abc`.`name` AS `name` from `abc` */;

/*!50001 SET character_set_client      = @saved_cs_client */;

/*!50001 SET character_set_results     = @saved_cs_results */;

/*!50001 SET collation_connection      = @saved_col_connection */;

/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;

/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;

/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;

/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;

/*!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 2016-11-18 11:07:25
相關文章
相關標籤/搜索