15 2 5 建立InnoDB表空間

2021-05-21 19:18:26 字數 2897 閱讀 2391

15.2.5.1. 處理innodb初始化問題

假設你已經安裝了mysql,並且已經編輯了選項檔案,使得它包含必要的innodb配置引數。在啟動mysql之前,你應該驗證你為innodb資料檔案和日誌檔案指定的目錄是否存在,並且mysql有訪問這些目錄的許可權。innodb不能建立目錄,只能建立檔案。也檢查你有足夠的空間來放資料和日誌檔案。

當建立innodb資料庫時,最好從命令提示符執行mysql伺服器mysqld, 而不要從mysqld_safe包裝或作為windows的服務來執行。當你從命令提示符執行,你可看見mysqld列印什麼以及發生了什麼。在unix上,只需要呼叫mysqld。在windows上,使用--console選項。

innodb: the first specified datafile /home/heikki/data/ibdata1
did not exist:
innodb: a new database to be created!
innodb: setting file /home/heikki/data/ibdata1 size to 134217728
innodb: database physically writes the file full: wait...
innodb: datafile /home/heikki/data/ibdata2 did not exist:
new to be created
innodb: setting file /home/heikki/data/ibdata2 size to 262144000
innodb: database physically writes the file full: wait...
innodb: log file /home/heikki/data/logs/ib_logfile0 did not exist:
new to be created
innodb: setting log file /home/heikki/data/logs/ib_logfile0 size
to 5242880
innodb: log file /home/heikki/data/logs/ib_logfile1 did not exist:
new to be created
innodb: setting log file /home/heikki/data/logs/ib_logfile1 size
to 5242880
innodb: doublewrite buffer not found: creating new
innodb: doublewrite buffer created
innodb: creating foreign key constraint system tables
innodb: foreign key constraint system tables created
innodb: started
mysqld: ready for connections
乙個新的innodb資料庫被建立了。你可以用mysql這樣通常的mysql客戶端程式連線到mysql伺服器。當你用mysqladmin shutdown關閉mysql伺服器之時,輸出類似如下:

010321 18:33:34  mysqld: normal shutdown
010321 18:33:34  mysqld: shutdown complete
innodb: starting shutdown...
innodb: shutdown completed
你可以看資料檔案和日誌檔案,並且你可以看見檔案被建立。日誌目錄也包含乙個名為ib_arch_log_0000000000的小檔案。這個檔案是資料庫被建立的結果,資料庫被建立之後innodb切斷日誌歸檔。當mysql再次啟動之時,資料檔案&日誌檔案已經被建立,所以輸出更簡潔:

innodb: started
mysqld: ready for connections
你可以新增innodb_file_per_table選項到my.cnf檔案,並且讓innodb儲存每乙個表到mysql資料庫目錄裡自己的.ibd檔案。請參閱15.2.6.6節,「使用per-table表空間」。

15.2.5.1. 處理innodb初始化問題

如果innodb在乙個檔案操作中列印乙個作業系統錯誤,通常問題是如下中的乙個:

·         你沒有建立乙個innodb資料檔案目錄或innodb日誌目錄。

·mysqld沒有訪問這些目錄的許可權以建立檔案。

·mysqld不能恰當地讀取my.cnf或my.ini選項檔案,因此不能看到你指定的選項。

·         磁碟已滿,或者超出磁碟配額。

·         你已經建立乙個子目錄,它的名字與你指定的資料檔案相同。

·         在innodb_data_home_dir或innodb_data_file_path有乙個語法錯誤。

當innodb試著初始化它的表空間或日誌檔案之時,如果出錯了,你應該刪除innodb建立的所有檔案。這意味著是所有ibdata檔案和所有ib_logfiles檔案。萬一你建立了一些innodb表,為這些表也從mysql資料庫目錄刪除相應的.frm檔案(如果你使用多重表空間的話,也刪除任何.ibd檔案)。然後你可以試著再次建立innodb資料庫。最好是從命令提示符啟動mysql伺服器,以便你可以檢視發生了什麼。

innodb表空間儲存結構

儲存結構 innodb的邏輯儲存結構如圖所示 其空間管理由段,區和頁構成。段包括葉子節點段,即所有索引的葉子節點都儲存在這個段裡,葉子節點儲存資料 次級索引是主鍵 和鍵值,這可以方便管理並且減少隨機io 還包括非葉子節點,儲存的是指向另外節點的指標和鍵值 回滾段儲存的是每個表的undo日誌 具體分析...

建立表空間

建立臨時表空間 create temporary tablespace test temp size 32m autoextend on next 32m maxsize 2048m extent management local 建立資料表空間 create tablespace test log...

建立表空間

1 建立表空間 create tablespace yyy nologging datafile c yyy.dbf size 50m autoextend on next 50m maxsize 1024m extent management local datafile 是關鍵字,用於指定資料檔...