1. 程式人生 > >Percona Xtrabackup 8.0試用

Percona Xtrabackup 8.0試用

0.percona xtrabackup 8.0概述:
0.1 
1.移除了innobackupex命令
2.由於新的MySQL重做日誌和資料字典格式,8.0版本只支援mysql8.0和percona8.0
3.早於mysql8.0的版本需要使用xtrabackup2.4備份和恢復.

0.2 支援的作業系統:
RHEL / Centos 6.x
RHEL / Centos 7.x
Ubuntu 14.04 Trusty *
Ubuntu 16.04 Xenial
Ubuntu 18.04 Bionic
Debian 8 Jessie *
Debian 9 Stretch

1.安裝:
由於使用的centos7版本直接使用rpm安裝:
## wget http://repo.percona.com/experimental/7/RPMS/x86_64/percona-xtrabackup-80-8.0.1-2.alpha2.el7.x86_64.rpm

#yum -y localinstall percona-xtrabackup-80-8.0.1-2.alpha2.el7.x86_64.rpm libenv

Dependencies Resolved
=====================================================================
 Package               Arch   Version            Repository     Size
=====================================================================
Installing:
 percona-xtrabackup-80 x86_64 8.0.1-2.alpha2.el7 /percona-xtrabackup-
80-8.0.1-2.alpha2.el7.x86_64
                                                                64 M
Installing for dependencies:
 libev                 x86_64 4.15-7.el7         extras         44 k
Transaction Summary
=====================================================================
Install  1 Package (+1 Dependent package)

2.相關檔案查詢:
# rpm -qa | grep -i xtrabackup
percona-xtrabackup-80-8.0.1-2.alpha2.el7.x86_64
# rpm -ql percona-xtrabackup-80
/usr/bin/xbcloud
/usr/bin/xbcloud_osenv
/usr/bin/xbcrypt
/usr/bin/xbstream
/usr/bin/xtrabackup
/usr/lib64/xtrabackup/plugin/keyring_file.so
/usr/lib64/xtrabackup/plugin/keyring_vault.so
/usr/share/doc/percona-xtrabackup-80-8.0.1
/usr/share/doc/percona-xtrabackup-80-8.0.1/LICENSE
/usr/share/man/man1/innobackupex.1.gz
/usr/share/man/man1/xbcrypt.1.gz
/usr/share/man/man1/xbstream.1.gz
/usr/share/man/man1/xtrabackup.1.gz
--版本查詢:
# xtrabackup --version
xtrabackup version 8.0.1 based on MySQL server 8.0.11 Linux (x86_64) (revision id: )

這是目前為了相容備份mysql8.0和percona server for mysql 8.0開發的備份軟體。
我們可以看下此前最新的穩定版本:
# rpm -qa | grep -i xtrabackup
percona-xtrabackup-24-2.4.12-1.el7.x86_64
[
[email protected]
~]# rpm -ql percona-xtrabackup-24 /usr/bin/innobackupex /usr/bin/xbcloud /usr/bin/xbcloud_osenv /usr/bin/xbcrypt /usr/bin/xbstream /usr/bin/xtrabackup /usr/lib64/xtrabackup/plugin/keyring_file.so /usr/lib64/xtrabackup/plugin/keyring_vault.so /usr/share/doc/percona-xtrabackup-24-2.4.12 /usr/share/doc/percona-xtrabackup-24-2.4.12/COPYING /usr/share/man/man1/innobackupex.1.gz /usr/share/man/man1/xbcrypt.1.gz /usr/share/man/man1/xbstream.1.gz /usr/share/man/man1/xtrabackup.1.gz [
[email protected]
~]# xtrabackup --version xtrabackup: recognized server arguments: --datadir=/var/lib/mysql xtrabackup version 2.4.12 based on MySQL server 5.7.19 Linux (x86_64) (revision id: 170eb8c) [[email protected] ~]# 3.比對結論: 1.在8.0版本中將innobackupex命令剔除,保留了xbcloud、xbcloud_osenv、xbcrypt、xbstream和xtrabackup命令。 2. 編譯的mysql版本不一樣: 2.4版本是基於mysql5.7.19; 8.0版本是基於mysql8.0.11 由於mysql官方的分支儲存引擎主要是innoDB了,innobackupex的意義不大了。 而MariaDB官方基於xtrabackup fork出來的分支支援MariaDB10.2+版本以上的備份,名字命名為mariabackup,使用 percona xtrabackup直接備份則備份和恢復不成功。 可以看到我們使用的備份恢復的命令主要是xtrabackup。 4.備份的命令說明: innobackupex:這個是其實是下面三個工具的一個perl指令碼封裝,可以備份MyISAM, InnoDB, XtraDB表。但在處理Myisam時需要加一個讀鎖。在2.4版本標記為deprated。8.0版本直接移除了此命令。 xtrabackup:一個由C編譯而來的二進位制檔案,只能備份InnoDB和XtraDB資料。 xbcrypt:用來加密或解密備份的資料。 xbstream:用來解壓或壓縮xbstream格式的壓縮檔案。 5.xtrabackup 引數說明( xtrabackup --help) --print-defaults 輸出mysql例項的引數配置資訊 --no-defaults 不從任何配置檔案中讀取引數資訊,除了登入檔案 --defaults-file=# 僅從指定的配置檔案讀取引數 --defaults-extra-file=# 讀取額外的配置資訊檔案 --defaults-group-suffix=# Also read groups with concat(group, suffix) --login-path=# 讀取登入檔案的路徑 -v, --version 列印 xtrabackup版本資訊 --target-dir=name 備份檔案的目錄,預設為當前目錄xtrabackup_backupfiles/ --backup 備份操作,備份到target-dir指定的目錄 --stats 計算datadir的統計資訊(推薦mysqld離線)calc statistic of datadir (offline mysqld is recommended) --prepare 指定備份的prepare階段 prepare a backup for starting mysql server on the backup. --export 當在prepare階段建立檔案到另外的一個數據庫 create files to import to another database when prepare. --apply-log-only 一般情況下,在備份完成後,資料尚且不能用於恢復操作,因為備份的資料中可能會包含尚未提交的事務或已經提交但尚未同步至資料檔案中的事務。因此,此時資料 檔案仍處理不一致狀態。--apply-log的作用是通過回滾未提交的事務及同步已經提交的事務至資料檔案使資料檔案處於一致性狀態。 --print-param 輸出mysqld copyback必須的引數print parameter of mysqld needed for copyback. --use-memory=# 備份的時候指定的記憶體,該選項表示和--apply-log選項一起使用,prepare 備份的時候,xtrabackup做crash recovery分配的記憶體大小,單位位元組。也可(1MB,1M,1G,1GB),推薦1G。用於替代buffer_pool_size --throttle=# 和--backup一起使用,指定每秒操作讀寫對的數量。 --log[=name] 忽略MySQL選項相容性的選項 --log-copy-interval=# 日誌複製執行緒完成的檢查之間的時間間隔(以毫秒為單位,預設為1秒)。 --extra-lsndir=name 和--backup一起使用,在當前目錄儲存一份額外的xtrabackup_checkpoints檔案 --to-archived-lsn=# 指定prepare備份時apply事務日誌的LSN,只能和xtarbackup --prepare選項一起用。 --tables=name 通過正則表示式過濾表 --tables-file=name 按檔案中的精確的database.table名稱列表進行篩選。 --databases=name 按照資料庫進行過濾 --databases-file=name 按照檔案中的資料進行過濾 --tables-exclude=name 操作方式和--tables一樣,但是匹配的表名將不備份,此引數的優先順序高於--tables. --databases-exclude=name 操作方式和--databases一樣,但是匹配的庫名將不被備份,優先順序高於--databases. --create-ib-logfile 此引數當前不生效,無效引數 --stream=name 該選項表示流式備份的格式,backup完成之後以指定格式到STDOUT,目前只支援tar(8.0版本僅支援)和xbstream --decompress 該選項表示解壓--compress選項壓縮的檔案,解壓.qp擴充套件檔案。 --compress[=name] 壓縮所有輸出資料,包括事務日誌檔案和元資料檔案,通過指定的壓縮演算法,目前唯一支援的演算法是quicklz.結果檔案是qpress歸檔格式,每個xtrabackup建立的*.qp檔案都可以通過qpress程式提取或者解壓縮 --compress-threads=# 備份壓縮的並行執行緒,預設為1.並行壓縮('compress-threads')可以和並行檔案拷貝('parallel')一起使用。例如:'--parallel=4 --compress --compress-threads=2'會建立4個IO執行緒讀取資料並通過管道傳送給2個壓縮執行緒。 --compress-chunk-size=# 壓縮執行緒工作buffer的位元組大小,預設是64K --encrypt=name 該選項表示通過ENCRYPTION_ALGORITHM的演算法加密innodb資料檔案的備份,目前支援的演算法有ASE128,AES192,AES256。 --encrypt-key=name 該選項使用合適長度加密key,因為會記錄到命令列,所以不推薦使用。 --encrypt-key-file=name 該選項表示檔案必須是一個簡單二進位制或者文字檔案,加密key可通過以下命令列命令生成:openssl rand -base64 24。 --encrypt-threads=# 該選項表示並行加密的worker執行緒數量,預設為1. --encrypt-chunk-size=# 該選項表示每個加密執行緒worker buffer的大小,單位是位元組,預設是64K。 --decrypt=name 該選項表示解密通過--encrypt選項加密的.xbcrypt檔案。 --remove-original 當刪除解密和解壓完後刪除 .qp and .xbcrypt 檔案 --rebuild_indexes: 在apply事務日誌之後重建innodb輔助索引,只有和--prepare一起才生效。 --rebuild_threads=#: 在緊湊備份重建輔助索引的執行緒數,只有和--prepare和rebuild-index一起才生效。 --close-files 該選項表示關閉不再訪問的檔案控制代碼,當xtrabackup開啟表空間通常並不關閉檔案控制代碼目的是正確的處理DDL操作。如果表空間數量巨大,這是一種可以關閉不再訪問的檔案控制代碼的方法。使用該選項有風險,會有產生不一致備份的可能。 --core-file Write core on fatal signals --copy-back 做資料恢復時將備份資料檔案拷貝到MySQL伺服器的datadir。 --move-back 這個選項與--copy-back相似,唯一的區別是它不拷貝檔案,而是移動檔案到目的地。這個選項移除backup檔案,用時候必須小心。使用場景:沒有足夠的磁碟空間同事保留資料檔案和Backup副本 注意: 1.datadir目錄必須為空。除非指定innobackupex --force-non-empty-directorires選項指定,否則--copy-backup選項不會覆蓋 2.在restore之前,必須shutdown MySQL例項,你不能將一個執行中的例項restore到datadir目錄中 3.由於檔案屬性會被保留,大部分情況下你需要在啟動例項之前將檔案的屬主改為mysql,這些檔案將屬於建立備份的使用者 --galera-info 該選項表示生成了包含建立備份時候本地節點狀態的檔案xtrabackup_galera_info檔案,該選項只適用於備份PXC。 --slave-info 該選項表示對slave進行備份的時候使用,打印出master的名字和binlog pos,同樣將這些資訊以change master的命令寫入xtrabackup_slave_info檔案。可以通過基於這份備份啟動一個從庫。 --no-lock 該選項表示關閉FTWRL的表鎖,只有在所有表都是Innodb表並且不關心backup的binlog pos點,如果有任何DDL語句正在執行或者非InnoDB正在更新時(包括mysql庫下的表),都不應該使用這個選項,後果是導致備份資料不一致,如果考慮備份因為獲得鎖失敗,可以考慮--safe-slave-backup立刻停止複製執行緒。 --lock-ddl 若mysql serve支援在備份支援發出LOCK TABLES FOR BACKUP指令阻止所有的DDL操作。 --lock-ddl-timeout=# 若在指定時間內未返回值則終止備份。 --lock-ddl-per-table 在xtrabackup開始複製之前鎖定每個表的DDL直到備份完成 --safe-slave-backup 該選項表示為保證一致性複製狀態,這個選項停止SQL執行緒並且等到show status中的slave_open_temp_tables為0的時候開始備份,如果沒有開啟臨時表,bakcup會立刻開始,否則SQL執行緒啟動或者關閉知道沒有開啟的臨時表。 --safe-slave-backup-timeout=# 如果slave_open_temp_tables在--safe-slave-backup-timeount(預設300秒)秒之後不為0,從庫sql執行緒會在備份完成的時候重啟。 --rsync 該選項表示通過rsync工具優化本地傳輸,當指定這個選項,innobackupex使用rsync拷貝非Innodb檔案而替換cp,當有很多DB和表的時候會快很多,不能--stream一起使用。 --force-non-empty-directories 指定該引數時候,使得 --copy-back或--move-back選項轉移檔案到非空目錄,已存在的檔案不會被覆蓋。如果--copy-back和--move-back檔案需要從備份目錄拷貝一個在datadir已經存在的檔案,會報錯失敗。 --no-version-check 該選項關閉版本檢查,當--version-check選項開啟的時候。 --tables-compatibility-check 此選項開啟表儲存引擎相容性告警,預設開啟。可使用--skip-tables-compatibility-check關閉。 --no-backup-locks 該選項在backup階段控制鎖,替換FLUSH TABLES WITH READ LOCK命令。預設開啟,關閉需使用引數--no-backup-locks。當mysql伺服器不支援backup locks時候此引數無效。 -u, --user=name 備份的使用者名稱 -H, --host=name 備份的IP地址 -P, --port=# 備份的埠 -p, --password[=name] 備份時使用者的密碼 -S, --socket=name 備份時連線的unix作業系統的socket檔案 -h, --datadir=name 資料恢復時候的資料目錄.從my.cnf中讀取,或者命令列指定。 -t, --tmpdir=name 當使用--print-param指定的時候打印出正確的tmpdir引數。用於儲存臨時檔案的路徑,在輪訓模式下可以指定多個路徑,使用英文的:分隔 --parallel=# 指定備份時拷貝多個數據檔案併發的程序數,預設值為1。 --log-bin[=name] binlog的日誌序列 --incremental-lsn=name 和--backup一起使用。 --incremental-basedir=name 和--backup一起使用,僅拷貝.ibd中新增的資料到指定路徑,增量備份. --incremental-dir=name 和--prepare一起使用,將.delta檔案和logfile儲存在指定的路徑. --incremental-force-scan 該選項表示建立一份增量備份時,強制掃描所有增量備份中的資料頁 --incremental-history-name:該選項表示儲存在PERCONA_SCHEMA.xtrabackup_history基於增量備份的歷史記錄的名字。 Percona Xtrabackup搜尋歷史表查詢最近(innodb_to_lsn)成功備份並且將to_lsn值作為增量備份啟動出事lsn.與innobackupex--incremental-history-uuid、--incremental-basedir、--incremental-lsn互斥。 如果沒有檢測到有效的lsn,xtrabackup會返回error。 和選項--incremental一起使用。 --incremental-history-uuid:該選項表示儲存在percona_schema.xtrabackup_history基於增量備份的特定歷史記錄的UUID。和選項--incremental一起使用。 --innobackupex遺留引數: --ftwrl-wait-query-type:該選項表示獲得全域性鎖之前允許那種查詢完成,預設是ALL,可選update。 --ftwrl-wait-threshold:該選項表示檢測到長查詢,單位是秒,表示長查詢的閾值。若--ftwrl-wait-timeout=0此引數無效,預設值為60s。 --ftwrl-wait-timeout=# 此選項指定innobackupex在執行之前應等待阻止FTWRL的查詢的時間(以秒為單位)。 如果超時到期時仍有此類查詢,則innobackupex將終止並顯示錯誤。 預設值為0,在這種情況下,innobackupex不會等待查詢完成並立即啟動FTWRL。 --kill-long-queries-timeout:該選項表示從開始執行FLUSH TABLES WITH READ LOCK到kill掉阻塞它的這些查詢之間等待的秒數。預設值為0,不會kill任何查詢,使用這個選項xtrabackup需要有Process和super許可權。 --kill-long-query-type:該選項表示kill的型別,預設是all,可選select。 --history:該選項表示percona server 的備份歷史記錄在percona_schema.xtrabackup_history表。 --debug-sleep-before-unlock=# 僅用於xtrabackup測試套件的debug資訊 --check-privileges 在執行查詢之前檢查資料庫使用者的許可權。 --- 安全備份的引數: --server-public-key-path=name File path to the server public RSA key in PEM format. --server-public-key-path=name File path to the server public RSA key in PEM format. --get-server-public-key Get server public key --ssl-mode=name SSL connection mode. --ssl-ca=name CA file in PEM format. --ssl-capath=name CA directory. --ssl-cert=name X509 cert in PEM format. --ssl-cipher=name SSL cipher to use. --ssl-key=name X509 key in PEM format. --ssl-crl=name Certificate revocation list. --ssl-crlpath=name Certificate revocation list path. --tls-version=name TLS version to use, permitted values are: TLSv1, TLSv1.1,TLSv1.2 --ssl-fips-mode=name SL FIPS mode to use, permitted values are: OFF, ON,STRICT --innoDB的相關引數: --read-buffer-size[=#] Set datafile read buffer size, given value is scaled up to page size. Default is 10Mb. --innodb[=name] Ignored option for MySQL option compatibility --innodb-adaptive-hash-index Enable InnoDB adaptive hash index (enabled by default). Disable with --skip-innodb-adaptive-hash-index. (Defaults to on; use --skip-innodb-adaptive-hash-index to disable.) --innodb-autoextend-increment=# Data file autoextend increment in megabytes --innodb-buffer-pool-size=# The size of the memory buffer InnoDB uses to cache data and indexes of its tables. --innodb-checksums Enable InnoDB checksums validation (enabled by default). Disable with --skip-innodb-checksums. (Defaults to on; use --skip-innodb-checksums to disable.) --innodb-data-file-path=name Path to individual files and their sizes. --innodb-data-home-dir=name The common part for InnoDB table spaces. --innodb-doublewrite Enable InnoDB doublewrite buffer (enabled by default). Disable with --skip-innodb-doublewrite. (Defaults to on; use --skip-innodb-doublewrite to disable.) --innodb-io-capacity[=#] Number of IOPs the server can do. Tunes the background IO rate --innodb-file-io-threads=# Number of file I/O threads in InnoDB. --innodb-read-io-threads=# Number of background read I/O threads in InnoDB. --innodb-write-io-threads=# Number of background write I/O threads in InnoDB. --innodb-file-per-table Stores each InnoDB table to an .ibd file in the database dir. --innodb-flush-log-at-trx-commit[=#] Set to 0 (write and flush once per second), 1 (write and flush at each commit) or 2 (write at commit, flush once per second). --innodb-flush-method=name With which method to flush data. --innodb-force-recovery=# Helps to save your data in case the disk image of the database becomes corrupt. --innodb-log-buffer-size=# The size of the buffer which InnoDB uses to write log to the log files on disk. --innodb-log-file-size=# Size of each log file in a log group. --innodb-log-files-in-group=# Number of log files in the log group. InnoDB writes to the files in a circular fashion. Value 3 is recommended here. --innodb-log-group-home-dir=name Path to InnoDB log files. --innodb-max-dirty-pages-pct=# Percentage of dirty pages allowed in bufferpool. --innodb-open-files=# How many files at the maximum InnoDB keeps open at the same time. --innodb-use-native-aio Use native AIO if supported on this platform. --innodb-page-size=# The universal page size of the database. --innodb-log-block-size=# The log block size of the transaction log file. Changing for created log file is not supported. Use on your own risk! --innodb-doublewrite-file=name Path to special datafile for doublewrite buffer. (default is : not used) --innodb-buffer-pool-filename=name Filename to/from which to dump/load the InnoDB buffer pool --debug-sync=name Debug sync point. This is only used by the xtrabackup test suite --innodb-checksum-algorithm=name The algorithm InnoDB uses for page checksumming. [CRC32, STRICT_CRC32, INNODB, STRICT_INNODB, NONE, STRICT_NONE] --innodb-log-checksums Whether to compute and require checksums for InnoDB redo log blocks (Defaults to on; use --skip-innodb-log-checksums to disable.) --innodb-undo-directory=name Directory where undo tablespace files live, this path can be absolute. --innodb-undo-tablespaces=# Number of undo tablespaces to use. --innodb-redo-log-encrypt Enable or disable Encryption of REDO tablespace. --innodb-undo-log-encrypt Enable or disable Encrypt of UNDO tablespace. --defaults-group=name 該選項表示從配置檔案讀取的組預設為mysqld --open-files-limit=# 最大可以開啟的檔案數 --server-id=# 備份的mysql例項的ID --transition-key[=name] Transition key to encrypt tablespace keys with. --xtrabackup-plugin-dir=name xtrabackup 外掛的目錄 --generate-new-master-key 當copy-back時候生master key --generate-transition-key 生產transition key並存儲到keyring. 6.版本新增和移除的引數: 1.相比於2.4.12版本移除的引數: --compact:該選項表示建立一份沒有輔助索引的緊湊的備份 --binlog-info[=name] --reencrypt-for-server-id=# --ssl Deprecated. Use --ssl-mode instead.(Defaults to on; use --skip-ssl to disable.) --ssl-verify-server-cert Deprecated. Use --ssl-mode=VERIFY_IDENTITY instead. --innodb-log-arch-dir=name Where full logs should be archived. --innodb-fast-checksum --redo-log-version=# Redo log version of the backup. For --prepare only. --innodb-log-checksum-algorithm=name The algorithm InnoDB uses for log checksumming. [CRC32,STRICT_CRC32, INNODB, STRICT_INNODB, NONE, STRICT_NONE] 2.新增引數: --innodb-redo-log-encrypt Enable or disable Encryption of REDO tablespace. --innodb-undo-log-encrypt Enable or disable Encrypt of UNDO tablespace. --innodb-log-checksums Whether to compute and require checksums for InnoDB redo log blocks 。Defaults to on; use --skip-innodb-log-checksums to disable. --ssl-fips-mode=name SSL FIPS mode to use, permitted values are: OFF, ON,STRICT --server-public-key-path=name File path to the server public RSA key in PEM format. --get-server-public-key Get server public key 3.結論: xtrabackup命令在使用上和2.4.12版本在使用上變化不大,主要是增強了安全和修改了mysql8.0變更的引數。 7.結論: xtrabackup 8.0的幫助資訊還有相當一部分保留了2.4.12版本中的innobackupex命令,8.0版本的備份軟體還未正式釋出。 靜候GA版本釋出。 8 參考: https://www.percona.com/blog/2018/10/09/announcement-second-alpha-build-of-percona-xtrabackup-8-0-is-available/ https://www.percona.com/blog/2018/09/12/announcement-experimental-build-of-percona-xtrabackup-8-0/