InnoDB 中文參考手冊 --- 3 建立一個 InnoDB 資料庫 (轉)

amyz發表於2007-08-15
InnoDB 中文參考手冊 --- 3 建立一個 InnoDB 資料庫 (轉)[@more@] words" content="My,InnoDB,4.1.0,Shuixin13, 4.1.0,中文,中文參考手冊,犬犬(心帆)"> CSS rel=STYLESHEET>

假設你已經了 MySQL 並且已經修改了 my.cnf 包含了必要的 InnoDB 引數設定 。在啟動 MySQL 之前必須檢查為InnoDB 指定的資料與日誌路徑是否存在以及在 這些目錄上有足夠的。InnoDB 不會自己建立目錄,只能建立檔案。同時檢查是否有足夠的空間存放資料與日誌檔案。

當建立一個 InnoDB 資料庫時最好以命令列方式來執行 MySQL 服務 mysqld ,而不是從 safe_mysqld 或 服務。當從命令列方式執行服務時可以看到建立過程。

現在執行 MySQL 服務,InnoDB 將建立資料檔案和日誌檔案。InnoDB 將顯示下列所示的資訊:

heikki@donna:~/mysql-3.23.48/sql> mysqld 020204 23:17:12 InnoDB: The first specified data file /dr2/tmp/heikki/data/ibdata1 did not exist: InnoDB: a new database to be created! InnoDB: Setting file /dr2/tmp/heikki/data/ibdata1 size to 20 MB InnoDB: Database physically writes the file full: wait... 020204 23:17:16 InnoDB: Data file /dr2/tmp/heikki/data/ibdata2 did not exist: new to be created InnoDB: Setting file /dr2/tmp/heikki/data/ibdata2 size to 200 MB InnoDB: Database physically writes the file full: wait... 020204 23:17:41 InnoDB: Data file /dr2/tmp/heikki/data/ibdata3 did not exist: new to be created InnoDB: Setting file /dr2/tmp/heikki/data/ibdata3 size to 1000 MB InnoDB: Database physically writes the file full: wait... 020204 23:21:37 InnoDB: Log file ./ib_logfile0 did not exist: new to be created InnoDB: Setting log file ./ib_logfile0 size to 10 MB InnoDB: Database physically writes the file full: wait... 020204 23:21:39 InnoDB: Log file ./ib_logfile1 did not exist: new to be created InnoDB: Setting log file ./ib_logfile1 size to 10 MB InnoDB: Database physically writes the file full: wait... 020204 23:21:41 InnoDB: Log file ./ib_logfile2 did not exist: new to be created InnoDB: Setting log file ./ib_logfile2 size to 10 MB InnoDB: Database physically writes the file full: wait... 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 020204 23:21:45 InnoDB: Started mysqld: ready for connections


現在一個新的 InnoDB 資料庫被建立了。你可以透過 MySQL 的客戶端(比如 mysql)連線 MySQL 。當透過 mysqladmin shutdown 關閉 MySQL 服務時,InnoDB 輸出如下所示:

020204 23:34:45 mysqld: Normal shutdown 020204 23:34:45 InnoDB: Starting shutdown... 020204 23:34:47 InnoDB: Shutdown completed 020204 23:34:47 mysqld: Shutdown Complete


現在你可以看到資料檔案與日誌檔案已被建立。在日誌檔案目錄下也會包含一個句為 ib_arch_log_0000000000 的小檔案。這是當 InnoDB 的日誌存檔(log archiving)開關關閉後,資料庫建立後形成的檔案。 當 MySQL 再次啟動時,螢幕顯示所下所示:

heikki@donna:~/mysql-3.23.48/sql> mysqld 020204 23:34:27 InnoDB: Started mysqld: ready for connections


如果 InnoDB 顯示一個檔案操作的操作錯誤,請檢視第 13.2 節 錯誤程式碼的含義。常見的錯誤如下:

  • 沒有建立 InnoDB 資料或日誌檔案目錄。
  • mysqld 在那些目錄下沒有建立檔案的許可權。
  • mysqld 沒有許可權讀取 my.cnf my.ini 檔案,因而無法所指定的選項。
  • 磁碟空間已滿或超過磁碟配額。
  • 建立了一個與資料檔案同名的子目錄。
  • innodb_data_home_dir innodb_data_file_path 中設定語法出錯。

如果在 InnoDB 資料庫建立時發生了一個錯誤,你必須刪除所有 InnoDB 建立的檔案。 這就意味著所有的資料檔案、所有的日誌檔案、日誌存檔檔案,如果你已經建立了一些 InnoDB 表,必須刪除 MySQL 資料目錄下相應的 “.frm”檔案。然後可以再嘗試建立 InnoDB 資料庫。最好以命令列方式啟動 MySQL 服務,從而可以看到建立過程。

通常在關閉之前你必須先關閉資料庫服務。在命令列方式下輸入 mysqladmin shutdown 可以以服務。

在 和 2000 下可以將 MySQL 服務安裝為 Windows 系統服務。這樣在計算機啟動時 MySQL 服務會自動啟動或在命令列方式下輸入 MS-D命令 .NET START MySQL 或從的服務選單中啟動。

如果以系統服務方式執行 MySQL,可以透過 MS-DOS的 NET STOP MySQL 命令或作業系統的服務選單中關閉服務。你同樣可以讓作業系統退出前自動關閉 MySQL。在低於 MySQL 3.23.47 版本的系統中,Windows 作業系統僅僅只等待一段時間讓 InnoDB 完全關閉,如果限止時間超過將殺死資料服務執行緒。那在下一次 InnoDB 啟動不得不不進行一個崩潰修復。從 MySQL version 3.23.48 開始,作業系統將等待 InnoDB 完全關閉。

如果你的作業系統沒有為 InnoDB 完全關閉提供足夠的時間,最的辦法就是在 MS-DOS 命令列下執行 MySQL 服務,並用 mysqladmin shutdown 關閉服務。

在 Windows NT (但 Windows 2000 無些問題)下,當計算機關閉時,有一個可能發生的問題就是 Windows NT 預設等待 20 秒以關閉一個服務,服務未能關閉將殺死服務執行緒。可以透過執行登錄檔編輯器 winntsystem32 egedt32.exe 來修改 HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControl 中的 WaitToKillServiceTimeout 鍵值以增加這個預設值。以毫秒為單位給定一個更大的值。

 


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752019/viewspace-957774/,如需轉載,請註明出處,否則將追究法律責任。

相關文章