添加InnoDB到安裝好的MySQL中的例子

來源:互聯網
上載者:User

添加InnoDB到安裝好的MySQL



1.首先確定,在mysql的’plugin_dir’下是否有ha_innodb_plugin.so和ha_innodb.so兩個檔案,如果沒有找到,在你的mysql編譯目錄裡有下面的目錄檔案(內建的innodb和innodb_plugin)
storage/innobase/.libs/ha_innodb.so
storage/innodb_plugin/.libs/ha_innodb_plugin.so
你需要把它們(ha_innodb_plugin.so和ha_innodb.so)拷貝到mysql的plugin目錄中(/usr/local/mysql/lib/mysql/plugin)



2.在mysql命令列安裝一下

mysql> INSTALL PLUGIN InnoDB SONAME ‘ha_innodb.so';
Query OK, 0 rows affected (1.74 sec)




增加mysql InnoDB的資料表空間


innodb_data_file_path
該變數設定innoDB資料檔案的位置和大小。指定的檔案必須大於10M,如果不受系統檔案限制,可以設定大於4G。該變數是mysql伺服器容量規劃和效能擴充能力的核心要素。通常設定是建立一個資料目錄內容的基準大小,在10M到128M之間,第二個檔案設定為10M並自動擴充。如innodb_data_file_path = ibdata1:128M;ibdata2:10M:autoextend。

innodb_file_per_table
有三種分配和管理資料表空間:
1. 原始分區的資料表空間也就是raw
2. 共用檔案資料表空間
3. 每個表單獨的資料表空間

使用innodb_file_per_table的好處有:
1. 如果使用軟連結將大表分配到不同的分區上,易於管理資料檔案
2. 易於監控解決IO資源使用的問題
3. 易於修複和恢複損壞的資料
3.1 相互獨立的,不會影響其他innodb表
3.2 匯出匯入只針對單個表,而不是整個共用資料表空間
4. 解決單個檔案大小的限制
5. 對於大量的delete操作,更易於回收磁碟空間
6. 片段較少,易於整理optimize table
7. 易於安全審計
8. 易於備份

如果在innodb表已建立後設定innodb_file_per_table,那麼資料將不會遷移到單獨的資料表空間上,而是續集使用之前的共用資料表空間。
只有新建立的表才會分離到自己的資料表空間檔案。
[warning]innodb_file_per_table是靜態變數,更改後要重啟mysql服務才會生效。[/warning]

增加資料表空間
當沒有使用innodb_file_per_table也沒有啟用自動擴充,那麼隨著資料的增長,資料表空間將滿了。在這情況下,需要添加額外的資料表空間來擴充容量。方法如下:
1. 停止mysql服務
2. 備份設定檔,便於出現問題好回退
3. 編輯innodb_data_file_path值
根據你的環境更改ibdata1:$size;ibdataN:$size;…ibdataN:$size; 當前定義的資料表空間或預設資料表空間是不能改變的,否則啟動失敗,但是,可以額外的添加資料表空間,ibdataN序列根據當前的數量遞增,$size自訂。
4. 啟動mysql服務
6. 觀察mysql錯誤記錄檔是否有錯


添加和調整innodb log檔案

innodb_log_group_home_dir

在事務被提交並寫入到資料表空間磁碟檔案上之前,交易資料儲存在InnoDB的redo記錄檔裡。這些日誌位於innodb_log_group_home_dir變數定義的目錄中,通常我們把這個目錄設定與innodb_data_home_dir變數相同。為了獲得最佳效能,建議分離innodb_data_home_dir和innodb_log_group_home_dir到單獨的實體儲存體陣列上,這樣可以保證IO資源不起衝突,利於伺服器處理大量高並發串連。

innodb_log_file_size
這個選項決定著效能,要謹慎設定。預設設定為5M,難以滿足生產環境下的需求。記錄檔在mysql執行個體第一次啟動時初始化,該檔案是旋轉的,因此可以根據檔案修改時間來判斷記錄檔的旋轉頻率,旋轉頻率太頻繁,說明記錄檔太小了,要擴大。
innodb_log_file_size設定大小通常視innodb_buffer_pool_size而定。影響記錄檔效能的變數是innodb_log_buffer_size,確保有足夠大的日誌緩衝區來儲存髒資料在被寫入到記錄檔之前。
對於比較小的innodb_buffer_pool_size,建議是設定一樣大。 但是,對於比較大的innodb_buffer_pool_size,不建議這麼設定,這會存在一個潛在的問題,那就是當mysql掛掉時,恢複資料需要很久,造成大量的停機時間。官方文檔的建議設定是innodb_buffer_pool_size/innodb_log_files_in_group。
[warning]innodb_log_file_size是靜態變數,需要以“乾淨”的方式更改並重新啟動,否則mysql啟動不起來。[/warning]

innodb_log_buffer_size
該變數將資料存匯入到記憶體中,可以減少大量的IO資源消耗。當事務提交時,儲存髒資料,後續在重新整理到磁碟。當我們調整innodb_buffer_pool_size大小時,innodb_log_buffer_size和innodb_log_file_size也應該做出相應的調整。

innodb_log_files_in_group
該變數控制記錄檔數。預設值為2。日誌是以順序的方式寫入。
[warning]innodb_log_files_in_group是靜態變數,需要以“乾淨”的方式更改並重新啟動,否則mysql啟動不起來。[/warning]

添加和調整innodb log檔案步驟:
1. 停止mysql服務

# /etc/init.d/mysqld stop
[warning]一定要正常的關閉。[/warning]2. 根據innodb_log_group_home_dir變數進入到日誌目錄下

# cd /data/mysql_data
3. 備份舊的記錄檔,以防不測便於回退

# mv ib_logfile* /backup/
4. 按照要求調整記錄檔大小或數量並寫入到my.cnf檔案中
innodb_log_file_size調整記錄檔大小。
innodb_log_files_in_group調整記錄檔數量。
innodb_log_group_home_dir調整記錄檔位於目錄。
5. 重新啟動mysql服務
該過程將會按照新的日誌配置來建立記錄檔。同時,注意查看mysql錯誤記錄檔,來監控是否出錯

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.