Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Platí pro:SQL Server v Linuxu
Funkce zálohování a obnovení SQL Serveru je doporučeným způsobem migrace databáze z SQL Serveru ve Windows na SQL Server v Linuxu. V tomto kurzu si projdete kroky potřebné k přesunutí databáze do Linuxu pomocí technik zálohování a obnovení.
- Vytvoření záložního souboru ve Windows pomocí SSMS
- Instalovat prostředí Bash na Windows
- Přesunutí záložního souboru do Linuxu z prostředí Bash
- Obnovení záložního souboru v Linuxu pomocí Transact-SQL
- Spuštěním dotazu ověřte migraci.
Můžete také vytvořit skupinu dostupnosti AlwaysOn SQL Serveru pro migraci databáze SQL Serveru z Windows do Linuxu. Viz sql-server-linux-availability-group-multiplatformní.
Požadavky
K dokončení tohoto kurzu jsou vyžadovány následující požadavky:
Na počítači s Windows:
- SQL Server nainstalován.
- nainstalovanou aplikaci SQL Server Management Studio.
- Cílová databáze pro migraci.
Na počítači s Linuxem:
- SQL Server (Red Hat Enterprise Linux, SUSE Linux Enterprise Servernebo Ubuntu) s nástroji příkazového řádku.
Poznámka:
Počínaje SQL Serverem 2025 (17.x) se nepodporuje SUSE Linux Enterprise Server (SLES).
Vytvoření zálohy ve Windows
Existuje několik způsobů, jak vytvořit záložní soubor databáze ve Windows. Následující kroky používají APLIKACI SQL Server Management Studio (SSMS).
Na počítači s Windows spusťte SQL Server Management Studio.
V dialogovém okně připojení zadejte localhost .
V Průzkumníku objektů rozbalte položku Databáze.
Klikněte pravým tlačítkem na cílovou databázi, vyberte Úkolya pak vyberte Zálohovat....
V dialogovém okně Zálohovat databázi ověřte, že je možnost Typ zálohováníúplná a možnost Zálohovat nadisk. Poznamenejte si název a umístění souboru. Například databáze s názvem
YourDBna SQL Serveru 2019 (15.x) má výchozí záložní cestuC:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\Backup\YourDB.bak.Pokud chcete zálohovat databázi, vyberte OK.
Další možností je spustit Transact-SQL dotaz pro vytvoření záložního souboru. Následující příkaz Transact-SQL provede stejné akce jako předchozí kroky pro databázi s názvem 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
Instalovat prostředí Bash na Windows
Chcete-li obnovit databázi, musíte nejprve přenést záložní soubor z počítače s Windows na cílový počítač s Linuxem. V tomto kurzu přesuneme soubor do Linuxu z prostředí Bash (okno terminálu) spuštěného ve Windows.
Nainstalujte prostředí Bash na počítač s Windows, které podporuje příkazy scp (zabezpečené kopírování) a příkazy ssh (vzdálené přihlašování). Mezi dva příklady patří:
- Subsystém Windows pro Linux
- Prostředí Git bash
Otevřete relaci Bash ve Windows.
Zkopírování záložního souboru do Linuxu
V relaci Bash přejděte do adresáře obsahujícího záložní soubor. Například:
cd 'C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\Backup\'Pomocí příkazu scp přeneste soubor do cílového počítače s Linuxem. Následující příklad přenese
YourDB.bakdo domovského adresářeuser1na serveru s Linuxem s IP adresou 192.168.2.9:scp YourDB.bak user1@192.168.2.9:./Tady je očekávaný výstup:
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
Spropitné
Existují alternativy k použití scp pro přenos souborů. Jedna možnost je použít Samba ke konfiguraci sdílené síťové složky SMB mezi Linuxem a Windows. Pokud potřebujete návod na Ubuntu, podívejte se na Samba jako souborový server. Po vytvoření můžete k ní přistupovat jako ke sdílené síťové složce ze systému Windows, například \\machinenameorip\share.
Přesunutí záložního souboru před obnovením
V tomto okamžiku se záložní soubor nachází na vašem linuxovém serveru v domovském adresáři uživatele. Před obnovením databáze na SQL Server je nutné umístit zálohu do podadresáře /var/opt/mssql, protože tento adresář vlastní uživatel mssql a skupina mssql. Pokud chcete změnit výchozí umístění zálohování, přečtěte si článek Konfigurace pomocí nástroje mssql-conf.
Ve stejné relaci Bash ve Windows se vzdáleně připojte k cílovému počítači s Linuxem pomocí ssh. Následující příklad se připojí k počítači s Linuxem
192.168.2.9jako uživateluser1.ssh user1@192.168.2.9Teď spouštíte příkazy na vzdáleném serveru s Linuxem.
Přejděte do režimu superuživatele.
sudo suVytvořte nový záložní adresář. Parametr
-pnedělá nic, pokud adresář již existuje.mkdir -p /var/opt/mssql/backupPřesuňte záložní soubor do daného adresáře. V následujícím příkladu se záložní soubor nachází v domovském adresáři
user1. Změňte příkaz tak, aby odpovídal umístění a názvu souboru záložního souboru.mv /home/user1/YourDB.bak /var/opt/mssql/backup/Ukončete režim superuživatele.
exit
Obnovení databáze v Linuxu
K obnovení zálohy databáze můžete použít příkaz RESTORE DATABASE Transact-SQL (TQL).
Následující kroky používají nástroj sqlcmd. Pokud jste nenainstalovali nástroje SQL Serveru, přečtěte si téma Instalace nástrojů sqlcmd a bcp SQL Serveru příkazového řádku v Linuxu.
Ve stejném terminálu spusťte sqlcmd. Následující příklad se připojí k místní instanci SQL Serveru pomocí účtu
sa. Po zobrazení výzvy zadejte heslo nebo zadejte heslo přidáním parametru-P.sqlcmd -S localhost -U saNa příkazovém řádku
>1zadejte následující příkazRESTORE DATABASEa po každém řádku stiskněte klávesu ENTER (nemůžete zkopírovat a vložit celý příkaz s více řádky najednou). Nahraďte všechny výskytyYourDBnázvem vaší databáze.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'; GOMěla by se zobrazit zpráva, že se databáze úspěšně obnovila.
RESTORE DATABASEmůže vrátit chybu jako v následujícím příkladu: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.).V tomto případě databáze obsahuje sekundární soubory. Pokud nejsou tyto soubory zadány v klauzuli
MOVEv rámciRESTORE DATABASE, postup obnovení se je pokusí vytvořit ve stejné složce jako původní server.Můžete zobrazit seznam všech souborů zahrnutých do zálohy:
RESTORE FILELISTONLY FROM DISK = '/var/opt/mssql/backup/YourDB.bak'; GOMěli byste získat seznam podobný následujícímu příkladu (výpis pouze dvou prvních sloupců):
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 ..............Tento seznam můžete použít k vytvoření
MOVEklauzulí pro extra soubory. V tomto příkladu jeRESTORE DATABASE: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'; GOOvěřte obnovení výpisem všech databází na serveru. Obnovená databáze by měla být uvedená.
SELECT name FROM sys.databases; GOSpusťte další dotazy na migrovanou databázi. Následující příkaz přepne kontext do databáze
YourDBa vybere řádky z jedné z jejích tabulek.USE YourDB; SELECT * FROM YourTable; GOAž budete hotovi pomocí sqlcmd, zadejte
exit.Až budete hotovi s prací ve vzdálené relaci ssh, zadejte příkaz
exitznovu.
Další krok
V tomto kurzu jste zjistili, jak zálohovat databázi ve Windows a přesunout ji na linuxový server s SQL Serverem. Naučili jste se:
- Použití SSMS a Transact-SQL k vytvoření záložního souboru ve Windows
- Instalace prostředí Bash ve Windows
- Přesunutí záložních souborů z Windows do Linuxu pomocí scp
- Použití ssh k vzdálenému připojení k počítači s Linuxem
- Přemístění záložního souboru pro přípravu na obnovení
- Použití sqlcmd ke spuštění příkazů Transact-SQL
- Obnovení zálohy databáze pomocí příkazu
RESTORE DATABASE - Spuštěním dotazu ověřte migraci.
Dále prozkoumejte další scénáře migrace SQL Serveru v Linuxu.