inotify加rsync备份mysql_centos7 实现inotify-tools + rsync,自动备份mysql数据库
一. 環境說明
為了實現zabbix備份數據庫自動同步,到備份服務器搭建
解決方案是在后端建立一個數據發布服務器,該服務器作為rsync客戶端,通過inotify機制實時監控網站數據,當數據發生變化后調用rsync命令上傳數據到備份服務器(也是rsync服務器)
我使用3臺機器做的實驗
pc1的ip為10.10.251.49(復制 sync),同步備份客戶端mysql數據,也是rsync服務端,需要修改/etc/rsyncd.conf配置文件
pc3的ip為10.10.251.65(主 inotify+sync),作為自動備份zabbix_mysql數據庫服務器,是rsync的客戶端,不需要配置/etc/rsyncd.conf,但是需要安裝inotify
也可以互相同步文件,反過來搭建就可以實現
需要關閉selinux ,防火墻
二. 在服務器上部署rsync服務器
在服務器上部署rsync服務,這些rsync服務需要提供客戶端上傳功能,以實現客戶端主機將數據推送到rsync服務器,這樣我們只需要在10.10.251.49主機上修改數據,就可以實時推送數據到zabbix_mysql數據庫服務器上
pc1的配置如下
yum -y install rsync ? #centos7中默認已安裝
mkdir -p /root/bak? ? #建立數據同步存放目錄
chmod 770 /root/bak? ? #修改權限,必須要有讀,寫,執行權限,否而會失敗。
chown nobody.nobody /root/bak? ?#修改所屬
然后添加修改配置文件,vim /etc/rsyncd.conf ? ?如下
transfer logging = yes
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
uid = nobody
gid = nobody
use chroot = no
ignore errors
read only = no
[zabbix1] ??#
comment =?zabbix1 ?名字隨意
path = /root/bak? #同步主機上的目錄,
auth users = tom
secrets file = /etc/rsyncd.secrets? #根據這個名字創建文檔,可以自己修改路徑名字
host allow = 10.10.251.65? ?#從哪個主機同步,就寫那個ip
list = false
然后設置密碼文件,防火墻
echo "tom:123" > /etc/rsyncd.secrets? # 需要創建用戶名為tom 密碼為123 的用戶
chmod 600 /etc/rsyncd.secrets? ? #加權限
systemctl restart?rsyncd
rsync --daemon ? ?#一定記得要開啟rsync
echo "rsync --daemon" >> /etc/rc.local? 設置開機運行
三。主?inotify+sync服務器(10.10.251.65)
1. 安裝相應軟件
yum -y install rsync
systemctl start?rsyncd
rsync --daemon ?#開啟rsync
yum -y install automake libtool ? #安裝編譯安裝軟件所需工具
解壓后進入inotify-tools-3.13目錄,執行如下安裝
./configure ? ? ?#默認安裝路徑是/usr/local,如果想改變路徑可在后面加參數 --prefix 路徑名
make && make install
2. 設置密碼文件
echo "123" > /root/rsync.pass ? #123為rsync服務端配置的用戶名為tom的密碼
chmod 600 /root/rsync.pass
紅字部分注意對應。
3. 編寫監控腳本
vim notify_rsync.sh
#!/bin/bash
host_slave=10.10.251.49? # 對端想要同步的ip
master_src=/root/bak? ?#同步路徑
inotify_home=/usr/local/? ?#inotifywait (這個試行程序的路徑)
${inotify_home}/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f' -e close_write,modify,delete,create,attrib?$master_src?\
| while read file
do
rsync -az --delete ${master_src}?rsynclsl@${host_slave}::zabbix1?--password-file=/root/rsync.pass
done
然后執行此腳本 sh notify_rsync.sh,注意腳本會一直運行,你去主上創建,在備份機就可以看到效果了,就因為不知道這個,排錯多一個小時
之后就可以實現同步如下圖
本次參考:https://www.cnblogs.com/regit/p/8073097.html
總結
以上是生活随笔為你收集整理的inotify加rsync备份mysql_centos7 实现inotify-tools + rsync,自动备份mysql数据库的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: math.floor java_Java
- 下一篇: java setter_java – 如