天天看點

Linux MySQL備份——percona-xtrabackup工具的安裝和使用

MySQL備份

在生産環境中資料庫可能會遭遇意外情況進而導緻資料丢失, 如硬體故障、軟體故障、自然災害、黑客攻擊、誤操作,當機是以,為了應對意外突發情況是以我們要提前做好資料備份

實體備份/冷備份:直接複制資料庫檔案,适用于大型資料庫環境,不受存儲引擎的限制,但不能恢複到不同的MySQL版本(tar,cp,scp)。拷貝資料, 優點快,缺點服務停止。

邏輯備份/熱備份:備份的是建表、建庫、插入等操作所執行SQL語句(DDL DML DCL),适用于中小型資料庫(mysqldump,mydumper)。效率相對較低

完全備份

Linux MySQL備份——percona-xtrabackup工具的安裝和使用
增量備份因每次僅備份自上一次備份以來有變化的檔案,所 以備份體積小,備份速度快,但是恢複的時候,需要按備份時間順序,逐個備份版本進行恢複,恢複時間長。
Linux MySQL備份——percona-xtrabackup工具的安裝和使用

差異備份:占用空間比增量備份大,比完整備份小,恢複時僅需要恢複第一個完整版本和最後 一次的差異版本(包含所有的差異),恢複速度介于完整備份和增量備份之間。

percona-xtrabackup:它是開源免費的支援MySQL 資料庫熱備份的軟體,它能對InnoDB和XtraDB存儲引擎的資料庫非阻塞地備份。它不暫停服務建立Innodb熱備份;

為mysql做增量備份;在mysql伺服器之間做線上表遷移;使建立replication更加容易;備份mysql而不增加伺服器的負載。

percona是一家老牌的mysql技術咨詢公司。它不僅提供mysql的技術支援、教育訓練、咨詢,還釋出了mysql的分支版本–percona Server。并圍繞

percona Server還釋出了一系列的mysql工具。

  • 安裝percona-xtrabackup:
yum install -y  https://repo.mysql.com//mysql80-community-release-el7-3.noarch.rpm   mysql官方源
yum install -y yum-utils      安裝yum工具
yum repolist all | grep mysql     檢視mysql可用版本
yum-config-manager --disable mysql80-community    禁用80
yum-config-manager --enable mysql57-community     啟用57
yum  install mysql-community-libs-compat -y
yum install https://repo.percona.com/yum/percona-release-latest.noarch.rpm
yum -y install percona-xtrabackup-24.x86_64    安裝percona
rpm -ql percona-xtrabackup-24     查詢安裝結果      

完全備份流程

innobackupex --user=root --password='XieDongwy@163' /xtrabackup/full             備份ls /xtrabackup/full/         檢視備份目錄 ls /xtrabackup/full/2021-04-16_18-55-07/cat /xtrabackup/full/2021-04-16_18-55-07/xtrabackup_binlog_info    觀看二進制日志位置      
systemctl stop mysqld      停止資料庫
以下兩行代碼測試環境使用rm -rf /var/lib/mysql/*                删除mysql資料庫檔案rm -rf /var/log/mysqld.log          删除mysql日志檔案      
Linux MySQL備份——percona-xtrabackup工具的安裝和使用
innobackupex --apply-log /xtrabackup/full/2017-08-01_00-00-18/    指定備份點
innobackupex --copy-back /xtrabackup/full/2017-08-01_00-00-18/   恢複檔案      
ls /var/lib/mysqlchown -R mysql.mysql /var/lib/mysql
systemctl start mysqld
mysql -uroot -p'XieDongwy@163'                     登陸驗證      
Linux MySQL備份——percona-xtrabackup工具的安裝和使用

增量備份流程

create database testdb;use testdb;create table test(id int);insert into test values (1);select * from test;      
Linux MySQL備份——percona-xtrabackup工具的安裝和使用

完整備份:1

rm -rf /xtrabackup/*date 04010000    (如果調的話時間建議靠後設定。)
innobackupex --user=root --password='XieDongwy@163' /xtrabackup
ll /xtrabackup/      
Linux MySQL備份——percona-xtrabackup工具的安裝和使用

增量備份:2

date 04020000     (更新時間)
mysql -uroot -p'XieDongwy@163' -e  'insert into testdb.test values (2)'innobackupex --user=root --password='XieDongwy@163' --incremental /xtrabackup/ --incremental-basedir=/xtrabackup/2021-04-16_19-14-11ls  /xtrabackup/      
Linux MySQL備份——percona-xtrabackup工具的安裝和使用

增量備份:3

date 04030000     (更新時間)
mysql -uroot -p'XieDongwy@163' -e  'insert into testdb.test values (3)'innobackupex --user=root --password='XieDongwy@163' --incremental /xtrabackup/ --incremental-basedir=/xtrabackup/2021-04-16_19-17-01 ls  /xtrabackup/      
Linux MySQL備份——percona-xtrabackup工具的安裝和使用

增量備份依次類推。

  • 增量備份恢複
systemctl stop mysqld           停止mysqlrm -rf /var/lib/mysql/*           清理庫      
innobackupex --apply-log --redo-only /xtrabackup/2021-04-16_19-14-11  恢複1
innobackupex --copy-back /xtrabackup/2021-04-16_19-14-11 
chown -R mysql.mysql /var/lib/mysql
systemctl start mysqld      
Linux MySQL備份——percona-xtrabackup工具的安裝和使用
innobackupex --apply-log --redo-only /xtrabackup/2021-04-16_19-14-11  --incremental-dir=/xtrabackup/2021-04-16_19-17-01                    恢複2
innobackupex --apply-log --redo-only /xtrabackup/2021-04-16_19-17-01 --incremental-dir=/xtrabackup/ 2021-04-16_19-18-23    恢複3      
rm -rf /var/lib/mysql/*
innobackupex --copy-back /xtrabackup/2021-04-16_19-17-01    恢複累加的123chown -R mysql.mysql /var/lib/mysql
systemctl start mysqld
mysql -uroot -p'XieDongwy@163' -e 'select * from testdb.test'      
  • 差異備份

rm -rf /xtrabackup/*

完整備份

1

date 05010000   (修改時間,這裡我不做修改)
create database testdb;use testdb;create table test2(id int);insert into test2 values(1);select * from test2;innobackupex --user=root --password='XieDongwy@163' /xtrabackup
ll /xtrabackup/      

2

date 05020000
mysql -uroot -p'XieDongwy@163' -e 'insert into testdb.test2 values(2)'
 innobackupex --user=root --password='XieDongwy@163' --incremental /xtrabackup --incremental-basedir=/xtrabackup/2021-04-16_20-38-09
ll /xtrabackup/du -sh /xtrabackup/      

3

date 05030000
mysql -uroot -p'XieDongwy@163' -e 'insert into testdb.test2 values(3)'
 innobackupex --user=root --password='XieDongwy@163' --incremental /xtrabackup --incremental-basedir=/xtrabackup/2021-04-16_20-40-42
ll /xtrabackup/du -sh /xtrabackup/      
systemctl stop mysqldrm -rf /var/lib/mysql/*
innobackupex --apply-log --redo-only /xtrabackup/2021-04-16_20-38-09
innobackupex --apply-log --redo-only /xtrabackup/2021-04-16_20-38-09 --incremental-dir=/xtrabackup/2021-04-16_20-39-18
innobackupex --copy-back /xtrabackup/2021-04-16_20-38-09 
chown -R mysql.mysql /var/lib/mysql/
ystemctl start mysqld      

繼續閱讀