Harjoitus: Paikallisen PostgreSQL-tietokannan siirtäminen Azure-tietokantaan PostgreSQL:ää varten
Tässä harjoituksessa siirrät PostgreSQL-tietokannan Azureen. Siirrät näennäiskoneessa suoritettavan PostgreSQL-tietokannan Azure Database for PostgreSQL:lle.
Työskentelet AdventureWorks-organisaation tietokantakehittäjänä. AdventureWorks on myynyt polkupyöriä ja polkupyörien osia suoraan loppukäyttäjille ja jakelijoille yli vuosikymmenen ajan. Niiden järjestelmät tallentavat tietoja tietokantaan, jota käytetään tällä hetkellä PostgreSQL:n avulla Azure-näennäiskoneessa. AdventureWorks haluaa siirtää tietokannan Azuren hallittuun tietokantaan osana laitteiston rationalisointiharjoitusta. Sinua on pyydetty suorittamaan tämä siirto.
Tärkeää
Azuren tietojen siirtopalvelua ei tueta maksuttomassa Azure-eristysympäristössä. Voit suorittaa nämä vaiheet omassa tilauksessasi tai vain seurata ohjeita tietokantasi siirtämiseen.
Ympäristön määrittäminen
Suorita nämä Azure CLI -komennot Cloud Shellissä luodaksesi näennäiskoneen, joka suorittaa PostgreSQL:n, ja kopion adventureworks-tietokannasta. Viimeiset komennot tulostavat uuden näennäiskoneen IP-osoitteen.
az account list-locations -o table
az group create \
--name migrate-postgresql \
--location <CHOOSE A LOCATION FROM ABOVE NEAR YOU>
az vm create \
--resource-group migrate-postgresql \
--name postgresqlvm \
--admin-username azureuser \
--admin-password Pa55w.rdDemo \
--image Ubuntu2204 \
--public-ip-address-allocation static \
--public-ip-sku Standard \
--vnet-name postgresqlvnet \
--nsg ""
az vm run-command invoke \
--resource-group migrate-postgresql \
--name postgresqlvm \
--command-id RunShellScript \
--scripts "
# Install PostgreSQL
sudo echo deb http://apt.postgresql.org/pub/repos/apt/ bionic-pgdg main > /etc/apt/sources.list.d/pgdg.list
sudo wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
sudo apt-get -y update
sudo apt-get -y install postgresql-10
# Clone exercise code
sudo git clone https://github.com/MicrosoftLearning/DP-070-Migrate-Open-Source-Workloads-to-Azure.git /home/azureuser/workshop
# Configure PostgreSQL
sudo service postgresql stop
sudo bash << EOF
printf \"listen_addresses = '*'\nwal_level = logical\nmax_replication_slots = 5\nmax_wal_senders = 10\n\" >> /etc/postgresql/10/main/postgresql.conf
printf \"host all all 0.0.0.0/0 md5\n\" >> /etc/postgresql/10/main/pg_hba.conf
EOF
sudo service postgresql start
# Add the azureuser role and adventure works
sudo bash << EOF
su postgres << EOC
printf \"create role azureuser with login;alter role azureuser createdb;alter role azureuser password 'Pa55w.rd';alter role azureuser superuser;create database adventureworks;grant all privileges on database adventureworks to azureuser; \" | psql
EOC
EOF
PGPASSWORD=Pa55w.rd psql -h localhost -U azureuser adventureworks -E -q -f /home/azureuser/workshop/migration_samples/setup/postgresql/adventureworks/adventureworks.sql
"
az vm open-port \
--resource-group migrate-postgresql \
--name postgresqlvm \
--priority 200 \
--port '22'
az vm open-port \
--resource-group migrate-postgresql \
--name postgresqlvm \
--priority 300 \
--port '5432'
echo Setup Complete
SQLIP="$(az vm list-ip-addresses \
--resource-group migrate-postgresql \
--name postgresqlvm \
--query "[].virtualMachine.network.publicIpAddresses[*].ipAddress" \
--output tsv)"
echo $SQLIP
Näiden komentojen suorittaminen kestää noin 5 minuuttia. Sinun ei tarvitse odottaa, voit jatkaa alla seuraavien vaiheiden avulla.
Luo Azure-tietokanta PostgreSQL:n joustavalle palvelimelle
Avaa verkkoselaimella uusi välilehti ja siirry Azureportaalin.
Kirjoita hakupalkkiin Azure Database for PostgreSQL flexible Servers.
Valitse Azure Database for PostgreSQL:n joustaville palvelimille -sivulla + Luo.
Anna Flexible Server -sivulla seuraavat tiedot ja valitse sitten Review + create:
Ominaisuus Arvo Resurssiryhmä siirtää postgresql- Palvelimen nimi adventureworksnnn, jossa nnn on jälkiliite valinnastasi palvelimen nimen yksilöimiseksi. Sijainti Valitse lähin sijaintisi PostgreSQL-versio 13 Käsittely + tallennustila Valitse Määritä palvelimen, valitse Perushinta -hinnoittelutaso ja valitse sitten OK Järjestelmänvalvojan käyttäjänimi awadmin salasanalla Pa55w.rdDemo Vahvista salasana Pa55w.rdDemo Valitse Review + Create -sivulta luo Luo. Odota, että palvelu luodaan, ennen kuin jatkat.
Kun palvelu on luotu, valitse Siirry resurssiin.
Valitse Connection Security.
Määritä Connection Security -sivullaSalli Azure-palveluiden -Kyllä.
Lisää palomuurisääntöjen luetteloon sääntö nimeltä VM, ja määritä START IP ADDRESS - ja END IP ADDRESS - aiemmin luomasi PostgreSQL-palvelimen suorittavan näennäiskoneen IP-osoitteeseen.
Valitse Lisää nykyinen asiakkaan IP-osoite, jotta asiakaskone voi muodostaa yhteyden tietokantaan.
Tallennaja odota, kunnes palomuurisäännöt päivitetään.
Luo uusi tietokanta Azure Database for PostgreSQL -palvelussa suorittamalla Cloud Shell -kehotteessa seuraava komento. Korvaa [nnn] jälkiliitteellä, jota käytit Luodessasi Azure Database for PostgreSQL -palvelua. Korvaa [resurssiryhmä] palvelulle määrittämäsi resurssiryhmän nimellä:
az postgres flexible-server create \ --name azureadventureworks \ --resource-group migrate-postgresqlJos tietokanta on luotu onnistuneesti, seuraavankaltainen sanoma pitäisi näkyä:
{ "charset": "UTF8", "collation": "English_United States.1252", "name": "azureadventureworks", "resourceGroup": "migrate-postgresql", "type": "Microsoft.DBforPostgreSQL/servers/databases" }
Kohdetietokannassa käytettävän rakenteen vieminen
Muodostat nyt yhteyden olemassa olevaan PostgreSQL-näennäiskoneeseen Käyttämällä Cloud Shelliä tietokantarakenteen viemiseen.
Suorita tämä Azure CLI -komento, jotta näet olemassa olevan näennäiskoneen IP-osoitteen.
SQLIP="$(az vm list-ip-addresses \ --resource-group migrate-postgresql \ --name postgresqlvm \ --query "[].virtualMachine.network.publicIpAddresses[*].ipAddress" \ --output tsv)" echo $SQLIPMuodosta yhteys vanhaan tietokantapalvelimeen SSH:n avulla. Kirjoita salasanaksi Pa55w.rdDemo.
ssh azureuser@$SQLIPMuodosta yhteys tietokantaan näennäiskoneessa suorittamalla seuraava komento. Näennäiskoneella toimivan PostgreSQL-palvelimen azureuser -käyttäjän salasana on Pa55w.rd:
psql adventureworksMyönnä replikointioikeus azureuserille:
ALTER ROLE azureuser REPLICATION;Sulje psql -apuohjelma \q -komennolla.
Suorita bash-kehotteessa seuraava komento, jotta voit viedä adventureworks -tietokannan rakenteen adventureworks_schema.sql
pg_dump -o -d adventureworks -s > adventureworks_schema.sql
Rakenteen tuominen kohdetietokantaan
Muodosta yhteys azureadventureworks[nnn]-palvelimeen suorittamalla seuraava komento. Korvaa kaksi [nnn]- -esiintymää palvelusi jälkiliitteellä. Huomaa, että käyttäjänimessä on @adventureworks[nnn]- jälkiliite. Kirjoita salasanakehotteeseen Pa55w.rdDemo.
psql -h adventureworks[nnn].postgres.database.azure.com -U awadmin@adventureworks[nnn] -d postgresSuorita seuraavat komennot, jos haluat luoda käyttäjän nimeltä azureuser ja määrittää tämän käyttäjän salasanaksi Pa55w.rd. Kolmas lauseke antaa azureuser- käyttäjälle tarvittavat oikeudet luoda ja hallita azureadventureworks -tietokannassa olevia objekteja. azure_pg_admin -roolin avulla azureuser -käyttäjä voi asentaa ja käyttää laajennuksia tietokannassa.
CREATE ROLE azureuser WITH LOGIN; ALTER ROLE azureuser PASSWORD 'Pa55w.rd'; GRANT ALL PRIVILEGES ON DATABASE azureadventureworks TO azureuser; GRANT azure_pg_admin TO azureuser;Sulje psql -apuohjelma \q -komennolla.
Tuo Adventureworks -tietokannan rakenne azureadventureworks -tietokantaan, joka on käytössä Azure Database for PostgreSQL -palvelussasi. Suoritat tuonnin azureuser, joten anna pyydettäessä salasana Pa55w.rd..
psql -h adventureworks[nnn].postgres.database.azure.com -U azureuser@adventureworks[nnn] -d azureadventureworks -E -q -f adventureworks_schema.sqlNäet viestisarjan, kun kutakin kohdetta luodaan. Komentosarjan pitäisi valmistua ilman virheitä.
Suorita seuraava komento. findkeys.sql-komentosarja luo toisen SQL-komentosarjan nimeltä dropkeys.sql joka poistaa kaikki viiteavaimet tietokannan azureadventureworks- taulukoista. Suoritat dropkeys.sql komentosarjan pian:
psql -h adventureworks[nnn].postgres.database.azure.com -U azureuser@adventureworks[nnn] -d azureadventureworks -f workshop/migration_samples/setup/postgresql/adventureworks/findkeys.sql -o dropkeys.sql -tSuorita seuraava komento. createkeys.sql-komentosarja luo toisen SQL-komentosarjan nimeltä addkeys.sql, joka luo kaikki viiteavaimet uudelleen. Suoritat addkeys.sql komentosarjan, kun olet siirtänyt tietokannan:
psql -h adventureworks[nnn].postgres.database.azure.com -U azureuser@adventureworks[nnn] -d azureadventureworks -f workshop/migration_samples/setup/postgresql/adventureworks/createkeys.sql -o addkeys.sql -tSuorita dropkeys.sql-komentosarja:
psql -h adventureworks[nnn].postgres.database.azure.com -U azureuser@adventureworks[nnn] -d azureadventureworks -f dropkeys.sqlNäkyviin tulee sarja ALTER TABLE kun viiteavaimet pudotetaan.
Tilastoi psql-apuohjelma uudelleen ja muodosta yhteys azureadventureworks -tietokantaan.
psql -h adventureworks[nnn].postgres.database.azure.com -U azureuser@adventureworks[nnn] -d azureadventureworksEtsi jäljellä olevien viiteavainten tiedot suorittamalla seuraava kysely:
SELECT constraint_type, table_schema, table_name, constraint_name FROM information_schema.table_constraints WHERE constraint_type = 'FOREIGN KEY';Tämän kyselyn pitäisi palauttaa tyhjä tulosjoukko. Jos viiteavaimia on vielä olemassa, suorita jokaiselle viiteavaimelle seuraava komento:
ALTER TABLE [table_schema].[table_name] DROP CONSTRAINT [constraint_name];Kun olet poistanut jäljellä olevat viiteavaimet, suorita seuraava SQL-lauseke, jotta käynnistimet näkyvät tietokannassa:
SELECT trigger_name FROM information_schema.triggers;Tämän kyselyn tulisi myös palauttaa tyhjä tulosjoukko, joka ilmaisee, että tietokanta ei sisällä käynnistimiä. Jos tietokanta sisältää käynnistimiä, sinun täytyy poistaa ne käytöstä ennen tietojen siirtämistä ja ottaa ne uudelleen käyttöön myöhemmin.
Sulje psql -apuohjelma \q -komennolla.
Online-siirron suorittaminen tietokannan siirtopalvelun avulla
Vaihda takaisin Azure-portaaliin.
Valitse Kaikki palvelut, valitse Tilauksetja valitse sitten tilauksesi.
Valitse tilaussivulla asetukset -kohdassa Resurssinpalveluntarjoajat.
Kirjoita suodata nimen mukaan -ruutuun DataMigration, ja valitse sitten Microsoft.DataMigration.
Jos Microsoft.DataMigration- ei ole rekisteröity, valitse Rekisteröija odota, kunnes Status - muuttuu arvoksi Registered. Tilan vaihtaminen voi olla tarpeen, jos valitset Päivitä .
Valitse Luo resurssi, valitse Hae Marketplacesta -ruututyyppi Azure-tietokantojen siirtopalvelu -ja paina Enter-näppäintä.
Valitse Azure -tietokantojen siirtopalvelun -sivulta Luo.
Anna Luo siirtopalvelu -sivulla seuraavat tiedot ja valitse sitten Seuraava: Verkkopalvelut>>.
Ominaisuus Arvo Valitse resurssiryhmä siirtää postgresql- Palvelun nimi adventureworks_migration_service Sijainti Valitse lähin sijaintisi Palvelutila Azure Hinnoittelutaso Premium, jossa on 4 näennäisydintä Valitse Verkkopalvelut -sivulta näennäisverkon postgresqlvnet/posgresqlvmSub net. Tämä verkko luotiin osana asennusta.
Valitse Review + Create ja valitse sitten Luo. Odota, kun tietokannan siirtopalvelu on luotu. Tämä kestää muutaman minuutin.
Kun palvelu on luotu, valitse Siirry resurssiin.
Valitse Uusi siirtoprojekti -.
Anna Uusi siirtoprojekti -sivulla seuraavat tiedot ja valitse sitten Luo ja suorita toimintojen.
Ominaisuus Arvo Projektin nimi adventureworks_migration_project Lähdepalvelimen tyyppi PostgreSQL PostgreSQL:n kohdetietokanta Azure-tietokanta PostgreSQL-:lle Valitse aktiviteetin tyyppi Online -tietojen siirron Kun ohjattu - käynnistyy, anna Valitse lähde -sivulla seuraavat tiedot ja valitse sitten Seuraava: Valitse kohde>>.
Ominaisuus Arvo Lähdepalvelimen nimi nn.nn.nn.nn (PostgreSQL:ää suoritavan Azure-näennäiskoneen IP-osoite) Palvelinportti 5432 Database adventureworks - Käyttäjänimi azureuser salasanalla Pa55w.rd Luottamuspalvelinvarmenne valittujen Salausyhteys valittujen Anna seuraavat tiedot valitse Valitse kohde -sivulla ja valitse sitten Seuraava: Valitse tietokannat>>.
Ominaisuus Arvo Azure PostgreSQL adventureworks[nnn] Database azureadventureworks- Käyttäjänimi azureuser@adventureworks[nnn] salasanalla Pa55w.rd Valitse Valitse tietokannat -sivulta adventureworks -tietokanta ja yhdistä se azureadventureworks. Poista postgrestietokannan valinta. Valitse Seuraava: Valitse taulukot>>.
Valitse Valitse taulukot -sivulta Seuraava: Siirtoasetusten määrittäminen>>.
Laajenna Määritä siirtoasetukset -sivulla avattava Adventureworks -valikko. Laajenna avattava Online-siirtymisasetusten avattava. Varmista, että Rinnakkain ladattavien esiintymien enimmäismääräksi on 5, ja valitse sitten Seuraava: Yhteenveto>>.
Valitse Yhteenveto -sivulta Aktiviteetin nimi -ruututyypiksi AdventureWorks_Migration_Activity, ja valitse sitten Aloita siirto -.
Valitse sivun AdventureWorks_Migration_Activity Päivitä 15 sekunnin välein Päivitä. Näet siirtotoiminnon tilan sen edetessä. Odota, kunnes MIGRATION DETAILS --sarake muuttuu arvoon Ready to cutover.
Vaihda takaisin Cloud Shelliin.
Suorita seuraava komento, jos haluat luoda viiteavaimet uudelleen azureadventureworks -tietokannassa. Loit aiemmin addkeys.sql -komentosarjan:
psql -h adventureworks[nnn].postgres.database.azure.com -U azureuser@adventureworks[nnn] -d azureadventureworks -f addkeys.sqlNäet joukon ALTER TABLE -lausekkeita viiteavainten lisätessä. Saatat saada SpecialOfferProduct -taulukon virheen, joka voidaan ohittaa toistaiseksi. Tämä johtuu UNIQUE-rajoitteista, joita ei siirretä oikein. Todellisessa maailmassa sinun tulee noutaa tämän rajoitteen tiedot lähdetietokannasta käyttämällä seuraavaa kyselyä:
SELECT constraint_type, table_schema, table_name, constraint_name FROM information_schema.table_constraints WHERE constraint_type = 'UNIQUE';Voit sitten palauttaa tämän rajoitteen manuaalisesti PostgreSQL:n kohdetietokannassa.
Muita virheitä ei pitäisi olla.
Muokkaa tietoja ja siirry uuteen tietokantaan
Palaa Azure-portaalin AdventureWorks_Migration_Activity-sivulle.
Valitse Adventureworks -tietokanta.
Varmista adventureworks -sivulla, että Täyden latauksen valmis-arvo on 66 ja että kaikki muut arvot ovat 0.
Vaihda takaisin Cloud Shelliin.
Muodosta yhteys Adventureworks -tietokantaan suorittamalla PostgreSQL-komento näennäiskoneessa suorittamalla seuraava komento:
psql adventureworksSuorita seuraavat NÄYTETTÄVÄt SQL-lausekkeet ja poista sitten tilaukset 43659, 43660 ja 43661 tietokannasta. Huomaa, että tietokanta toteuttaa johdannaispoiston salesorderheader -taulukossa, joka poistaa automaattisesti vastaavat rivit salesorderdetail -taulukosta.
SELECT * FROM sales.salesorderheader WHERE salesorderid IN (43659, 43660, 43661); SELECT * FROM sales.salesorderdetail WHERE salesorderid IN (43659, 43660, 43661); DELETE FROM sales.salesorderheader WHERE salesorderid IN (43659, 43660, 43661);Sulje psql -apuohjelma \q -komennolla.
Palaa Azure-portaalin adventureworks -sivulle ja valitse Päivitä. Varmista, että 32 muutosta on otettu käyttöön.
Valitse Aloita leikkaus.
Valitse Complete cutover -sivulta Vahvistaja valitse sitten Käytä. Odota, kunnes tilaksi muuttuu Valmis .
Palaa Cloud Shelliin.
Muodosta yhteys azureadventureworks -tietokantaan suorittamalla seuraava komento Käyttämällä Azure Database for PostgreSQL -palvelua:
psql -h adventureworks[nnn].postgres.database.azure.com -U azureuser@adventureworks[nnn] -d azureadventureworksSalasana on Pa55w.rd.
Suorita seuraavat SQL-lausekkeet, jotta voit näyttää tilaukset ja tilauksen tiedot tietokannassa. Lopeta kunkin taulukon ensimmäisen sivun jälkeen. Näiden kyselyjen tarkoituksena on osoittaa, että tiedot on siirretty:
SELECT * FROM sales.salesorderheader; SELECT * FROM sales.salesorderdetail;Suorita seuraavat SQL-lausekkeet, jotta näet tilausten 43659, 43660 ja 43661 tilaukset ja tiedot.
SELECT * FROM sales.salesorderheader WHERE salesorderid IN (43659, 43660, 43661); SELECT * FROM sales.salesorderdetail WHERE salesorderid IN (43659, 43660, 43661);Kummankin kyselyn tulee palauttaa 0 riviä.
Sulje psql -apuohjelma \q -komennolla.
Tyhjennä luomasi resurssit
Tärkeää
Jos olet suorittanut nämä vaiheet omassa tilauksessasi, voit poistaa resurssit yksitellen tai poistaa resurssiryhmän poistaaksesi koko resurssijoukon. Käynnissäolevat resurssit voivat maksaa sinulle rahaa.
- Käyttämällä Cloud Shelliä suorita tämä komento resurssiryhmän poistamiseen:
az group delete --name migrate-postgresql