1. 準備工作
sqlcmd
),用于后續命令行操作;若未安裝,可通過以下命令添加倉庫并安裝:curl https://packages.microsoft.com/config/rhel/7/prod.repo > /etc/yum.repos.d/msprod.repo
yum install -y mssql-tools unixODBC-devel
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bash_profile
source ~/.bash_profile
2. 備份源數據庫
D:\backups\source_db.bak
),點擊“確定”執行備份。sqlcmd
執行T-SQL命令備份,例如:BACKUP DATABASE [source_db] TO DISK = 'D:\backups\source_db.bak' WITH INIT, STATS = 10;
3. 傳輸備份文件至目標服務器
使用scp
(安全拷貝)或rsync
工具將備份文件從源服務器復制到目標CentOS服務器。例如,通過scp
命令:
scp username@source_server:/path/to/source_db.bak /tmp/
輸入目標服務器密碼后,等待文件傳輸完成。
4. 在目標服務器上還原數據庫
/tmp/source_db.bak
),點擊“確定”。切換至“選項”頁,勾選“覆蓋現有數據庫”(若目標存在同名數據庫),確認文件路徑(如將數據文件移至/var/opt/mssql/data/source_db.mdf
、日志文件移至/var/opt/mssql/data/source_db_log.ldf
),最后點擊“確定”開始還原。sqlcmd
執行還原命令,例如:RESTORE DATABASE [source_db]
FROM DISK = '/tmp/source_db.bak'
WITH MOVE 'source_db' TO '/var/opt/mssql/data/source_db.mdf',
MOVE 'source_db_log' TO '/var/opt/mssql/data/source_db_log.ldf',
REPLACE, RECOVERY;
其中,MOVE
子句用于調整文件路徑(需根據備份文件中的邏輯文件名修改),REPLACE
表示覆蓋現有數據庫,RECOVERY
表示恢復數據庫至可用狀態。5. 驗證數據完整性
sqlcmd
執行SELECT name, state_desc FROM sys.databases WHERE name = 'source_db';
,確認數據庫狀態為“ONLINE”。SELECT TOP 10 * FROM dbo.table_name;
),對比源數據庫中的記錄數和內容,確保數據無遺漏或錯誤。6. 清理與優化
D:\backups\source_db.bak
)和目標服務器上的臨時文件(如/tmp/source_db.bak
),釋放存儲空間。sqlcmd
執行ALTER DATABASE [source_db] SET AUTO_CREATE_STATISTICS ON;
啟用自動統計信息更新。注意事項
/var/opt/mssql/data/
)。sudo firewall-cmd --zone=public --add-port=1433/tcp --permanent
sudo firewall-cmd --reload