中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何合并兩套環境的FastDFS數據?

發布時間:2020-05-23 16:22:19 來源:億速云 閱讀:310 作者:鴿子 欄目:系統運維

背景

   由于歷史原因文件數據被存到兩套FastDFS環境中,由于項目需求需要將兩套環境合為一個,需要提供統一的接口來訪問數據,這時就要將兩套環境的數據合并到一起了。檢查發現兩套FastDFS上傳生成的Key不同,顧這里不用考慮文件沖突的問題。
   簡單驗證了下,將環境B的storage直接拷貝到環境A,并通過環境A的域名進行訪問,是可以做到數據合并(FastDFS通過Nginx訪問數據,故只要Nginx指向的路徑上存在文件,訪問是沒問題的)。但是這帶來一個問題,后期FastDFS擴容增加節點時,這些拷貝過來的文件由于不被環境A的tracerServer所識別,所以這部分數據在擴容后可能會出現異常。

環境信息

  • 環境A地址 192.168.1.49 文件key為wKgBMV.....
  • 環境B地址 172.18.73.129 文件key為rBJJgV...
  • 環境A新增服務器地址 192.168.1.50(用于遷移環境B的數據)
  • 環境A的擴展服務器地址 192.168.1.51(用于合并后驗證集群擴展)

實現原理

  FastDFS4.0后新增storage_id功能,可以為每個storage的節點指定id別名。當storage遷移時,若遷移后的IP與原服務IP不一致時,只需修改ID的指向即可完成遷移。此次由于兩套環境都未開啟storage_id,故只需在兩套環境分別開啟,并為其分配不同的id(id不能不沖突)。然后在環境A上新增一個節點,新節點使用的ID是環境B已經指定的id,再將環境B的數據放到這個新增節點上,這樣兩個節點之間會自動相互同步數據,實現合并。
  若已經開啟storage_id,且id沖突,這里猜想只需擴容一次,分配到一個新ID,將新ID的數據遷移過去再合并即可。

操作過程

一、開啟storage_id

1. 修改/etc/fdfs/tracker.conf
#use_storage_id = false
use_storage_id = true

將100001的ID分配給環境A(192.168.1.49),將100002的ID分配給環境B(172.18.73.129)
2. 修改環境A /etc/fdfs/storage_ids.conf
[root@localhost fdfs]# cat /etc/fdfs/storage_ids.conf
# <id>  <group_name>  <ip_or_hostname>
 100001   group1  192.168.1.49
# 100002   group1  192.168.0.116

3.修改環境B /etc/fdfs/storage_ids.conf
[root@localhost fdfs]# cat storage_ids.conf
# <id>  <group_name>  <ip_or_hostname>
# 100001   group1  192.168.0.196
 100002   group1  172.18.73.129

重啟服務,檢查切換情況

如何合并兩套環境的FastDFS數據?

二、輸出兩套環境文件的MD5信息,用于校驗。

#生成環境A的文件摘要
[root@localhost ~]# find /data/fastdfs/storage/data/ -type f -print0 | xargs -0 md5sum > /tmp/1.49.md5
#生成環境B的文件摘要
[root@localhost ~]# find /data/fastdfs/storage/data/ -type f -print0 | xargs -0 md5sum > /tmp/73.129.md5

三、分別打包兩套環境的Storage。

#備份環境A數據,當合并失敗時可用于回滾
[root@localhost data]# cd /data/
[root@localhost data]# tar -czf fastdfs-1.49.bak.tar.gz fastdfs/

#備份環境B數據,用于遷移合并
[root@localhost data]# cd /data/
[root@localhost data]# tar -czf fastdfs-73.129.bak.tar.gz fastdfs/

四、遷移合并

#修改192.168.1.49 /etc/fdfs/storage_ids.conf,增加10002的信息(此前10002已經預配置為環境B)
[root@localhost data]# cat /etc/fdfs/storage_ids.conf
# <id>  <group_name>  <ip_or_hostname>
 100001   group1  192.168.1.49
 100002   group1  192.168.1.50

#在192.168.1.50安裝FastDFS,修改/etc/fdfs/storage.conf中的服務器信息(與49使用同一tracker,先不啟動)
bind_addr=192.168.1.50
tracker_server=192.168.1.49:22122

#重啟1.49的tracker服務
[root@localhost data]# ps -ef|grep trac
root       1938      1  0 10:55 ?        00:00:00 /usr/local/FastDFS/bin/fdfs_trackerd /etc/fdfs/tracker.conf
root       2079   2014  0 11:49 pts/2    00:00:00 grep trac
[root@localhost data]# kill 1938
[root@localhost data]# /usr/local/FastDFS/bin/fdfs_trackerd /etc/fdfs/tracker.conf

#將172.18.73.129的數據拷貝到1.50的storage上
#啟動1.50的storage服務
[root@localhost etc]# /usr/local/FastDFS/bin/fdfs_storaged  /etc/fdfs/storage.conf

五、分別檢查1.49/1.50的binlog狀態。

可以看到兩個節點相互同步的日志,最終兩個節點狀態為ACTIVE為同步完成。

如何合并兩套環境的FastDFS數據?
如何合并兩套環境的FastDFS數據?

六、用步驟二中生成的md5同時檢驗兩個節點上所有的數據。

在1.49上檢驗兩個md5文件

如何合并兩套環境的FastDFS數據?

在1.50上檢驗兩個md5文件

如何合并兩套環境的FastDFS數據?

可以看到只有dat和binlog文件的MD5校驗不通過,由于合并時這兩個文件會被修改,所有這里不用擔心。另外沒有出現文件丟失的情況。

七、訪問數據驗證。

通過環境A的url訪問原環境B的數據,可以正常讀取到。

如何合并兩套環境的FastDFS數據?

到此,合并已經完成。

八、擴展節點,驗證新節點上的所有數據。

前面已經完成了兩個環境的數據合并,從校驗結果上可以看出所有用戶文件都已經正常同步,此處可以測試另加一個storage節點進一步論證合并成功的結論。若合并后的數據能完整的同步到新增節點上,說明合并的信息完整的記錄到FastDFS中,確保合并是成功的。
新增一臺storage節點,假定IP:192.168.1.51,指定ID為100003。

#修改192.168.1.49 /etc/fdfs/storage_ids.conf,增加10002的信息(此前10002已經預配置為環境B)
[root@localhost data]# cat /etc/fdfs/storage_ids.conf
# <id>  <group_name>  <ip_or_hostname>
 100001   group1  192.168.1.49
 100002   group1  192.168.1.50
100003   group1  192.168.1.51

#在192.168.1.51安裝FastDFS,修改/etc/fdfs/storage.conf中的服務器信息
bind_addr=192.168.1.51
tracker_server=192.168.1.49:22122

#重啟1.49的tracker服務
[root@localhost ~]# ps -ef|grep trac
root       2082      1  0 11:49 ?        00:00:00 /usr/local/FastDFS/bin/fdfs_trackerd /etc/fdfs/tracker.conf
root       2178   2014  0 12:14 pts/2    00:00:00 grep tra
[root@localhost ~]# kill 2082
[root@localhost ~]# /usr/local/FastDFS/bin/fdfs_trackerd /etc/fdfs/tracker.conf

#啟動1.51的storage服務
[root@localhost etc]# /usr/local/FastDFS/bin/fdfs_storaged  /etc/fdfs/storage.conf

在1.49上檢查storage信息

如何合并兩套環境的FastDFS數據?

在1.51上校驗MD5摘要信息。此時可以看到新擴容的節點能同步兩套環境的所有文件

如何合并兩套環境的FastDFS數據?

在1.49上傳一個文件,然后再3個節點上檢查文件是否可以同步。可以看到新上傳的文件可以同步到所有數據節點上。

如何合并兩套環境的FastDFS數據?

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

马龙县| 上犹县| 长岛县| 甘泉县| 临沂市| 郑州市| 荆门市| 灵山县| 东兴市| 开封市| 梅河口市| 长宁区| 新丰县| 南安市| 通河县| 望都县| 通海县| 三明市| 马龙县| 林西县| 老河口市| 鹿邑县| 阿合奇县| 平和县| 思南县| 涿州市| 桂平市| 德钦县| 永德县| 科尔| 读书| 静海县| 无极县| 讷河市| 若羌县| 莫力| 普兰县| 延川县| 滕州市| 阜宁县| 旅游|