Memigrasikan database SQL Server dari Windows ke Linux menggunakan pencadangan dan pemulihan
Berlaku untuk: SQL Server - Linux
Fitur pencadangan dan pemulihan SQL Server adalah cara yang disarankan untuk memigrasikan database dari SQL Server di Windows ke SQL Server di Linux. Dalam tutorial ini, Anda menelusuri langkah-langkah yang diperlukan untuk memindahkan database ke Linux dengan teknik pencadangan dan pemulihan.
- Membuat file cadangan di Windows dengan SSMS
- Menginstal shell bash di Windows
- Memindahkan file cadangan ke Linux dari shell bash
- Memulihkan file cadangan di Linux dengan Transact-SQL
- Menjalankan kueri untuk memverifikasi migrasi
Anda juga dapat membuat Grup Ketersediaan AlwaysOn SQL Server untuk memigrasikan database SQL Server dari Windows ke Linux. Lihat sql-server-linux-availability-group-cross-platform.
Prasyarat
Prasyarat berikut diperlukan untuk menyelesaikan tutorial ini:
Pada komputer Windows:
- SQL Server terinstal.
- SQL Server Management Studio terinstal.
- Database target untuk dimigrasikan.
Pada komputer Linux:
- SQL Server (Red Hat Enterprise Linux, SUSE Linux Enterprise Server, atau Ubuntu) dengan alat baris perintah.
Membuat cadangan di Windows
Ada beberapa cara untuk membuat file cadangan database di Windows. Langkah-langkah berikut menggunakan SQL Server Management Studio (SSMS).
Mulai SQL Server Management Studio di komputer Windows Anda.
Dalam dialog koneksi, masukkan localhost.
Di Object Explorer, perluas Database.
Klik kanan database target Anda, pilih Tugas, lalu pilih Cadangkan....
Dalam dialog Pencadangan Database, verifikasi bahwa Jenis cadangan penuh dan Cadangkan ke adalah Disk. Nama catatan dan lokasi file. Misalnya, database bernama
YourDB
di SQL Server 2019 (15.x) memiliki jalurC:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\Backup\YourDB.bak
cadangan default .Pilih OK untuk mencadangkan database Anda.
Opsi lain adalah menjalankan kueri Transact-SQL untuk membuat file cadangan. Perintah Transact-SQL berikut melakukan tindakan yang sama dengan langkah-langkah sebelumnya untuk database yang disebut YourDB
:
BACKUP DATABASE [YourDB] TO DISK =
N'C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\Backup\YourDB.bak'
WITH NOFORMAT, NOINIT, NAME = N'YourDB-Full Database Backup',
SKIP, NOREWIND, NOUNLOAD, STATS = 10;
GO
Menginstal shell bash di Windows
Untuk memulihkan database, Anda harus terlebih dahulu mentransfer file cadangan dari komputer Windows ke komputer Linux target. Dalam tutorial ini, kami memindahkan file ke Linux dari shell bash (jendela terminal) yang berjalan di Windows.
Instal shell bash di komputer Windows Anda yang mendukung perintah scp (salinan aman) dan ssh (masuk jarak jauh). Dua contoh meliputi:
- Subsistem Windows untuk Linux (Windows 10)
- Shell Bash Git (https://git-scm.com/downloads)
Buka sesi bash di Windows.
Menyalin file cadangan ke Linux
Dalam sesi bash Anda, navigasikan ke direktori yang berisi file cadangan Anda. Contohnya:
cd 'C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\Backup\'
Gunakan perintah scp untuk mentransfer file ke komputer Linux target. Contoh berikut mentransfer
YourDB.bak
ke direktoriuser1
beranda di server Linux dengan alamat IP 192.0.2.9:scp YourDB.bak user1@192.0.2.9:./
Tip
Ada alternatif untuk menggunakan scp untuk transfer file. Salah satunya adalah menggunakan Samba untuk mengonfigurasi berbagi jaringan SMB antara Windows dan Linux. Untuk panduan tentang Ubuntu, lihat Samba sebagai server file. Setelah ditetapkan, Anda dapat mengaksesnya sebagai berbagi file jaringan dari Windows, seperti \\machinenameorip\share
.
Memindahkan file cadangan sebelum memulihkan
Pada titik ini, file cadangan ada di server Linux Anda di direktori beranda pengguna Anda. Sebelum memulihkan database ke SQL Server, Anda harus menempatkan cadangan dalam subdirektori /var/opt/mssql
, karena ini dimiliki oleh pengguna mssql
dan grup mssql
. Jika Anda ingin mengubah lokasi cadangan default, lihat artikel Mengonfigurasi dengan mssql-conf .
Dalam sesi bash Windows yang sama, sambungkan dari jarak jauh ke komputer Linux target Anda dengan ssh. Contoh berikut terhubung ke komputer
192.0.2.9
Linux sebagai penggunauser1
.ssh user1@192.0.2.9
Anda sekarang menjalankan perintah di server Linux jarak jauh.
Masukkan mode pengguna super.
sudo su
Buat direktori cadangan baru. Parameter
-p
tidak melakukan apa pun jika direktori sudah ada.mkdir -p /var/opt/mssql/backup
Pindahkan file cadangan ke direktori tersebut. Dalam contoh berikut, file cadangan berada di direktori
user1
beranda . Ubah perintah agar sesuai dengan lokasi dan nama file file cadangan Anda.mv /home/user1/YourDB.bak /var/opt/mssql/backup/
Keluar dari mode pengguna super.
exit
Memulihkan database Anda di Linux
Untuk memulihkan cadangan database, Anda dapat menggunakan RESTORE DATABASE
perintah Transact-SQL (TQL).
Langkah-langkah berikut menggunakan alat sqlcmd . Jika Anda belum menginstal alat SQL Server, lihat Menginstal alat baris perintah SQL Server sqlcmd dan bcp di Linux.
Di terminal yang sama, luncurkan sqlcmd. Contoh berikut terhubung ke instans SQL Server lokal dengan
SA
pengguna. Masukkan kata sandi saat diminta, atau tentukan kata sandi dengan menambahkan-P
parameter .sqlcmd -S localhost -U SA
>1
Pada perintah , masukkan perintah berikutRESTORE DATABASE
, tekan ENTER setelah setiap baris (Anda tidak dapat menyalin dan menempelkan seluruh perintah multibaris sekaligus). Ganti semua kemunculanYourDB
dengan nama database Anda.RESTORE DATABASE YourDB FROM DISK = '/var/opt/mssql/backup/YourDB.bak' WITH MOVE 'YourDB' TO '/var/opt/mssql/data/YourDB.mdf', MOVE 'YourDB_Log' TO '/var/opt/mssql/data/YourDB_Log.ldf' GO
Anda akan mendapatkan pesan bahwa database berhasil dipulihkan.
RESTORE DATABASE
mungkin mengembalikan kesalahan seperti contoh berikut:File 'YourDB_Product' cannot be restored to 'Z:\Microsoft SQL Server\MSSQL15.GLOBAL\MSSQL\Data\YourDB\YourDB_Product.ndf'. Use WITH MOVE to identify a valid location for the file. Msg 5133, Level 16, State 1, Server servername, Line 1 Directory lookup for the file "Z:\Microsoft SQL Server\MSSQL15.GLOBAL\MSSQL\Data\YourDB\YourDB_Product.ndf" failed with the operating system error 2(The system cannot find the file specified.).
Dalam hal ini, database berisi file sekunder. Jika file-file ini tidak ditentukan dalam
MOVE
klausulRESTORE DATABASE
, prosedur pemulihan mencoba membuatnya di jalur yang sama dengan server asli.Anda dapat mencantumkan semua file yang disertakan dalam cadangan:
RESTORE FILELISTONLY FROM DISK = '/var/opt/mssql/backup/YourDB.bak'; GO
Anda harus mendapatkan daftar seperti contoh berikut (hanya mencantumkan dua kolom pertama):
LogicalName PhysicalName .............. ------------------- ---------------------------------------------------------------------------- --------------- YourDB Z:\Microsoft SQL Server\MSSQL15.GLOBAL\MSSQL\Data\YourDB\YourDB.mdf .............. YourDB_Product Z:\Microsoft SQL Server\MSSQL15.GLOBAL\MSSQL\Data\YourDB\YourDB_Product.ndf .............. YourDB_Customer Z:\Microsoft SQL Server\MSSQL15.GLOBAL\MSSQL\Data\YourDB\YourDB_Customer.ndf .............. YourDB_log Z:\Microsoft SQL Server\MSSQL15.GLOBAL\MSSQL\Data\YourDB\YourDB_Log.ldf ..............
Anda dapat menggunakan daftar ini untuk membuat
MOVE
klausa untuk file tambahan. Dalam contoh ini,RESTORE DATABASE
adalah:RESTORE DATABASE YourDB FROM DISK = '/var/opt/mssql/backup/YourDB.bak' WITH MOVE 'YourDB' TO '/var/opt/mssql/data/YourDB.mdf', MOVE 'YourDB_Product' TO '/var/opt/mssql/data/YourDB_Product.ndf', MOVE 'YourDB_Customer' TO '/var/opt/mssql/data/YourDB_Customer.ndf', MOVE 'YourDB_Log' TO '/var/opt/mssql/data/YourDB_Log.ldf' GO
Verifikasi pemulihan dengan mencantumkan semua database di server. Database yang dipulihkan harus dicantumkan.
SELECT Name FROM sys.Databases GO
Jalankan kueri lain pada database anda yang dimigrasikan. Perintah berikut mengalihkan konteks ke
YourDB
database dan memilih baris dari salah satu tabelnya.USE YourDB SELECT * FROM YourTable GO
Setelah selesai menggunakan sqlcmd, ketik
exit
.Setelah selesai bekerja di sesi ssh jarak jauh, ketik
exit
lagi.
Langkah selanjutnya
Dalam tutorial ini, Anda mempelajari cara mencadangkan database di Windows dan memindahkannya ke server Linux yang menjalankan SQL Server. Anda mempelajari cara untuk:
- Menggunakan SSMS dan Transact-SQL untuk membuat file cadangan di Windows
- Menginstal shell Bash di Windows
- Gunakan scp untuk memindahkan file cadangan dari Windows ke Linux
- Menggunakan ssh untuk terhubung dari jarak jauh ke komputer Linux Anda
- Merelokasi file cadangan untuk mempersiapkan pemulihan
- Menggunakan sqlcmd untuk menjalankan perintah Transact-SQL
- Memulihkan cadangan database dengan
RESTORE DATABASE
perintah - Menjalankan kueri untuk memverifikasi migrasi
Selanjutnya, jelajahi skenario migrasi lain untuk SQL Server di Linux.
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk