使用 Xtrabackup 部署 MySQL 從庫

來源:互聯網
上載者:User

標籤:

Database Backup和恢複是資料庫管理工作中非常重要的一個部分。

筆者常用的兩個備份工具是mysqldump (邏輯備份)和 Xtrabackup (物理備份)。

對於前者一般是用在淩晨的業務低峰期的定時任務中對資料庫進行全備份;這樣做的好處是匯出的資料是全SQL 文本,通過管道GZIP 壓縮後能夠大大的節省磁碟空間(當然備份一般會上傳異地伺服器儲存)。mysqldumpd 缺點是比較耗費時間,筆者建議資料量在50GB以內的可以使用該工具,耗時尚可接受;但是資料量超過70GB時,不建議使用該工具。

對於後者使用不太頻繁,該工具也可以產生一致性備份,用於搭建主從環境。針對資料量較大的(100GB以上,甚至數百GB)資料庫,備份時間上Xtrabackup的優勢非常明顯,並且不會影響線上業務。

 

下面以搭建主從環境為例,簡單介紹 下 Xtrabackup  的安裝和使用。示範版本為  percona-xtrabackup-2.1.9 ,支援 MySQL 5.5 5.6。

 

1.安裝依賴軟體包

yum -y install perl perl-devel libaio libaio-devel perl-DBI perl-DBD-MySQL perl-TermReadKey  perl-Time-HiRes

 

2.安裝xtrabackup
解壓tar包到安裝目錄,
tar -zxvf percona-xtrabackup-2.1.9-744-Linux-x86_64.tar.gz  -C  /usr/local/

重新命名目錄

cd /usr/local/
mv percona-xtrabackup-2.1.9-744-Linux-x86_64  xtrabackup

 

3.執行備份之前,先配置環境變數,否則報錯

export PATH=$PATH:/usr/local/xtrabackup/bin

其中設定檔的路徑和密碼請根據自己的實際環境設定

 

備份資料檔案

/usr/local/xtrabackup/bin/innobackupex --defaults-file=/usr/local/mysql/my.cnf --user=root --password=A2sW13  /ptbak/

 

將binlog 應用到資料檔案,這是恢複資料前必須完成的步驟

/usr/local/xtrabackup/bin/innobackupex --defaults-file=/usr/local/mysql/my.cnf --user=root --password=A2sW13 --apply-log /ptbak/2016-08-09_03-49-02/

 

拷貝備份資料到目標資料庫

scp -r  /ptbak/  192.168.80.12:/root/


3.恢複資料錢準備工作
先在目標庫上停掉mysql進程
service mysqld stop

備份或者刪原資料目錄 (以 /usr/local/mysql/data 為樣本)
mv /usr/local/mysql/data/ /usr/local/mysql/data.bak/  

或者 rm -rf  /usr/local/mysql/data

(刪除資料之前請三思,線上環境不建議這麼幹)

建立新的資料目錄

mkdir -p  /usr/local/mysql/data

 

4.恢複資料,--copy-back 選項的作用是從備份目錄拷貝資料,日誌到my.cnf檔案裡規定的目錄下
/usr/local/xtrabackup/bin/innobackupex --defaults-file=/etc/my.cnf --user=root --copy-back /root/2016-08-09_03-49-02/

 

修改資料目錄許可權
chown -R mysql:mysql  /usr/local/mysql/data

 

 

5.刪除ib_logfile檔案,否則mysql啟動報錯

cd  /usr/local/mysql/data
rm -rf ib_logfile*

啟動mysql
service mysql start

 

6.目標資料庫啟動後,將擁有和來源資料庫相同的root密碼;建議修改root密碼
SET PASSWORD FOR ‘root‘@‘localhost‘ = PASSWORD(‘xxxxxx‘);

 

7.查看備份的一致性資訊
cat /root/2016-08-09_03-49-02/xtrabackup_binlog_info
mysql-bin.000969307486338

master_log_file=‘mysql-bin.000969‘,
master_log_pos=307486338;

 

8.設定啟用主從複製

主庫上建立複製使用者和許可權

GRANT REPLICATION SLAVE ON *.* TO ‘repl‘@‘192.168.80.12‘ identified by ‘123456‘;


在從庫上啟動複製進程
change master to
master_host=‘192.168.80.11‘,
master_port=3306,
master_user=‘rpel‘,
master_password=‘123456‘,
master_log_file=‘mysql-bin.000969‘,
master_log_pos=307486338;

>start slave;

不妥之處,敬請指教!

 

使用 Xtrabackup 部署 MySQL 從庫

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.