rsync+inotify-tools+ssh實現mysql-bin日誌文件實時備份

1、環境:兩臺Centos計算機直連,其服務器A的IP地址爲192.168.1.124,服務器B的IP地址爲192.168.1.121。


2、需求軟件安裝(ssh系統默認已經安裝):


服務器A:

yum install rsync inotify-tools


服務器B:

yum install rsync


3、建立用戶(備份執行用戶)

建立用戶:useradd rsync

設置密碼:略

注意:兩臺服務器都需要建立用戶(此處兩天服務器建立了相同的用戶,也可建立不同的用戶)


4、建立ssh-key實現ssh自動連接

服務器A


建立公鑰和私鑰

[root@A ~]# su - rsync

[rsync@A ~]$ ssh-keygen -t rsa(全部使用默認值,一直按回車即可)

完成後,此時會在/home/rsync/.ssh下,生成一對“公鑰和私鑰”,如下所示

[rsync@A .ssh]# ll

total 12

-rw-------. 1 rsync rsync 1675 Oct 20 01:47 id_rsa

-rw-r--r--. 1 rsync rsync  393 Oct 20 01:47 id_rsa.pub


然後,如下命令,將id_rsa.pub負責到服務器B上。

scp /home/rsync/.ssh/id.rsa.pub [email protected]:/home/rsync/


服務器B:

建立ssh存儲“公鑰”的目錄:

mkdir /home/rsync/.ssh

chmod 700 /home/rsync/.ssh

將服務器A上傳遞的公鑰,mv到/home/rsync/.ssh。如下命令

mv /home/rsync/id_rsa.pub /home/rsync/.ssh/authorized_keys

chmod 600 /home/rsync/.ssh/authorized_keys


重啓SSH服務
[root@A ~]# /etc/init.d/sshd restart
[root@B ~]# /etc/init.d/sshd restart


5、inotify_tools的使用

1、確定inotifywait的位置

2、inotifywait的常見使用方法


/usr/bin/inotifywait -mrq -e modify,delete,create,attrib

命令解釋:

-m 是保持一直監聽
-r 是遞歸查看目錄
-q 是打印出事件
-e create,move,delete,modify,attrib 是指 “監聽 創建 移動 刪除 寫入 權限” 事件


6、服務器A上創建實時監控備份腳本inotify.ssh


#!/bin/sh

SRC=/usr/local/mysql/binlog/

[email protected]:/home/rsync1/test

/usr/bin/inotifywait -mrq -e modify,delete,create,attrib ${SRC} | while read D E F

do

      /usr/bin/rsync -ahqzt --delete $SRC $DST

done


命令解釋:

SRC:監控的目錄()

DST:備份的目錄

while read D E F:inotifywait 命令產生三個返回值,分別是“日期,時間,文件” 這3個返回值會做爲參數傳給read,因此腳本中的“while read D E F” 寫法細化了返回值。


rsync命令解釋:

/usr/bin/rsync -ahqzt --delete $SRC $DST
-a 存檔模式
-h 保存硬連接
-q 制止非錯誤信息
-z 壓縮文件數據在傳輸
-t 維護修改時間
-delete 刪除於多餘文件


7、腳本的運行


服務器A:


修改執行權限:chmod +x inotify.sh

在rsync用戶模式下運行該腳本(ssh-key是rsync用戶建立的):

su - rsync

[rsync@A sbin]$ ./inotify_rsync.sh &   #在後臺運行


此次在服務器A的/usr/local/mysql/binlog/#在該目錄下,建立文件和目錄,可以實時備份到目標位置


注意:

1、備份用戶rsync有沒有讀取/usr/local/mysql/binlog/目錄的權限,不然備份失敗

2、建議修改mysql-bin的存儲目錄,如下所示

log-bin=/usr/local/mysql/binlog/mysql-bin           

#打開日誌(主機需要打開),這個mysql-bin也可以自定義,這裏也可以加上路徑,如:/usr/local/mysql/binlog/mysql-bin  











發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章