版權聲明:本文由王珏原創文章,轉載請註明出處:
文章原文連接:https://www.qcloud.com/community/article/261mysql
來源:騰雲閣 https://www.qcloud.com/communitysql
本文對mysql5.6.24 mysqldump工具作了簡要分析,流程調用序列以下圖所示:
數據庫
流程分析:安全
get_options
:
獲取mysql參數網絡
connect_to_db
:
鏈接mysqlsession
write_header
:
寫入文件頭,保存源數據庫原始變量值:字符集、時區、SQL mode等併發
-- 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:app
執行條件:socket
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 */;
命令行 | 描述 |
---|---|
--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 articles DISABLE 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格式的輸出。 |
-- 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