Mysql
mysqldump,保留從 show table status 列出的 update_time 和 modify_time 屬性
是否
mysqldump
保留由 輸出的create_time
和update_time
屬性show table status from
?如果沒有,是否有這樣做的選項?
從手冊看來,如果您導出到 XML,mysqldump 會保留此數據。
編輯:數據包含在導出中。我不確定它是否在另一端讀入。
有沒有辦法通過普通
.sql
轉儲來做到這一點?
無法手動重新載入 INFORMATION_SCHEMA。所有的表都是動態實體。例如,看
INFORMATION_SCHEMA.TABLES
:mysql> show create table INFORMATION_SCHEMA.TABLES\G *************************** 1. row *************************** Table: TABLES Create Table: CREATE TEMPORARY TABLE `TABLES` ( `TABLE_CATALOG` varchar(512) DEFAULT NULL, `TABLE_SCHEMA` varchar(64) NOT NULL DEFAULT '', `TABLE_NAME` varchar(64) NOT NULL DEFAULT '', `TABLE_TYPE` varchar(64) NOT NULL DEFAULT '', `ENGINE` varchar(64) DEFAULT NULL, `VERSION` bigint(21) unsigned DEFAULT NULL, `ROW_FORMAT` varchar(10) DEFAULT NULL, `TABLE_ROWS` bigint(21) unsigned DEFAULT NULL, `AVG_ROW_LENGTH` bigint(21) unsigned DEFAULT NULL, `DATA_LENGTH` bigint(21) unsigned DEFAULT NULL, `MAX_DATA_LENGTH` bigint(21) unsigned DEFAULT NULL, `INDEX_LENGTH` bigint(21) unsigned DEFAULT NULL, `DATA_FREE` bigint(21) unsigned DEFAULT NULL, `AUTO_INCREMENT` bigint(21) unsigned DEFAULT NULL, `CREATE_TIME` datetime DEFAULT NULL, `UPDATE_TIME` datetime DEFAULT NULL, `CHECK_TIME` datetime DEFAULT NULL, `TABLE_COLLATION` varchar(32) DEFAULT NULL, `CHECKSUM` bigint(21) unsigned DEFAULT NULL, `CREATE_OPTIONS` varchar(255) DEFAULT NULL, `TABLE_COMMENT` varchar(80) NOT NULL DEFAULT '' ) ENGINE=MEMORY DEFAULT CHARSET=utf8 1 row in set (0.00 sec) mysql>
這是一個臨時表。如果重新啟動mysql,它是如何填充的?顯然,它是在 mysql 啟動期間填充的。會包括什麼?檢索表的作業系統元數據。
讓我們看看作業系統中的 mysql.user
[root@*** ~]# ls -l /var/lib/mysql/mysql/user.* -rw-rw---- 1 mysql mysql 10466 Jun 5 2012 /var/lib/mysql/mysql/user.frm -rw-rw---- 1 mysql mysql 2144 Jul 15 23:29 /var/lib/mysql/mysql/user.MYD -rw-rw---- 1 mysql mysql 2048 Dec 10 18:25 /var/lib/mysql/mysql/user.MYI
讓我們從 mysql 客戶端查看 mysql.user:
mysql> select * from information_schema.tables -> where table_schema='mysql' and table_name='user'\G *************************** 1. row *************************** TABLE_CATALOG: NULL TABLE_SCHEMA: mysql TABLE_NAME: user TABLE_TYPE: BASE TABLE ENGINE: MyISAM VERSION: 10 ROW_FORMAT: Dynamic TABLE_ROWS: 31 AVG_ROW_LENGTH: 69 DATA_LENGTH: 2144 MAX_DATA_LENGTH: 281474976710655 INDEX_LENGTH: 2048 DATA_FREE: 0 AUTO_INCREMENT: NULL CREATE_TIME: 2012-06-05 23:45:23 UPDATE_TIME: 2012-07-15 23:29:05 CHECK_TIME: NULL TABLE_COLLATION: utf8_bin CHECKSUM: NULL CREATE_OPTIONS: TABLE_COMMENT: Users and global privileges 1 row in set (0.00 sec) mysql>
請注意以下事項
創作時間
- 文件日期時間
.frm
為Jun 5 2012
CREATE_TIME: 2012-06-05 23:45:23
更新時間
- 文件日期時間
.MYD
為Jul 15 23:29
UPDATE_TIME: 2012-07-15 23:29:05
OS 元數據在 mysql 啟動時
mysql.user
載入INFORMATION_SCHEMA.TABLES
,並通過 INSERT、UPDATE 和 DELETE 進行更新。概括
雖然您可以 mysqldump
INFORMATION_SCHEMA.TABLES
,但無法手動重新載入它。理論上,你可以關閉 mysql,tweek 作業系統時鐘,tweek 每個文件,然後啟動 mysql。這不值得努力。