mysql擴展:xtrabackup備份和作主從

使用xtrabackup連接:http://pan.baidu.com/s/1miFpS9M 密碼:86dx 連接:http://pan.baidu.com/s/1o7GXBBW 密碼:ue2fmysql

 

xtrabackup 只能備份引擎爲innodb的數據sql

後來innobackeupex 則能夠備份mysiam數據庫

(使用mysqldump 備份大量數據時會很慢,使用xtrabackup則很快,且把全部數據文件都會備份ls /data/mysql)數組

 

備份前保證mysql服務開啓安全

1.png

mysql 的數據目錄個人放在/data/mysql服務器

 

 

   1、使用xtrabackup全量備份過程:架構

1.安裝app

1.1 安裝rpm包(只有下載這個rpm,才能)ide

rpm -ivh http://www.percona.com/downloads/percona-release/redhat/0.1-3/percona-release-0.1-3.noarch.rpmspa

 

1.2 使用yum 下載xtrabackup 

yum list |grep xtrabackup (過濾所需的包)

安裝: yum install -y percona-xtrabackup

(安裝完後使用備份的命令:innobackupex)

 

2.mysql中建立備份用戶:

 mysql -uroot -p123456

2.1 GRANT RELOAD,  LOCK TABLES, REPLICATION CLIENT ON *.* TO 'backuser'@'localhost' identified by '123456';

 

2.png

2.2 刷新權限操做(建立完用戶時操做)

flush privileges;

(刷新完後退出mysql)

 

3.備份操做:

3.1 建立備份目錄:

mkdir /data/backup

3.png

 

3.2 執行備份命令:

innobackupex --defaults-file=/etc/my.cnf --user=backer --passwork='123456'  /data/backup

(--defaults-file=/etc/my.cnf  這個選項是要放在全部的參數以前,文件路徑由每一個人設定的配置文件爲主,且只有指定它才能夠找到datadir

4.png


的路徑,就是mysql服務的數據目錄文件。)

執行命令後報錯:

5.png

 問題緣由是它自動的去找它默認的.sock(/var/lib/mysql/mysql.sock)文件。因此在命令中咱們要指定咱們定義的.sock文件路徑。

 

innobackupex --defaults-file=/etc/my.cnf --user=backuser --password='123456'    -S /tmp/mysql.sock   /data/backup

(/tmp/mysql.sock是我在配置文件my.cnf中定義的)

6.png

 

3.3查看備份文件:

cd /data/backup/

ls

 du -sh *

7.png

 

原文件和備份文件對比:

8.png

 

(備份出來的文件不能直接複製至mysql的數據文件直接使用。由於備份文件是有自帶格式的。)

 

4.數據恢復

4.1 中止mysql服務:

/etc/init.d/mysqld  stop

9.png

 

4.2刪除mysql數據庫文件(datadir的路徑文件)

刪除原數據:(爲了安全仍是先把原數據目錄文件複製移動)

mv /data/mysql /data/mysql.bak

mkdir /data/mysql

chown -R mysql:mysql /data/mysql    //指定屬主和屬組,由於原來文件的屬主和屬組都是mysql

(不/data/mysql/下的全部文件的屬主和屬組修改爲mysql,則在啓動服務時沒法啓動,出現下圖的錯誤:(chown -R  ,-R是針對目錄,做用是級聯更改) 

1.png

)

4.3恢復數據:

(1)至關初始化步驟:

innobackupex --use-memory=512M --apply-log 

2018-05-13_11-05-07

(

--use-memory= 這個選項是爲了加快備份速度的,分配大小主要看咱們機器內容的大小而定,--apply-log 指定具體備份數據文件,由於咱們備份的數據文件是以時間點命名的。)

 

(2)真正備份命令:

innobackupex --defaults-file=/etc/my.cnf --copy-back /data/backup/

2018-05-13_11-05-07

(--copy-back 指定備份文件路徑,備份目錄爲全量備份)

2.png

 

 

(ibdatal是絕對不能刪除的,真正存儲數據的文件)

恢復完數據後,數據的屬主和數組要修改成mysql 不然啓動不了服務。

chown -R /data/mysql

 

 

 

通常業務操做:先備份後作主從,備份儘可能在凌晨操做.

 

!!!!以上這種操做的備份方式是全量備份執行過程!!

 

 

 

 

 

                             2、增量備份

啓動mysql服務:且同用上面操做的mysql備份用戶。

 

1.建立備份目錄:mkdir /data/backup/

 

2.先全量備份:

 innobackupex --defaults-file=/etc/my.cnf --user=backuser --password='123456' -S /tmp/mysql.sock /data/backup

3.png

4.png

 

3.模擬增量備份:

3.1 建立 一個數據庫,並導入數據:

mysql -uroot -p123456 -e "create database dbbackup"

mysqldump -uroot -p123456 zrlog >/tmp/zrlog.sql

mysql -uroot -p123456 dbbackup < /tmp/zrlog.sql

5.png

 

3.2 增量備份:

3.2.1 第一次增量備份

innobackupex --defaults-file=/etc/my.cnf --user=backuser --password='123456' -S /tmp/mysql.sock --incremental /data/backup --incremental-basedir=/data/backup/全量備份文件(2018-05-13_15-09-13)

(要注意的是--incremental和--incremental-basedir,--incremental-basedir後面加的是全量備份文件的路徑)

執行命令後在/data/backup/生成一個文件,大小爲新創數據庫內容大小:

6.png

 

3.2.1 第二次增量備份


 

建立 一個數據庫,並導入數據:

mysql -uroot -p123456 -e "create database dbbackup2"

 

mysql -uroot -p123456 dbbackup2 < /tmp/zrlog.sql

備份命令:(和第一次增量備份的命令基本同樣,可是最後備份目錄是基於第一次增量備份目錄之上的)

innobackupex --defaults-file=/etc/my.cnf --user=backuser --password='123456' -S /tmp/mysql.sock --incremental /data/backup --incremental-basedir=/data/backup/第一次增量備份目錄

 7.png

此時就有了一個全量備份文件和兩個增量備份文件:

 8.png

 

4.數據恢復

4.1 中止mysql服務:/etc/init.d/mysqld stop

9.png

 

4.2 刪除mysql 原數據

rm -rf /data/mysql/*

 

4.3 數據恢復加載初始化(相似初始化過程)

4.3.1 先全備初始:

innobackupex --apply-log --redo-only /data/backup/全量備份目錄

(innobackupex --apply-log --redo-only /data/backup/2018-05-13_15-09-13 >/tmp1.log 2> /tmp/1.log)

注意:比僅僅全量備份初始化多了 --redo-only 選項,>/tmp1.log 2> /tmp/1.log是把輸出放置一個文件(正確或錯誤輸出)

 

4.3.2 第一次增量備份初始:

innobackupex --apply-log --redo-only /data/backup/全量備份目錄  --incremental-dir=/data/backup/第一次增量備份目錄

 

4.3.2 第二次增量備份初始:

innobackupex --apply-log  /data/backup/全量備份目錄  --incremental-dir=/data/backup/第二次增量備份目錄

(這一步的時候不須要--redo-only選項

 

4.3.3 執行應用操做:

innobackupex --apply-log  /data/backup/全量備份目錄

10.png

 

4.4 真正備份命令:

innobackupex --copy-back /data/backup/全量備份文件

(執行完命令後能夠發現咱們增量的數據量文件)

11.png

 

最後執行一下 chown -R mysql:mysql /data/mysql 修改屬主和數組,不然啓動不了mysql服務。

 

 

注意:

1.在進行增量備份的時候,第一次增量備份應基於全量備份之上,第二次基於第一增量備份之上,依次類推。

 

2.當咱們增量備份都是在增長數據沒有刪除數據的狀況下,咱們恢復數據時能夠直接初始化全量備份和最後一次增量備份便可。最後執行innobackupex --apply-log  /data/backup/全量備份目錄和innobackupex --copy-back /data/backup/全量備份文件

 

通常企業mysql的架構用的是哪種呢?

主從

innobackex 要求數據庫版本在5.6以上



使用 Xtrabackup 在線對MySQL作主從複製

http://seanlook.com/2015/12/14/mysql-replicas/  參考

1.主庫操做:

1.1 建立複製帳號:

 mysql> GRANT REPLICATION SLAVE ON *.* TO 'slave_ali'@'192.168.5.%' IDENTIFIED BY 'slave_ali_pass';

 mysql> FLUSH PRIVILEGES;

 

1.2 賦予備份用戶權限:

 mysql> CREATE USER 'bkpuser'@'localhost' IDENTIFIED BY 'bkppass';

mysql> GRANT RELOAD, LOCK TABLES, REPLICATION CLIENT,PROCESS,SUPER ON *.* TO 'bkpuser'@'localhost';

mysql> FLUSH PRIVILEGES;

 

1.3.全量備份

innobackupex --defaults-file=/opt/mysql/my.cnf --host=localhost --port=3306 --user=bkpuser --password=${BKP_PASS} /data/backup/mysql

把全量備份目錄複製到(作從庫)的目錄,rsync

 

 

2.全量備份(從庫上操做)

在恢復的數據庫服務器(從庫)上:

 

2.1 恢復準備

$ innobackupex --use-memory=16G --apply-log 全量備份文件

 

2.2 確認數據庫是關閉的,而且datadir,目錄下爲空

$ innobackupex --defaults-file=/opt/mysql/my.cnf --use-memory=16G --copy-back  全量備份文件

 

2.3數據執行copy-back完成數據恢復後

修改數據文件的屬性:

 

chown -R mysql.mysql /opt/mysql_data

 

 

3.啓動從庫

3.1 啓動數據庫,注意看日誌

/opt/mysql/bin/mysqld_safe --defaults-file=/opt/mysql/my.cnf &

提示:若是你不肯定這個庫是誰的從庫,保守起見加上--skip-slave-start啓動,興許能防止數據不一致。

 

3.2change master

登陸數據庫:

$ mysql -uslave_ali -p'slave_ali_pass' -S /opt/mysql_data/mysql.sock 

 

mysql> change master to master_host=MASTER_HOST, master_port=3306, 

       master_user='slave_ali',master_password='slave_ali_pass', master_log_file='mysql-bin.000135', master_log_pos=262484673;

上面的 master_log_file 和 master_log_pos 便是輸出的值,也能夠在新的數據目錄下xtrabackup_binlog_info找到信息。

 

3.3驗證同步延遲

從庫執行 show slave status\G

相關文章
相關標籤/搜索