mysql熱備工具-percona innobackupex 全備步驟【附 遠程冷備 程序】

#1—環境 工做地點:量化派html

使用背景:主從的從庫掛掉,只剩下主庫高負荷工做。迫切須要備份數據,搭建從庫。mysql

#2—本身的話: 合格運維工程師或DBA工程師,操做數據時,首先須要備份。sql

這樣當數據庫出現問題時,才能恢復。數據庫

可是通常的數據恢復時間是很長的,不符合業務須要求,這就須要咱們使用一個快速備份與恢復的軟件。bash

聽別人說使用mysqldump會鎖表,大數據量的時候會很慢。app

而後咱們研究決定採用 percona innobackupex, 這是一個快速的熱備工具,可以支持全量和增量備份。運維

優勢一大堆,你用就對了!直接上操做手冊,方便之後本身操做。ssh

#3—安裝tcp

innobackupex的安裝,直接看官網,有多種安裝方式: https://www.percona.com/doc/percona-xtrabackup/2.4/index.html工具

咱們採用的方式是用 rpm包安裝,這樣方便之後統一版本,

##3.1—下載包 wget https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.4.0/binary/redhat/7/x86_64/percona-xtrabackup-24-2.4.0-rc1.1.el7.x86_64.rpm ##3.2—本地安裝 yum localinstall percona-xtrabackup-24-2.4.0-rc1.1.el7.x86_64.rpm ##3.3—卸載命令 yum remove percona-xtrabackup #4—數據備份和恢復

備份以前,將原先mysql的data目錄刪除,注意,必須data目錄所有清空。。data目錄所有清空。。data目錄所有清空。。

##4.1—備份數據

innobackupex --defaults-file=/your/path/of/mysql/3306/my.cnf --user=root --password=123456 --port=3306 --host=localhost --parallel=4 --database=test /path/to/BACKUP-DIR/ 2>/tmp/data/err.log
    友情提示:
    ①——
        --parallel=4     命令能讓你的數據備份速度提高四倍;
    ②——
        --database=test     單獨對test數據庫作備份 ,如果不添加此參數那就那就是對全庫作備份
    ③——
        2>/tmp/data/err.log    輸出信息寫入日誌中
    ④——咱們沒有采用在備份數據的時候壓縮數據,是由於咱們以爲壓縮會佔用咱們操做數據庫的時間,因此咱們最終選擇在數據庫備份完成以後,採用tar zcf 的方式來壓縮數據,事實證實這樣是最好的。

##4.2—準備數據

innobackupex --apply-log --use-memory=4G /path/to/BACKUP-DIR
    友情提示:--use-memory=4G 該命令默認大小是100m,根據你的內存,來修改一下配置,提高數據恢復速度

##4.3—開始恢復

innobackupex --copy-back /path/to/BACKUP-DIR

試一下,你就會知道有多快。。有多爽。。

#5—權限設置

chown -R mysql:mysql mysql目錄

#6—以後就能夠操做你的數據庫了。

#7—

咱們在第一次使用的時候,在18G的地方不知道什麼意外,鎖了一下表,而後咱們第二次在備份數據的時候,到了16G將3306端口drop了一下,在備份完以後,又恢復了該端口。

--16G時

    iptables -A INPUT -p tcp --dport 3306 -j DROP

    --數據恢復完後

    iptables -A INPUT -p tcp --dport 3306 -j ACCEPT

    service iptables stop

    service iptables start

*8—遠程冷備 神技能 其實最重要的是最後一句

#!/bin/bash

backup_time=`date +%Y_%m_%d_%H`
current_ip="${要備份的機器ip}"
remote_ip="${遠程機器ip}"
remote_path="/home/quant_group/mysql/${current_ip}/full/${backup_time}.tar"
mysql_host="--host=${current_ip}"
mysql_user="--user=${備份的用戶名}"
mysql_pass="--password=${備份的密碼}"
mysql_port="--port=3306"
defaults_file="--defaults-file=/home/quant_group/mysql/3306/my.cnf"

innobackupex ${defaults_file} ${mysql_user} ${mysql_pass} ${mysql_port} ${mysql_host} --stream=tar ./ | gzip | sshpass -p '' ssh root@${remote_ip}  "cat - > ${remote_path}"
相關文章
相關標籤/搜索