遷移步驟
打包舊服務器文件的所有文件
定位到舊服務器的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