Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Berlaku untuk:SQL Server di 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 yang menjadi target untuk dimigrasikan.
Pada komputer Linux:
- SQL Server (Red Hat Enterprise Linux, SUSE Linux Enterprise Server, atau Ubuntu) dengan alat baris perintah.
Nota
Mulai SQL Server 2025 (17.x), SUSE Linux Enterprise Server (SLES) tidak didukung.
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 opsi Jenis cadangan adalah Penuh, dan opsi Cadangkan ke adalah Disk. Catat nama dan lokasi file. Misalnya, database bernama
YourDBdi SQL Server 2019 (15.x) memiliki jalur cadangan defaultC:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\Backup\YourDB.bak.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:
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.bakke direktoriuser1beranda di server Linux dengan alamat IP 192.168.2.9:scp YourDB.bak user1@192.168.2.9:./Berikut adalah output yang diharapkan:
The authenticity of host 192.168.2.9(192.168.2.9)' can't be established. ECDSA key fingerprint is SHA256: aB1cD2eF-3gH4iJ5kL6-mN7oP8qR= Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '192.168.2.9' (ECDSA) to the list of known hosts. Password: YourDB.bak 100% 8960KB 7.4MB/s 00:01
Tips
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 berkas. 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/mssqlkarena direktori 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.168.2.9Linux sebagai penggunauser1.ssh user1@192.168.2.9Anda sekarang menjalankan perintah di server Linux jarak jauh.
Masukkan mode pengguna super.
sudo suBuat direktori cadangan baru. Parameter
-ptidak melakukan apa pun jika direktori sudah ada.mkdir -p /var/opt/mssql/backupPindahkan file cadangan ke direktori tersebut. Dalam contoh berikut, file cadangan berada di direktori
user1beranda . 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 sebuah akun
sa. Masukkan kata sandi saat diminta, atau tentukan kata sandi dengan menambahkan-Pparameter .sqlcmd -S localhost -U sa>1Pada perintah , masukkan perintah berikutRESTORE DATABASE, tekan ENTER setelah setiap baris (Anda tidak dapat menyalin dan menempelkan seluruh perintah multibaris sekaligus). Ganti semua kemunculanYourDBdengan 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'; GOAnda akan mendapatkan pesan bahwa database berhasil dipulihkan.
RESTORE DATABASEmungkin 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
MOVEklausulRESTORE 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'; GOAnda 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
MOVEklausa untuk file tambahan. Dalam contoh ini,RESTORE DATABASEadalah: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'; GOVerifikasi pemulihan dengan mencantumkan semua database di server. Database yang dipulihkan harus dicantumkan.
SELECT name FROM sys.databases; GOJalankan kueri lain pada database anda yang dimigrasikan. Perintah berikut mengalihkan konteks ke
YourDBdatabase dan memilih baris dari salah satu tabelnya.USE YourDB; SELECT * FROM YourTable; GOSetelah selesai menggunakan sqlcmd, ketik
exit.Setelah selesai bekerja di sesi ssh jarak jauh, ketik
exitlagi.
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 DATABASEperintah - Menjalankan kueri untuk memverifikasi migrasi
Selanjutnya, jelajahi skenario migrasi lain untuk SQL Server di Linux.