發表文章

目前顯示的是 8月, 2016的文章

Percona TokuDB 備份

圖片
安裝備份 ps_tokudb_admin --enable-backup 執行安裝程序時,它會去檢測一些項目,但如jemalloc, transparent huge pages..等,這些是在安裝TokuDB引擎時就已設定過的,大致上不會有什麼問題。 要注意的地方是要記得在參數檔的[mysqld_safe]區塊中加入 preload-hotbackup 這個參數,否則安裝時會報錯。 執行備份 set tokudb_backup_dir='/path/to/backup_dir'; 是的,沒看錯,這個看似設定備份路徑的語法就是在執行備份 我個人是覺得有點莫名奇妙啦XDD 它會自動的幫你把資料庫中所有的檔案備份到指定的路徑中 如果你的tokudb有另外放在其他路徑下的話,也分開備份在不同目錄下,如圖所示: 還原 目前只支援用rsync或cp的方式把資料還原回來,要注意的是,還原前切記先把mysqld服務先停止。 經測試,如果是資料移失的那種部份還原的話,還是可以在mysqld服務啟動時,透過rsync的方式把資料還原回來,如下圖: 如果是整個刪除的話,則需要關機還原,然後把每個檔案都還原回去 rsync -avrP /opt/backup/08311600/mysql_data_dir/ /opt/percona57/data/ rsync -avrP /opt/backup/08311600/tokudb_data_dir/ /opt/percona57/tokudb_data/ rsync -avrP /opt/backup/08311600/tokudb_log_dir/ /opt/percona57/tokudb_log/ 如下圖: 錯誤排除 在執行備份時,有可能會發生這個錯誤訊息: ERROR 1231 (42000): Variable 'tokudb_backup_dir' can't be set to the value of '/opt/backup/08311600' 這個有可能是因為備份路徑的權限不足,或是已有檔案存在無法寫入…  可以執行:SELECT @@tokudb_backup_last_error_string;查明錯誤原因

Percona TokuDB初試

圖片
◆ 緣起 最近在做個專案,它是一個報表系統 本來要用EDB(Postgres)但它的授權計算下來簡直是天價 所以又找了Greenplum要來做,測試後發現速度也無法滿足要求 最後想用MySQL的方案來試試。 ◆ 關於TokuDB 它的詳細說明,就不一一細數,有興趣直接到官網  Percona 簡單來說呢,是一個高效能、高壓縮比支援ACID和MVCC的儲存引擎,非常適合用在寫密集型且日誌型的應用場景。 在官方的部落中有做了一個 The MySQL Archive Storage Engine-Alternatives 對MyISAM、InnoDB、Archive和TokuDB的比較 在這些表中分別插入約2千萬筆的資料,其壓縮比如下: Engine Compression Table size [MB] InnoDB  none  2272 InnoDB  KEY_BLOCK_SIZE=8  1144 InnoDB  KEY_BLOCK_SIZE=4  584 MyISAM  none  1810 MyISAM  compressed with myisampack  809 Archive  default  211 TokuDB  ZLIB  284 TokuDB  LZMA   208 此表引用於Percona官方部落格 當然會有些限制內容,詳細就到官網上去看看 ◆ 安裝 手冊裡寫說可以單獨下載TokuDB的plugin,並安裝在MySQL或MariaDB的資料庫中,我這次是直接用Percona Server原生的資料庫,所以就包含在整個tar包裡了。 安裝前 記得有幾個設定要先處理,否則在啟動的時候會發生錯誤 libjemalloc library TokuDB需要libjemalloc 3.3.0以上的版本,如果是用tar包安裝的話,可以直接在lib/mysql/找到libjemalloc.so檔案,並且設定在my.cnf中: [mysqld_safe] malloc-lib=/opt/percona57/lib/mysql/libjemalloc.so Transparent huge pages 可以用指令先檢查目前OS上的設定是什麼: # cat /sys/kernel/