mysql的遠程備份 和其他備份方法


一:前期准備

至少需要兩台主機

192.168.175.200       vip

192.168.175.250       node1

做密鑰否則不能拷貝過去

命令:[root@vip ~]#cd /root/.ssh

命令:[root@vip ~]#ssh-keygen

#

命令:[root@vip .ssh]#ssh-copy-id  192.168.175.250

測試一下,命令:[root@vip .ssh]# ssh 192.168.175.250             #不需要密碼直接連接

1.另一台主機最好提前創建一個數據存放地

命令:[root@node1 ~]# mkdir -p /data/rsyncdata/databak/

 

2..備份腳本內容

命令:[root@vip ~]# vim databak.sh

#!/bin/bash
date=$(date +%Y%m%d%H%M%S)                                                                                       #設置時間變量,括號內是設置時間的格式
mysqldump -uroot -p'123456' -A > /root/$date-192.168.175.200.sql                                     #MySQL所有數據導出復制到/root/$date-192.168.175.200.sql文件中        注意:yum安裝最好是用命令mysqldump的絕對路徑而用tar包安裝,可以不用                       
if [ $? -eq 0 ];then                                                                                                                   #判斷上次執行命令是否正確,正確為0,不正確非0
echo "數據備份完成"                                                                                                               #正確執行,輸出結果
scp /root/$date-192.168.175.200.sql 192.168.175.250:/data/rsyncdata/databak/                 #將導出的文件遠程復制到192.168.175.250主機上的/data/rsyncdata/databak/文件中
sleep  4                                                                                                                                   #睡眠4秒
echo "遠程備份完成"                                                                                                                #輸出結果
rm -rf /root/$date-192.168.175.200.sql                                                                                   #刪除本地主機導出的數據
fi                                                                                                                                               #結束

 

 

3.設置執行計划任務

(1)先將腳本加執行權限(x)

命令:[root@vip ~]# chmod +x databak.sh

 

(2)周期性任務要用的命令是crontab,那么這里有個選項-e(edit)表示編輯輸入

命令:[root@vip ~]# crontab -e

0 * * * * sh /root/databak.sh             #分時日月周的順序,這是每小時執行一次腳本

 

 

 

(3)編寫完這個計划任務以后,還是要檢查一下這個任務是否在啟動

命令:[root@vip ~]# ps -le | grep cron

 

 

S表示確實是啟動的,如果沒有啟動可以輸入命令:/etc/rc.d/init.d/cron start就可以了

 

 

XTRABAKUP工具         在線熱備備份過程中不鎖庫表

主要含兩個插件:

rpm -ivh libev-4.15-1.el6.rf.x86_64rpm

yum -y install percona-xtrabackup-24-2.4.7-1.e17.x86_64.rpm

--redo-only                              日志合並                                                                        --apply-log                               准備恢復數據

--copy-back                              拷貝數據                                                                       --incremental                            增量備份

--incremental-basedir                增量備份時指定上一次備份數據存儲的目錄名              --incremental-dir                       准備恢復數據時指定增量備份數據存儲的目錄名

--export                                     導出表信息                                                                    import                                        導入表空間

--host                                        主機名                                                                           --user                                       用戶名

--port                                         端口號                                                                           --password                               密碼

--databases                               數據庫名                                                                       --no-timestamp                            不用日期命名備份文件存儲的子目錄名

 

   完全備份                              用戶名                   密碼         備份目錄名

例:innobackupex  -user       root     -password 123456          /book              --no-timestamp        完全備份

完全恢復

例:   先   innobackupex   --apply-log   /book         准備恢復數據

         后    innobackupex  --copy-back     /book          恢復數據

恢復完后/var/lib/mysql目錄要改歸屬人如: chown -R mysql:mysql /var/lib/mysql

恢復單張表

innobackupex  -user       root     -password 123456   --databases="db5"       /book              --no-timestamp             這是備份db5庫的文件

數據庫里打這個命令:  alter   table   db5.b discard tablespace     刪除表空間數據

innobackupex   --apply-log   --export  /book       導出表信息

cp  /book/db5/b.{cfg,exp,idb}    /var/lib/mysql/db5/     拷貝表信息到db5庫下

chown mysql:mysql  /var/lib/mysql/db5/b.*              改所有者和所屬組

alter   table   db5.b import  tablespace         導入表空間數據庫

rm -rf /var/lib/mysql/db5/b.cfg       b.exp       刪除這兩個文件

增量備份與恢復

innobackupex  -user       root     -password 123456          /lock              --no-timestamp       完全備份

                                                                                      增量備份         存放目錄              增量備份時指定上一次備份數據存儲的目錄名       不用日期命名備份文件存儲的子目錄名

innobackupex  -user       root     -password 123456     --incremental       /book                   --incremental-basedir=/lock                               --no-timestamp          注: 用--incremental-basedir=/lock這個命令就可以使這次備份的數據只備份上次沒備份過的數據

日志合並

scp  /book   192.168.17.11:/opt            scp  /lock   192.168.17.11:/opt              把兩個文件拷貝到准備恢復的電腦上

systemctl  stop mysql   關閉數據庫

innobackupex   --apply-log   --redo-only  /opt/lock  准備恢復數據 

innobackupex --apply-log --redo-only /opt/lock --incremental-dir=/opt/book  //合並日志

innobackupex --copy-back /opt/lock     恢復文件

chown  -R mysql:mysql /var/lib/mysql //修改所有者與組用戶

 systemctl  start mysqld //啟動服務        

登陸mysql查看是否恢復


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM