Rsync備份服務實踐
1、備份基本概述
1.1 什么是備份
備份就是把文件在復制一份存放到另一個位置(簡單說就是給源文件增加一個副本)以防原始數據丟失或損壞。
備份可以確保在發生數據丟失的情況下,能夠迅速恢復數據,降低損失。備份的方法有很多種,其中包括基于文件、快照、binlog日志、集群等。
? 文件備份:屬于最常見的備份方式,將一份文檔存儲在外部硬盤或網絡驅動器上。這種備份方法適用于個人用戶和小型企業,因為它簡單易行。
? 快照備份:快照備份是在某一特定時間點對數據的一種全面拷貝。快照備份通常使用增量技術,只備份自上次快照以來發生變化的數據,例如VMware的快照功能。
? binlog日志備份:主要備份數據操作記錄的過程,例如:數據庫被Insert、update、然后不小心delete誤刪除了,可以將日志文件中的delete刪除,然后重新回滾之前的操作恢復數據。
? 集群方案:多個相同的節點,誤刪除一條節點的數據,并不影響,因為在其他的節點還有對應的數據;
1.2 為什么要做備份
? 1、數據非常的重要
? 2、避免數據不丟失
? 3、便于快速的恢復
1.3 能不能不做備份
可以,對于不是特別重要的數據可以不考慮,例如臨時文件、日志文件、緩存文件等;
1.4 備份應該怎么做
完全備份,(全備,效率低下、占用空間、浪費帶寬)完全備份示意圖
增量備份,(增備,效率較高、節省空間、節省帶寬)增量備份示意圖
1.5 實現備份的工具
備份通常使用什么工具
? 本地備份:cp
? 遠程備份:scp、rsync
2.Rsync基本概述
2.1 什么是Rsync
rsync簡稱遠程同步,可以實現不同主機之間的同步,同時支持增量和全量的備份。
?rsync官方地址:傳送門
?rsync監聽端口:873
?rsync運行模式:C/S
2.2 Rsync同步模式
推: 所有主機推送本地數據至Rsync備份服務器,會導致數據同步緩慢(適合少量數據備份)
image.png
拉: rsync備份服務端拉取所有主機上的數據,會導致備份服務器開銷大
image.png
2.3 Rsync應用場景
大量服務器備份場景
image.png
異地備份場景
image.png
3、Rsync傳輸模式
Rsync使用三種主要的數據傳輸方式
? 本地方式
? 遠程方式
? 守護進程
3.1 本地傳輸
本地傳輸方式:單個主機本地之間的數據傳輸(此時類似于cp命令)
本地傳輸語法:Local: rsync [OPTION...] SRC... [DEST]
本地拷貝數據示例:
[root@backup ~]# rsync -avz /etc/passwd /tmp/ rsync #備份命令(cp) [options] #選項 SRC... #本地源文件 [DEST] #本地目標文件
3.2 遠程傳輸
遠程傳輸方式:通過ssh通道傳輸數據,類似scp命令
遠程傳輸語法:
?Pull:rsync [OPTION...] [USER@]HOST:SRC... [DEST]
?Push:rsync [OPTION...] SRC... [USER@]HOST:DEST
Pull拉取數據示例:
# 拉取遠程文件 [root@backup ~]# rsync -avz root@172.16.1.31:/etc/hostname ./ # 拉取遠程目錄下的所有文件 [root@backup ~]# rsync -avz root@172.16.1.31:/root/ /backup/ #拉取遠程目錄以及目錄下的所有文件 [root@backup ~]# rsync -avz root@172.16.1.31:/root /backup/ Pull #拉取, 下載 rsync #備份命令 [options] #選項 [USER@] #目標主機的系統用戶 HOST #目主機IP地址或域名 SRC... #目標主機源文件 [DEST] #下載至本地哪個位置
Push推送數據示例
[root@backup ~]# rsync -avz /backup/2018-10-01 root@172.16.1.31:/tmp/ Push #推送, 上傳 rsync #備份命令 [options] #選項 SRC... #本地源文件 [USER@] #目標主機的系統用戶 HOST #目主機IP地址或域名 [DEST] #目標對應位置
注意事項:Rsync借助SSH協議同步數據存在的缺陷
? 1、使用系統用戶(不安全)
? 2、使用普通用戶(會導致權限不足情況)
3.3 守護進程
守護進程傳輸方式:rsync自身非常重要的功能(不使用系統用戶,更加安全)
守護進程傳輸語法:
?Pull:rsync [OPTION...] [USER@]HOST::SRC... [DEST]
?Push:rsync [OPTION...] SRC... [USER@]HOST::DEST
Pull拉取數據示例:拉取rsync備份服務的"backup模塊"數據至本地/mnt目錄
[root@nfs ~]# rsync -avz rsync_backup@172.16.1.21::backup/ /mnt/ --password-file=/etc/rsync.password rsync #命令 [OPTION...] #選項 [USER@] #遠程主機用戶(虛擬用戶) HOST:: #遠程主機地址 SRC... #遠程主機模塊(不是目錄) [DEST] #將遠程主機數據備份至本地什么位置
push推送數據命令:將本地/mnt目錄中的數據推送到備份服務器的backup模塊
[root@nfs ~]# rsync -avz /mnt/ rsync_backup@192.172.16.1.21::backup/ --password-file=/etc/rsync.password rsync #命令 [OPTION...] #選項 SRC... #遠程主機模塊(不是目錄) [USER@] #遠程主機用戶(虛擬用戶) HOST:: #遠程主機地址 [DEST] #將遠程主機模塊備份至本地什么位置
3.4 常用選項
-a #歸檔模式傳輸, 等于-tropgDl -v #詳細模式輸出, 打印速率, 文件數量等 -z #傳輸時進行壓縮以提高效率 -r #遞歸傳輸目錄及子目錄,即目錄下得所有目錄都同樣傳輸。 -t #保持文件時間信息 -o #保持文件屬主信息 -p #保持文件權限 -g #保持文件屬組信息 -l #保留軟連接 -P #顯示同步的過程及傳輸時的進度等信息 -D #保持設備文件信息 -L #保留軟連接指向的目標文件 -e #使用的信道協議,指定替代rsh的shell程序 --exclude=PATTERN #指定排除不需要傳輸的文件模式 --exclude-from=file#文件名所在的目錄文件 --bwlimit=100 #限速傳輸 --partial #斷點續傳 --delete #讓目標目錄和源目錄數據保持一致
4、Rsync服務部署
主機角色 | 外網IP(NAT) | 內網IP(LAN) | 主機名稱 |
Rsync服務端 | 10.0.0.21 | 172.16.1.21 | backup.oldxu.net |
Rsync客戶端 | 10.0.0.22 | 172.16.1.22 | nfs.oldxu.net |
4.1 Rsync服務端安裝
[root@backup ~]# yum -y install rsync
4.2 Rsync服務端配置
[root@backup ~]#cat/etc/rsyncd.conf uid = rsync gid = rsync port = 873 fake super =yes usechroot= no max connections = 200 timeout= 600 readonly =false list =false authusers= rsync_backup secrets file = /etc/rsync.passwd logfile = /var/log/rsyncd.log ##################################### [backup] comment = welcome backup! path = /backup # 配置詳解 [root@backup ~]# vim /etc/rsyncd.conf uid = rsync # 運行進程的用戶 gid = rsync # 運行進程的用戶組 port = 873 # 監聽端口 fake super =yes # 不需要rsync已root身份運行,就可以存儲文件的完整屬性 usechroot= no # 禁錮推送的數據至某個目錄, 不允許跳出該目錄 max connections = 200 # 最大連接數 timeout= 600 # 超時時間 ignore errors # 忽略錯誤的日志信息 readonly =false # 對備份數據可讀寫 list =false # 不允許查看模塊信息 authusers= rsync_backup # 定義虛擬用戶,作為連接認證用戶 secrets file = /etc/rsync.passwd# 定義rsync服務用戶連接認證密碼文件路徑 [backup] # 定義模塊信息 comment = commit # 模塊注釋信息 path = /backup # 定義接收備份數據目錄
4.3 Rsync服務端初始化
Rsync服務端進行初始化
? 1.創建rsync賬戶,不允許登錄不創建家目錄(用于運行rsync服務的用戶身份)
? 2.創建備份目錄(盡可能磁盤空間足夠大),授權rsync用戶為屬主
? 3.創建虛擬用戶密碼文件,授權為600安全權限(用于客戶端連接時使用的用戶)
? 4.啟動rsync服務,并將rsync加入開機自啟動
? 5.檢查rsync服務是否正常運行
1、創建rsync用戶
[root@backup ~]# useradd -M -s /sbin/nologin rsync
2、創建備份目錄,然后授權
[root@backup ~]#mkdir/backup [root@backup ~]#chown-R rsync.rsync /backup/
3、創建虛擬用戶密碼文件,并授權為600
[root@backup ~]#echo"rsync_backup:sun">/etc/rsync.passwd [root@backup ~]#chmod600 /etc/rsync.passwd
4、配置rsyncd啟動停止腳本,然后啟動服務(默認沒有提供)
[root@backup ~]# /etc/systemd/system/rsyncd.service [Unit] Description=fast remote file copy program daemon After=network.target [Service] ExecStart=/usr/bin/rsync --daemon --no-detach ExecReload=/bin/kill -HUP$MAINPID KillMode=process Restart=on-failure [Install] WantedBy=multi-user.target [root@backup ~]# systemctl daemon-reload [root@backup ~]# systemctl start rsyncd [root@backup ~]# systemctlenablersyncd
5、檢查服務
[root@backup ~]# netstat -lntp Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN 4758/rsync
4.4 Rsync客戶端配置
Rsync客戶端僅需配置虛擬用戶的密碼,并授權為600安全權限
方式一:適合終端執行,將虛擬用戶密碼配置至一個文件中;
[root@nfs ~]# yum install rsync -y [root@nfs ~]#echo"sun"> /etc/rsync.pass [root@nfs ~]#chmod600 /etc/rsync.pass
方式二:適合腳本執行,將虛擬用戶密碼設定為環境變量;
[root@nfs ~]# yum install rsync -y [root@nfs ~]#exportRSYNC_PASSWORD=sun
5、Rsync場景實踐
5.1 數據推送與拉取場景
1、客戶端推送backup目錄下所有內容至Rsync服務端
[root@nfs ~]#exportRSYNC_PASSWORD=sun [root@nfs ~]# rsync -avz /backup/ rsync_backup@172.16.1.21::backup/
2、客戶端拉取Rsync服務端backup模塊數據至本地客戶端的/backup目錄
[root@nfs ~]#exportRSYNC_PASSWORD=sun [root@nfs ~]#rsync -avz rsync_backup@172.16.1.21::backup /backup/
5.2 數據無差異同步場景
?Rsync實現本地數據與遠程數據無差異同步
1、拉取遠端數據:遠端與本地保持一致,遠端沒有本地有會被刪除, 造成客戶端數據丟失
[root@nfs ~]#exportRSYNC_PASSWORD=sun [root@nfs ~]# rsync -avz --delete rsync_backup@172.16.1.21::backup/ /data/
2、推送數據至遠端:本地與遠端保持一致, 本地沒有遠端會被刪除, 造成服務器端數據丟失
[root@nfs ~]#exportRSYNC_PASSWORD=sun [root@nfs ~]# rsync -avz --delete /data/ rsync_backup@172.16.1.21::backup/
5.3 推送數據限速場景
故障案例: 某DBA使用rsync拉取備份數據時,由于文件過大導致內部交換機帶寬被沾滿,導致用戶的請求無法響應;
[root@nfs ~]#exportRSYNC_PASSWORD=oldxu # 單位MB [root@nfs ~]# rsync -avz --bwlimit=1 rsync_backup@172.16.1.31::backup/ /data/
5.4 Rsync常見問題
rsync,rsync_backup,是否存在關系;
鏈接:https://blog.csdn.net/Sunfeiyanghtml/article/details/140007999
-
驅動器
+關注
關注
54文章
8655瀏覽量
149527 -
硬盤
+關注
關注
3文章
1337瀏覽量
58321 -
服務器
+關注
關注
13文章
9757瀏覽量
87591
原文標題:為什么大廠都在用Rsync?揭秘其底層原理與高可用架構設計
文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
教你如何在NAS網絡存儲中使用Duple Backup進行備份
NAS網絡存儲雙重備份(Duple Backup)的介紹和使用方法
怎樣備份服務器讓服務器性能最佳
如何保證“備份服務器”性能最佳?數據安全專家建議參考分析
企業如何選擇合適的備份服務
境外服務器中的數據一般多久備份一次
Linux服務器數據同步:Rsync算法
一篇文章學會數據備份利器rsync
linux系統備份與還原工具
云服務器的功能是信息備份嗎?有哪些優勢
別讓數據丟失毀了你的樹莓派項目!rsync 自動化備份教程!

評論