3.10. ການໂອນຍ້າຍຖານຂໍ້ມູນ (database migrations)
ເຖິງແມ່ນວ່າພວກເຮົາຈະພະຍາຍາມໃຫ້ດີທີ່ສຸດເພື່ອໂອນຍ້າຍເຄືອຂ່າຍຂອງທ່ານໂດຍອັດຕະໂນມັດໃນຂະນະທີ່ມີການຍົກລະດັບຂອງລະບົບຂຶ້ນ, ແຕ່ກໍມີບາງຄັ້ງທີ່ມັນເປັນໄປບໍ່ໄດ້. ໃນສ່ວນນີ້ພວກເຮົາຈະພະຍາຍາມກວມເອົາບາງການໂອນຍ້າຍທີ່ພົບເລື້ອຍທີ່ສຸດທີ່ທ່ານອາດຈະພົບໃນເວລາທີ່ແລ່ນຊອບແວຣ໌ຂອງພວກເຮົາດ້ວຍຕົນເອງຜ່ານ Docker container.
ຢ່າພະຍາຍາມຍົກລະດັບຂອງລະບົບ GeoPrism Registry ຈາກເວີຊັ້ນຫຼັກເກີນກວ່າສອງລະດັບຕໍ່ຄັ້ງ.
ຂັ້ນຕອນທົ່ວໄປໃນການປະຕິບັດການໂອນຍ້າຍປະເພດໃດໜຶ່ງສາມາດແບ່ງອອກເປັນດັ່ງນີ້:
ສ້າງສະພາບແວດລ້ອມທີ່ຮຽນແບບເຄືອຂ່າຍການຜະລິດຂອງທ່ານ ເພື່ອທີ່ພວກເຮົາຈະທົດສອບຂັ້ນຕອນເຫຼົ່ານີ້
ປະຕິບັດທຸກຂັ້ນຕອນທີ່ຕ້ອງການຕາມທີ່ໄດ້ລະບຸໄວ້ໃນ "Orient DB Migration" ແລະ/ຫຼື "PostgreSQL Migration" ຂ້າງລຸ່ມນີ້ໃນສະພາບແວດລ້ອມທີ່ຮຽນແບບໄວ້, ຕິດຕາມຄໍາສັ່ງທີ່ແນ່ນອນທີ່ກ່ຽວຂ້ອງກັບສະພາບແວດລ້ອມຂອງທ່ານ ແລະ ຈົດບັນທຶກບັນຫາ ຫຼື ຄຳເຕືອນ.
ຕັ້ງເອກະສານ docker-compose.yml ຂອງທ່ານ (ໃນສະພາບແວດລ້ອມການທົດສອບ) ໃຫ້ກັບລຸ້ນ GeoPrism Registry / Postgres / OrientDB ໃໝ່ ແລະ ເປີດໃຊ້
docker compose down
ຈາກນັ້ນdocker compose pull
. ຈາກນັ້ນdocker compose up
. ເມື່ອ GeoPrism Registry boots, ມັນຈະດໍາເນີນການແກ້ໄຂເພີ່ມເຕີມ ຫຼື ໂອນຍ້າຍຕົ້ນສະບັບໂດຍອັດຕະໂນມັດຕາມຄວາມຈໍາເປັນ. ກະລຸນາອົດທົນເນື່ອງຈາກວ່າຂັ້ນຕອນນີ້ຈະຕ້ອງໃຊ້ເວລາ.ກວດເບິ່ງບັນທຶກເພື່ອຊອກຫາຄວາມຜິດພາດ ແລະ ເພື່ອໃຫ້ແນ່ໃຈວ່າການທົດສອບເຄືອຂ່າຍແມ່ນນຳໃຊ້ໄດ້ ແລະ ມີການຕອບສະໜອງ.
ຈັດສັນ "ຊ່ວງເວລາຢຸດເຮັດວຽກ (downtime window)" ສໍາລັບເຄືອຂ່າຍຂອງທ່ານເພື່ອຫຼຸດຜ່ອນການລົບກວນຜູ້ໃຊ້ອື່ນໃຫ້ໜ້ອຍທີ່ສຸດເທົ່າທີ່ເປັນໄປໄດ້
ດຳເນີນການຖ່າຍພາບ/ສໍາຮອງຂໍ້ມູນຂອງເຄືອຂ່າຍການຜະລິດຂອງທ່ານ
ຢຸດ webserver ດ້ວຍ
docker stop georegistry
ດຳເນີນຂັ້ນຕອນຕ່າງໆໃຫ້ຄືກັນກັບທີ່ປະຕິບັດຢູ່ສະພາບແວດລ້ອມການທົດສອບ, ຍົກເວັ້ນວ່າຮອບນີ້ແມ່ນໃນສະພາບແວດລ້ອມການຜະລິດຈິງ
3.10.1. ການໂອນຍ້າຍ OrientDB (OrientDB migration)
ຖ້າ GeoPrism Registry ລຸ້ນໃໝ່ຕ້ອງການການຍົກລະດັບຊອບແວ OrientDB ຫຼັກຂອງທ່ານ, ການໂອນຂໍ້ມູນຕ້ອງປະຕິບັດດ້ວຍຕົນເອງ.
ເອກະສານການໂອນຍ້າຍ OrientDB ຢ່າງເປັນທາງການສາມາດພົບໄດ້ທີ່ນີ້: http://www.orientdb.com/docs/last/release/Upgrade.html
ເນື່ອງຈາກເອກະສານການໂອນຍ້າຍ OrientDB ຢ່າງເປັນທາງການອາດຈະມີການເຮັດໃຫ້ເກີດຄວາມສັບສົນ, ຂາດລາຍລະອຽດ, ຫຼື ບໍ່ເປັນໄປຕາມເປົ້າໝາຍໂດຍກົງ ໃນວິທີທີ່ພວກເຮົານຳໃຊ້ຊອບແວຣ໌ຂອງພວກເຂົາ, ພວກເຮົາຈະນໍາທ່ານຜ່ານຂັ້ນຕອນລະອຽດຢູ່ນີ້.
ຢຸດ webserver ດ້ວຍ
docker stop georegistry
ສ້າງຈຸດໂອນຍ້າຍຂໍ້ມູນຂອງເຄືອຂ່າຍ Orient DB. ຄໍາສັ່ງນີ້ປະກອບມີຕົວແປ (ເລີ່ມຕົ້ນດ້ວຍ $) ເຊິ່ງຕ້ອງຖືກປ່ຽນແທນກ່ອນທີ່ຈະດໍາເນີນການ.
docker exec georegistry-orientdb bash -c 'bin/console.sh "connect remote:localhost/georegistry $ORIENTDB_ROOT_USER $ORIENTDB_ROOT_PASS; export database /orientdb/backup/$ORIENTDB_MAJOR_VERSION.json"'
ຊື່ຜູ້ໃຊ້ orientdb root ເລີ່ມຕົ້ນແມ່ນ 'root'
ລະຫັດຜ່ານ orientdb root ເລີ່ມຕົ້ນແມ່ນ 'root'
ລຸ້ນຫຼັກຂອງ OrientDB ບໍ່ຄວນລວມເອົາລຸ້ນສະບັບແກ້ໄຂ. ຕົວຢ່າງ, '3.2'.
ກຳຈັດເຄືອຂ່າຍ OrientDB
docker rm -f georegistry-orientdb
ລຶບຂໍ້ມູນທັງໝົດໃນປະລິມານທີ່ຕິດຕັ້ງ (mounted volume)
rm -rf data/orientdb/databases/*
ດຳເນີນການເປີດໃຊ້ OrientDB ລຸ້ນໃໝ່. ຄໍາສັ່ງນີ້ປະກອບມີຕົວແປ (ເລີ່ມຕົ້ນດ້ວຍ $) ເຊິ່ງຕ້ອງຖືກປ່ຽນແທນກ່ອນທີ່ຈະດໍາເນີນການ.
docker run --name georegistry-orientdb2 -e ORIENTDB_ROOT_PASSWORD="$ORIENTDB_ROOT_PASS" -e ORIENTDB_OPTS_MEMORY="-Xms512M -Xmx2G" -d -v /data/orientdb/databases:/orientdb/databases -v /data/orientdb/backup:/orientdb/backup orientdb:$ORIENTDB_MAJOR_VERSION
ນຳເຂົ້າຂໍ້ມູນສຳຮອງໃສ່ Orient DB ລຸ້ນໃໝ່. ຄໍາສັ່ງນີ້ປະກອບມີຕົວແປ (ເລີ່ມຕົ້ນດ້ວຍ $) ເຊິ່ງຕ້ອງຖືກປ່ຽນແທນກ່ອນທີ່ຈະດໍາເນີນການ.
docker exec georegistry-orientdb2 bash -c 'bin/console.sh "CREATE DATABASE remote:localhost/georegistry $ORIENTDB_ROOT_USER $ORIENTDB_ROOT_PASS; connect remote:localhost/georegistry $ORIENTDB_ROOT_USER $ORIENTDB_ROOT_PASS; import database /orientdb/backup/$ORIENTDB_MAJOR_VERSION.json.gz"'
ກຳຈັດເຄືອຂ່າຍ OrientDB ຊົ່ວຄາວ
docker rm -f georegistry-orientdb2
3.1.0.2. ການໂອນຍ້າຍ PostgreSQL (PostgreSQL migration)
ການຍົກລະດັບ PostgreSQL ແມ່ນຂ້ອນຂ້າງກົງໄປກົງມາ ແລະ ເຊື່ອຖືໄດ້.
ເອກະສານການເຄື່ອນຍ້າຍ PostgreSQL ຢ່າງເປັນທາງການສາມາດພົບໄດ້ທີ່ນີ້: https://www.postgresql.org/docs/current/upgrading.html#UPGRADING-VIA-PGDUMPALL
ຂັ້ນຕອນພື້ນຖານສໍາລັບການປະຕິບັດການຍົກລະດັບໃນສະພາບແວດລ້ອມການຂຽນ docker ແມ່ນມີດັ່ງຕໍ່ໄປນີ້:
ຢຸດ webserver ດ້ວຍ
docker stop georegistry
ດໍາເນີນການເປີດໃຊ້ Postgres ລຸ້ນໃໝ່ຄືນໃໝ່. ຄໍາສັ່ງນີ້ປະກອບມີຕົວແປ (ເລີ່ມຕົ້ນດ້ວຍ $) ເຊິ່ງຕ້ອງຖືກປ່ຽນແທນກ່ອນທີ່ຈະດໍາເນີນການ.
docker run --name georegistry-postgres2 -d -p 5482:5432 --network $CGR_DOCKER_NETWORK --link georegistry-postgres -v /data/postgres-migrate:/var/lib/postgresql/data -e POSTGRES_PASSWORD=$POSTGRES_ROOT_PASSWORD postgis/postgis:$NEW_POSTGRES_VERSION
ຊື່ຜູ້ໃຊ້ postgres root ເລີ່ມຕົ້ນແມ່ນ
postgres
.ລະຫັດຜ່ານ postgres root ເລີ່ມຕົ້ນແມ່ນ
georegistry
.ຕົວແປ NEW_POSTGRES_VERSION ແມ່ນແທັກຮູບພາບ Docker ແລະ ຄວນມີລຸ້ນ PostGIS ນຳ. ຕົວຢ່າງ '14-3.2'.
ຄ່າຂອງຕົວແປ CGR_DOCKER_NETWORK ສາມາດພົບໄດ້ໂດຍການເປີດໃຊ້
docker inspect georegistry-postgres
. ຊື່ georegistry network ໄດ້ຖືກສ້າງຂື້ນໂດຍອັດຕະໂນມັດ ແລະ ຈະຖືກສະແດງຢູ່ໃນສ່ວນ "Networks" ຂອງຜົນໄດ້ຮັບການກວດສອບ.
ຕິດຕັ້ງ Postgres ລຸ້ນເກົ່າເຂົ້າໄປໃນ Postgres ໃໝ່. ຄໍາສັ່ງນີ້ປະກອບມີຕົວແປ (ເລີ່ມຕົ້ນດ້ວຍ $) ເຊິ່ງຕ້ອງຖືກປ່ຽນແທນກ່ອນທີ່ຈະດໍາເນີນການ
docker exec -t georegistry-postgres2 bash -c "(PGPASSWORD=$POSTGRES_ROOT_PASSWORD pg_dumpall --host georegistry-postgres --port 5432 --username postgres --no-password && echo -e \"\n\nALTER ROLE postgres PASSWORD '$POSTGRES_ROOT_PASSWORD';\" && echo -e \"\n\nALTER ROLE georegistry PASSWORD '$POSTGRES_APP_PASSWORD';\") | psql -d postgres --host 127.0.0.1 --port 5432 --username postgres --no-password"
ລະຫັດຜ່ານ Postgres app ເລີ່ມຕົ້ນແມ່ນ
georegistry
.
ລົບ Postgres containers ຊົ່ວຄາວ
docker rm -f georegistry-postgres && docker rm -f georegistry-postgres2
ລົບ Postgres data directory ລຸ້ນເກົ່າ
rm -rf /data/postgres
ຄັດຂໍ້ມູນ postgres ຈາກລຸ້ນໃໝ່ໄປໃສ່ໄດເລກະທໍລີມາດຕະຖານ
mv /data/postgres-migrate /data/postgres
Last updated