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 – Linux
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.
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 (Windows 10)
- Git bash shell (https://git-scm.com/downloads)
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.