MySQL使用xtrabackup進行備份還原操作
本文實例為大家分享了xtrabackup備份還原的具體代碼,供大家參考,具體內(nèi)容如下
使用rpm包安裝xtrabackup
## 安裝依賴包 yum -y install perl perl-devel libaio libaio-devel perl-Time-HiRes perl-DBD-MySQL rsync ## 安裝libev4包 rpm -ivh libev4-4.15-7.1.x86_64.rpm ## 安裝percona-xtrabackup rpm -ivh percona-xtrabackup-24-2.4.4-1.el6.x86_64.rpm
為備份操作創(chuàng)建MySQL賬戶。
## xtrabackup備份創(chuàng)建備份用戶 CREATE USER 'backuper'@'localhost' IDENTIFIED BY 'backup@123'; GRANT SELECT, RELOAD, PROCESS, SHOW DATABASES, SUPER, LOCK TABLES, REPLICATION CLIENT, SHOW VIEW, EVENT ON *.* TO 'backuper'@'localhost'; FLUSH PRIVILEGES;
創(chuàng)建備份文件目錄
mkdir /export/mysql_backup
對數(shù)據(jù)庫進行完整備份,如果在從庫上進行備份,請?zhí)砑?-slave_info –safe-slave-backup參數(shù)來獲取復(fù)制主庫的binlog信息。默認(rèn)備份會將當(dāng)前庫的binlog信息保存到xtrabackup_binlog_info文件中,而--slave_info參數(shù)將復(fù)制主庫的binlog信息保存到xtrabackup_slave_info中,如果使用備份來添加復(fù)制,請注意選取正確的binlog信息。
## 進行完整備份并壓縮 innobackupex --defaults-file="/export/servers/mysql/etc/my.cnf" \ --host="localhost" \ --port=3358 \ --user="backuper" \ --password="backup@123" \ --socket="/export/data/mysql/tmp/mysql.sock" \ --stream=tar \ "/export/mysql_backup/" | gzip -> "/export/mysql_backup/mysql_full_backup.tar.gz"
注意檢查命令是否成功執(zhí)行,使用tar備份能有效降低備份文件的大小,但是壓縮和加壓縮都會嚴(yán)重消耗cpu資源。
假設(shè)進行完上面操作,將備份文件拷貝到新的服務(wù)器上,同樣放到/export/mysql_backup/下
解壓備份文件
## 切換到備份壓縮文件所在目錄 ## 強烈建議創(chuàng)建一個空的目錄來存放備份文件,以避免解壓后的文件與其他文件沖突 cd /export/mysql_backup/ ##加壓備份 tar xvf mysql_full_backup.tar.gz
使用xtrabackup備份得到的數(shù)據(jù)是備份結(jié)束時間點的數(shù)據(jù),備份期間所產(chǎn)生的事務(wù)日志被保存到備份文件xtrabackup_logfile中,因此需要先對備份文件進行日志重做和回滾未提交事務(wù)。--apply-log還會根據(jù)backup-my.cnf來生成新的事務(wù)日志文件。
#使用apply-log參數(shù)來處理事務(wù)日志 innobackupex --apply-log /export/mysql_backup/
由于在還原時要求目標(biāo)目錄為空,而即使新安裝的MySQL服務(wù)器也會存在一些如系統(tǒng)數(shù)據(jù)庫的數(shù)據(jù)文件,因此在將備份還原到MySQL之前,需要將當(dāng)前MySQL數(shù)據(jù)目錄下的文件進行情況,為保險期間,建議先使用mv命令來改名。
#備份當(dāng)前MySQL的數(shù)據(jù)目錄 mv /export/data/mysql /export/data/mysql_bak
xtrbackup備份操作只備份數(shù)據(jù)相關(guān)的文件,并不會備份如錯誤日志/慢日志等文件或目錄,而上一步操作mv可能移除掉部分文件目錄,因此需要手動再創(chuàng)建一遍。
## 創(chuàng)建MySQL數(shù)據(jù)目錄 mkdir -p /export/data/mysql/tmp /export/data/mysql/data /export/data/mysql/dumps /export/data/mysql/log
使用move-back參數(shù)來將數(shù)據(jù)移動到MySQL數(shù)據(jù)目錄下,同樣也可以使用--copy-back參數(shù)來只拷貝而不復(fù)制。
innobackupex --defaults-file="/export/servers/mysql/etc/my.cnf" --move-back /export/mysql_backup/
數(shù)據(jù)復(fù)制到MySQL數(shù)據(jù)目錄后,需要修改這些數(shù)據(jù)文件的所有者,保證MySQL服務(wù)有權(quán)限操縱。
#修改MySQL數(shù)據(jù)目錄的權(quán)限 chown -R mysql:mysql /export/data/mysql
最終啟動MySQL服務(wù),檢查數(shù)據(jù)是否正常
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Mysql中批量替換某個字段的部分?jǐn)?shù)據(jù)(推薦)
這篇文章主要介紹了Mysql中批量替換某個字段的部分?jǐn)?shù)據(jù),通過實例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下2020-02-02IDEA無法連接mysql數(shù)據(jù)庫的6種解決方法大全
這篇文章主要介紹了IDEA無法連接mysql數(shù)據(jù)庫的6種解決方法大全,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11MySQL對varchar類型數(shù)字進行排序的實現(xiàn)方法
這篇文章主要介紹了MySQL對varchar類型數(shù)字進行排序的實現(xiàn)方法,文中用的是CAST方法,MySQL CAST()函數(shù)用于將值從一種數(shù)據(jù)類型轉(zhuǎn)換為另一種特定數(shù)據(jù)類型,并通過代碼示例講解的非常詳細(xì),需要的朋友可以參考下2024-04-04分享MySQL生產(chǎn)庫內(nèi)存異常增高的排查過程
這篇文章主要介紹了分享MySQL生產(chǎn)庫內(nèi)存異常增高的排查過程,基于MySQL實例的內(nèi)存使用率高的報警的問題展開對主題的問題,具有一定的參考價值,需要的小伙伴可以參考一下2022-04-04MySQL使用觸發(fā)器實現(xiàn)數(shù)據(jù)自動更新的應(yīng)用實例
觸發(fā)器是非常常見的自動化數(shù)據(jù)庫操作方式,無論是在數(shù)據(jù)更新、刪除還是需要自動添加一些內(nèi)容到數(shù)據(jù)表上,觸發(fā)器都可以發(fā)揮作用,熟悉 SQL 的基本語法和一些常見的用例,可以幫助你合理地設(shè)置自己的數(shù)據(jù)庫操作流程,2024-01-01使用Shell腳本進行MySql權(quán)限修改的實現(xiàn)教程
原先數(shù)據(jù)配置文件中有bind-address=127.0.0.1,注釋掉此配置后,原數(shù)據(jù)庫中默認(rèn)帶%root的權(quán)限,現(xiàn)在需要通過腳本實現(xiàn)白名單列表中的ip添加權(quán)限允許訪問數(shù)據(jù)庫,本文給大家介紹了使用Shell腳本進行MySql權(quán)限修改的實現(xiàn)教程,需要的朋友可以參考下2024-03-03