【MySQL】使用innobackup 2.4遇到的問題

楊奇龍發表於2017-08-27
一 前言 
   Percona公司釋出 innobackup 2.4 版本已經很久了,增加了新的特性比如xtrabackup支援非Innodb表備份,指定 --safe-slave-backup,增加備份的一致性,最重要的一點是支援5.7的備份,2.2是不能備份5.7 版本的。
  因此我們決定將我們的percona的pt工具和備份軟體更新到最新版本。本文主要記錄我們使用 2.4 版本過程中遇到的問題和之前的一些改變。

二 問題和差異
2.1 backup-my.cnf 檔案
innobackup 2.4版本比 之前的版本多了幾個引數 
2.2版本的內容
  1. [mysqld]
  2. innodb_checksum_algorithm=innodb
  3. innodb_log_checksum_algorithm=innodb
  4. innodb_data_file_path=ibdata1:12M:autoextend
  5. innodb_log_files_in_group=2
  6. innodb_log_file_size=1073741824
  7. innodb_page_size=16384
  8. innodb_log_block_size=512
  9. innodb_undo_directory=.
  10. innodb_undo_tablespaces=0
2.4 版本的內容

  1. [mysqld]
  2. innodb_checksum_algorithm=innodb
  3. innodb_log_checksum_algorithm=innodb
  4. innodb_data_file_path=ibdata1:12M:autoextend
  5. innodb_log_files_in_group=2
  6. innodb_log_file_size=1073741824
  7. innodb_page_size=16384
  8. innodb_log_block_size=512
  9. innodb_undo_directory=.
  10. innodb_undo_tablespaces=0
  11. server_id=0                # 2.4 新增引數
  12. redo_log_version=0         # 2.4 新增引數
  13. innodb_fast_checksum=false # 2.4 新增引數

這裡強調一下 innodb_fast_checksum ,在applay log 之後依賴backup-my.cnf 啟動MySQL的時候 5.6 是不能識別該引數的,導致啟動失敗。[ERROR] mysqld: unknown variable 'innodb_fast_checksum=0'
來看看2014年 相關的bug 說法
“Or maybe a separate feature request should be opened to copy the whole my.cnf to the backup directory as well. I will leave that up to others to decide.”
都3年了,都沒有得出什麼有效的結果。。
其他地方的討論,其實可以直接關閉。
https://dba.stackexchange.com/questions/6386/is-there-any-reason-not-to-use-percona-innodb-fast-checksum

2.2 場景
  由於歷史原因,我們還有部分資料庫是是基於 mysqld_multi 做單機多例項的。這種單機多例項的配置檔案有兩種 /etc/my.cnf 和 /path/my.multi.cnf 兩個配置檔案。my.multi.cnf 檔案裡面配置了例項級別的個性引數。比如

  1. [mysqld_multi]
  2. mysqld=/usr/bin/mysqld_safe
  3. mysqladmin=/usr/bin/mysqladmin
  4. user=mysql
  5. log=/data/multi.log
  6. [3306]
  7. port = 3306
  8. datadir=/data/my3306
  9. socket=/data/my3306/mysql.sock
  10. user=mysql
  11. pid-file=/data/my3306/mysql.pid
  12. log=/data/my3306/mysqld.log
  13. [3307]
  14. port = 3307
  15. datadir=/data/my3307
  16. socket=/data/my3307/mysql.sock
  17. user=mysql
  18. pid-file=/data/my3307/mysql.pid
  19. log=/data/my3307/mysqld.log
innobackup 2.4 在備份時會去讀 /etc/my.cnf ,如果該檔案中沒有配置server_id 則系統報錯失敗。如果沒有/etc/my.cnf 則會去獲取資料庫例項配置的my.cnf 而不是 my.multi.cnf ..
innobackupex: [ERROR] /usr/bin/innobackupex: Empty value for 'server-id' specified
解決方法回退到老的版本。

2.3 備份集檔案內容的變化
我們的備份命令如下:
  1. /usr/bin/innobackupex --socket=/srv/my_3344/mysqld.sock --user=root --password= --no-timestamp --slave-info --rsync --compress --compress-threads=2 --parallel=1 /data/backup/rac1_3344/full/bk20170827105656 >/data/logs/zandb_agent/backup/rac1_3344_bk20170827105656.log 2>&1
使用了 compress 功能, 2.2版本的備份集壓縮了資料庫相關的資料檔案

2.4版本的備份集檔案


對自動化備份系統的影響是需要調整讀取backup-my.cnf的步驟,必須在解壓縮之後讀取。

三 小結
    這裡例舉了我們在使用新版本的備份軟體遇到的問題,給其他準備使用的同行一些借鑑,也歡迎大家補充其他我們還沒遇到的問題。

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

相關文章