遷移步驟
打包舊伺服器檔案的所有檔案
定位到舊伺服器的tracker和Storage目錄,將整個資料夾打包
tar -zcf fdfs-storage-data.tar.gz /fastdfs/storage/data/
tar -zcf fdfs-tracker-data.tar.gz /fastdfs/tracker/data/
將打包後的檔案拷貝到新的伺服器上
替換檔案和修改資訊
停止新伺服器的tracker服務和Storage服務
刪除新伺服器的tracker資料,Storage資料,使用舊伺服器替換
rm -rf /data/fdfs/stroage/*
rm -rf /data/fdfs/tracker/*
tar xf fdfs-tracker-data.tar.gz
tar xf fdfs-storage-data.tar.gz
mv fastdfs/tracker/* /data/fdfs/tracker/
mv fastdfs/storage/* /data/fdfs/stroage/
修改FastDFS部分檔案資訊
1 . 修改tracker的data檔案
# 修改tracker的data檔案
vim /data/fdfs/tracker/data/storage_groups_new.dat
vim /data/fdfs/tracker/data/storage_servers_new.dat
vim /data/fdfs/tracker/data/storage_sync_timestamp.dat
# 將三個檔案舊IP設定為新IP
2 . 修改Storage的data檔案
fastdfs_storage/data/sync/${ip_addr}_${port}.mark 沒有此類檔案可不用修改
mv 192.168.0.107_23000.mark 192.168.0.113_23000.mark
修改上述檔案將舊IP提換為新fastDFS檔案伺服器IP
重啟檔案服務
重啟tracker服務和Storage服務即可
service fdfs_trackerd restart
service fdfs_storaged restart
如果使用了自定義server ID特性,那麼比較容易,直接將tracker上的IP和ID對映檔案storage_ids.conf修改好,然後將storage的data檔案一一對應拷貝過去即可。(血淚史!,後續安裝的時候最好開啟此項特性!)
開啟方法:tracker.conf檔案中多修改以下三個引數
use_storage_id = true
storage_ids_filename = stirafe_ids.conf
id_type_in_filename = id
小結
同IP資料遷移
- 首先關閉fdfs_storage和fdfs_tracker服務。
- 拷貝fdfs_storage目錄中的所有資料到新目錄。
- 修改storage配置檔案中的store_path和base_path到新位置。
- 修改mod_fastdfs.conf配置檔案中的store_path和base_path到新位置。
- 根據情況,選擇是否修改client配置檔案。
- 修改nginx配置檔案中的root目錄。
- 重啟fdfs_tracker和fdfs_storage服務
不同IP資料遷移
不同IP之間遷移採用FastDFS的擴容機制。
- 在新伺服器安裝FastDFS。
- 將新FastDFS的storage服務例項關聯到以前的tracker服務。
- 拷貝以前的storage服務配置為新服務例項的配置檔案。
- 啟動storage服務。
- FastDFS會自動同步以前伺服器上的資料。
- 停止storage服務,將storage配置檔案中的tracker地址修改為新的tracer 地址。
- 啟動新的tracker服務和storage服務。
資料恢復
資料恢復是指舊的FastDFS服務已經不能執行,需要將已有的FastDFS資料恢復到新的FastDFS服務中。
如果FastDFS服務使用了V4的ServerID特性,修改storage_ids.conf檔案,調整對應關係即可。
如果採用IP地址進行標識,則需要修改tracker 和storage下data目錄中的資料檔案中的ip地址。
tracker server 需要修改 :
tracker/data/storage_groups_new.dat
tracker/data/storage_servers_new.dat
tracker/data/storage_sync_timestamp.dat
storage server 需要修改:
storage/data/.data_init_flagstorage/data/sync/${ip_addr}_${port}.mark