天天看點

MySQL 8.0.11 innodb cluster 運維管理手冊之四-msyqlbackup備份MySQL 8.0.11 innodb cluster 運維管理手冊之四-msyqlbackup備份

MySQL 8.0.11 innodb cluster 運維管理手冊之四-msyqlbackup備份

作者 方連超

Mysqlbackup 介紹

mysqlbackup是一個熱備份工具、也就是說它不像mysqldump那樣給表上一個全局鎖,由于mysqldump上了這個鎖,是以就造成用戶端隻能對資料庫進行讀操作不能寫,這也就是稱mysqldump為溫備份的原因。但是mysqlbackup真的有這麼吊嗎?答案是并沒有。對于innodb引擎的表mysqlbackup 熱備的;但是對于非innodb表mysqlbackup就隻能溫備了,原因是這類引擎不支援事務也就是說不能通過事務日志來保證備份的一緻性,是以就隻能給表加上一個全局鎖來解決了。為了得到一緻的備份mysqlbackup要不停的去追蹤mysql資料庫的sln号,也就是說mysqlbackup要執行備份那麼它一定要連接配接上資料庫。mysqlbackup對資料庫的備份是通過複制檔案的方式進行的,也就是說mysqlbackup要和資料庫在同一台機器上,和xtrabackup 很相似的。

安裝 mysqlbackup

Mysqlbackup 是企業版mysql中的,但可以拿來使用,登入oracle雲下載下傳,搜尋mysql backup,下載下傳二進制檔案

mysql-commercial-backup-8.0.11-linux-glibc2.12-x86_64.tar.gz

傳到主機上并解壓,

會有 bin 和lib 檔案夾,将其中的檔案拷貝到 /usr/local/mysql 對應的目錄中, 這裡要把 軟連接配接,庫全部拷貝的,不然會報錯

備份使用者

(官方指導指令)

CREATE USER 'backup'@'localhost' IDENTIFIED BY '$$$$$$$$$$$$$$';
GRANT RELOAD ON *.* TO 'backup'@'localhost';
GRANT CREATE, INSERT, DROP, UPDATE ON mysql.backup_progress TO 'backup'@'localhost';
GRANT CREATE, INSERT, SELECT, DROP, UPDATE ON mysql.backup_history TO 'backup'@'localhost';
GRANT REPLICATION CLIENT ON *.* TO 'backup'@'localhost';
GRANT SUPER ON *.* TO 'backup'@'localhost';
GRANT PROCESS ON *.* TO 'backup'@'localhost';
GRANT ALTER ON mysql.backup_history TO 'backup'@'localhost';  #此表在主庫上備份才會生成和寫入
GRANT LOCK TABLES, SELECT, CREATE, DROP, FILE ON *.* TO 'backup'@'localhost';
GRANT CREATE, INSERT, DROP, UPDATE ON mysql.backup_sbt_history TO 'backup'@'localhost';#此表僅在主庫上有效           

全量備份

##備份到/fullbak/2018-10-10_19-19-11/datadir 類似這樣的目錄中
mysqlbackup --backup-dir=/data/backup/fullbak --host=127.0.0.1 --port=3306 --user=backup --password=$$$$$$$$ --with-timestamp backup
##############備份到/fullbak/2018-10-10_19-19-11/full_backup.bki 這樣一個單檔案中,以後不用備份單檔案,我們自己壓縮備份更小
mysqlbackup --backup-dir=/data/backup/fullbak --host=127.0.0.1 --port=3306 --user=backup --password=$$$$$$$$$$$ --backup-image=full_backup.bki  --with-timestamp backup-to-image           

    --user:使用者名。

    --password:密碼。

    --port:端口,預設值為3306。

    --backup-dir:可以看成是mysqlback的工作目錄,臨時用的。

    --backup-image:備份檔案名,這個是最終要的檔案,别的都可以不要。位置可以不帶路徑,預設放到 backup-dir

    backup-to-image:把所有的備份資訊輸出到一個備份檔案當中

--with-timepstap: 會自動生成一個帶日期檔案夾,這裡放的是備份時用的臨時檔案和最後的備份鏡像(不指定鏡像位置的化)

增量備份

實際證明,單檔案備份是無法進行恢複的,下面這個例子放棄

mysqlbackup --backup-dir=/data/backup --host=127.0.0.1 --port=3306 --user=backup --password=Qs3ce3saadr37tpP --incremental-with-redo-log-only --incremental-base=history:last_backup --with-timestamp --backup-image=incre_backup.bki backup-to-image

不備份成單個檔案,增量備份貌似也不支援,這個是可以進行恢複的 指定了備份到的增量目錄和增量的基源

mysqlbackup --incremental-backup-dir=/data/backup/increbak --host=127.0.0.1 --port=3306 --user=backup --password=Qs3ce3saadr37tpP --incremental  --incremental-base=history:last_backup --with-timestamp   --backup-image=incre_backup.bki backup           

跨主機遠端備份

繼續閱讀