PostgreSQL нұсқасын жаңарту
ДБ инстанстары үшін PostgreSQL нұсқаларын мерзімді түрде жаңартып отыру ұсынылады. Жаңа нұсқаларда жаңа мүмкіндіктер қосылып, қателер түзетілген.
Жаңарту алдында:
- Жаңартуды жоспарлап отырған ДҚ инстансының сақтық көшірмесін орындаңыз.
- Сақтық көшірмеден жаңартылуы жоспарланған инстанспен бірдей инстансты өрістетіңіз. Ол үшін жаңартуды орындап, барлық деректердің қолжетімді болып қалатынын тексеріңіз.
PostgreSQL ДБ инстансын жаңарту үшін:
- VK Cloud жеке кабинетіне өтіңіз.
- Қажетті ДҚ инстансы орналасқан жобаны таңдаңыз.
- Дерекқорлар → Дерекқор инстанстары бөліміне өтіңіз. Егер ДҚ инстансы үшін жаңарту қолжетімді болса, тиісті хабарлама оның атауының оң жағында орналасады.
- Жаңарту қолжетімді болатын ДҚ инстансына өтіңіз.
- Жаңартуды орнату түймесін басыңыз.
- Пайда болған терезеде тізімнен қажетті нұсқаны таңдаңыз.
- Нұсқаны өзгерту түймесін басыңыз.
-
Trove сервисінің API пайдалану үшін URL алыңыз.
URL көрінісі:
https://<эндпоинт API>/<идентификатор проекта>/. -
API-ге сұрауларды авторизациялау үшін токен алыңыз.
-
Жаңартуды орындаңыз. Жаңарту рәсімі конфигурацияға байланысты:
Single и Master-ReplicaКластер-
ДҚ инстанстарының тізімін алыңыз:
cURL (Linux bash \ macOS zsh)cURL (Windows PowerShell)curl \--request GET \--url https://<эндпоинт API>/<идентификатор проекта>/instances \--header 'X-Auth-Token: <токен>'curl `--request GET `--url https://<эндпоинт API>/<идентификатор проекта>/instances `--header 'X-Auth-Token: <токен>' -
API сұрауына берілген жауаптан
Masterрөлі бар инстанстың идентификаторын анықтаңыз. Master-Replica конфигурациясында барлық инстанстарды жаңартуMasterрөлі бар ДҚ инстансын жаңарту арқылы орындалады. Жаңартуды текReplicaрөлі бар инстанстар үшін ғана орындау мүмкін емес.Мұндай инстанстың идентификаторын анықтау үшін:
-
instances[].nameөрісінен қажетті атауы бар инстансты табыңыз. -
Бұл PostgreSQL инстансы екеніне көз жеткізіңіз:
{"instances": [{"id": "<идентификатор инстанса>","name": "<имя инстанса>",..."datastore": {"type": "<тип СУБД: postgresql>","version": "<версия СУБД>"},...},...]} -
instances[].replica_ofөрісінің бар-жоғын тексеріңіз:- Егер мұндай өріс бар болса, онда бұл
Replicaрөлі бар инстанс, ал өрістегі мән —Masterрөлі бар инстанстың қажет идентификаторы. - Егер мұндай өріс жоқ болса, онда бұл
Masterрөлі бар инстанс. Осы инстанстың идентификаторынinstances[].idөрісінен жазыңыз.
- Егер мұндай өріс бар болса, онда бұл
-
-
API сұрауына берілген жауаптан жаңартуға болатын нұсқаны анықтаңыз. Бұл үшін
Masterрөлі бар инстанс туралы мәліметтерді қараңыз.Replicaрөлі бар инстанстар үшін жаңарту мүмкіндіктері туралы ақпарат берілмейді.{"instances": [{"id": "<идентификатор инстанса с ролью Master>",..."datastore": {...,"version": "<версия СУБД>"},..."upgrade_info": {"major_version": "<версия, на которую можно обновиться>","minor_versions": []},},...]}Жаңартуды
instances[].upgrade_info.major_versionөрісінде көрсетілген нұсқаға дейін орындауға болады. Егер өрісте — бос мән болса, онда ДҚ инстансы ең өзекті нұсқаны пайдаланып тұр және жаңарту қажет емес.ДҚ инстансын бірден бірнеше нұсқа алға жаңартқанда аралық нұсқаларды өткізіп жіберу мүмкін емес:
- PostgreSQL 10 → 11 → 12 → 13 → 14 жаңартуын орындауға болады;
- PostgreSQL 10 → 14 жаңартуын орындауға болмайды;
-
API сұрауына берілген жауаптан
Masterрөлі бар инстанс үшін барлық репликаларды табыңыз және, егер олар бар болса, олардың идентификаторларын алыңыз. Идентификаторлар репликалар үшін жаңарту барысын бақылау үшін қажет.Masterрөлі бар инстанстың идентификаторы бойынша іздеуді орындаңыз:-
Егер осы идентификатор
instances[].replica_ofөрістерінде аталған болса, онда осындай мәндері бар өрістері бар инстанстар — репликалар. Олардың идентификаторларын жазыңыз.{"instances": [{"id": "<идентификатор инстанса c ролью Replica>",...,"replica_of": "<идентификатор инстанса с ролью Master>",...},...]} -
Егер осы идентификатор
instances[].replica_ofөрістерінде табылмаса, онда репликалар жоқ, ал осындай идентификаторы бар инстанс — Single конфигурациясында. Қосымша әрекеттер қажет емес.
-
-
Жаңарту процесін іске қосыңыз:
cURL (Linux bash \ macOS zsh)cURL (Windows PowerShell)curl \--request PATCH \--url https://<эндпоинт API>/<идентификатор проекта>/instances/<идентификатор инстанса с ролью Master> \--header 'X-Auth-Token: <токен>' \--data '{"instance":{"datastore_version": "<версия, на которую нужно обновиться>"}}'curl `--request PATCH `--url https://<эндпоинт API>/<идентификатор проекта>/instances/<идентификатор инстанса с ролью Master> `--header 'X-Auth-Token: <токен>' `--data '{\"instance\":{\"datastore_version\": \"<версия, на которую нужно обновиться>\"}}'Жаңарту басталады, процесс ұзақ уақыт алуы мүмкін.
-
Жеке
MasterнемесеReplicaрөлі бар инстанстар үшін (бар болса) жаңарту барысын мерзімді түрде тексеріп отырыңыз:cURL (Linux bash \ macOS zsh)cURL (Windows PowerShell)curl \--request GET \--url https://<эндпоинт API>/<идентификатор проекта>/instances/<идентификатор инстанса> \--header 'X-Auth-Token: <токен>'curl `--request GET `--url https://<эндпоинт API>/<идентификатор проекта>/instances/<идентификатор инстанса> `--header 'X-Auth-Token: <токен>'Жаңарту кезінде
instance.statusөрісінің мәні ретіменBACKUP,UPGRADEболып өзгереді.Жаңарту аяқталғаннан кейін:
instance.statusөрісіндегі мәнACTIVEболып өзгереді.instance.last_task_resultөрісінде соңғы орындалған операцияның нәтижесі туралы ақпарат пайда болады. Сәтті жаңартылғандағы мәні —MAJOR_UPGRADE_COMPLETED.
-
ДҚ кластерлерінің тізімін алыңыз:
cURL (Linux bash \ macOS zsh)cURL (Windows PowerShell)curl \--request GET \--url https://<эндпоинт API>/<идентификатор проекта>/clusters \--header 'X-Auth-Token: <токен>'curl `--request GET `--url https://<эндпоинт API>/<идентификатор проекта>/clusters `--header 'X-Auth-Token: <токен>' -
API сұрауына берілген жауаптан жаңартылуы керек кластердің идентификаторын және кластерді қандай нұсқаға дейін жаңартуға болатынын анықтаңыз:
{"clusters": [{"id": "<идентификатор кластера>","name": "<имя кластера>",..."datastore": {"type": "<тип СУБД: postgresql>","version": "<версия СУБД>"},..."upgrade_info": {"major_version": "<версия, на которую нужно обновиться>","minor_versions": []},...},...]}Жаңартуды
clusters[].upgrade_info.major_versionөрісінде көрсетілген нұсқаға дейін орындауға болады. Егер өрісте — бос мән болса, онда ДҚ кластеры ең өзекті нұсқаны пайдаланып тұр және жаңарту қажет емес.ДҚ кластерін бірден бірнеше нұсқа алға жаңартқанда аралық нұсқаларды өткізіп жіберу мүмкін емес:
- PostgreSQL 10 → 11 → 12 → 13 → 14 жаңартуын орындауға болады;
- PostgreSQL 10 → 14 жаңартуын орындауға болмайды;
-
ДҚ кластерін жаңарту процесін іске қосыңыз:
cURL (Linux bash \ macOS zsh)cURL (Windows PowerShell)curl \--request POST \--url https://<эндпоинт API>/<идентификатор проекта>/clusters/<идентификатор кластера> \--header 'Content-Type: application/json' \--header 'X-Auth-Token: <токен>' \--data '{"datastore_upgrade":{"datastore_version": "<версия, на которую можно обновиться>"}}'curl \--request POST `--url https://<эндпоинт API>/<идентификатор проекта>/clusters/<идентификатор кластера> `--header 'Content-Type: application/json' `--header 'X-Auth-Token: <токен>' `--data '{\"datastore_upgrade\":{\"datastore_version\": \"<версия, на которую можно обновиться>\"}}'Жаңарту басталады, процесс ұзақ уақыт алуы мүмкін.
-
Жаңарту барысын мерзімді түрде тексеріңіз: жаңартылып жатқан ДҚ кластеры туралы толық ақпаратты сұратыңыз:
cURL (Linux bash \ macOS zsh)cURL (Windows PowerShell)curl \--request GET \--url https://<эндпоинт API>/<идентификатор проекта>/clusters/<идентификатор кластера> \--header 'X-Auth-Token: <токен>'curl `--request GET `--url https://<эндпоинт API>/<идентификатор проекта>/clusters/<идентификатор кластера> `--header 'X-Auth-Token: <токен>'Жаңарту кезінде:
cluster.task.nameөрісіндеUPGRADING_CLUSTERмәні болады.cluster.instances[].statusөрісінде кластер инстанстары өз мәртебесін ретіменBACKUP,UPGRADEдеп өзгертеді.
Жаңарту аяқталғаннан кейін:
cluster.task.nameөрісіндеNONEмәні болады.cluster.last_task_resultөрісінде соңғы орындалған операцияның нәтижесі туралы ақпарат пайда болады. Сәтті жаңартылғандағы мәні —MAJOR_UPGRADE_COMPLETED.
-
Мақала пайдалы болды ма?
Мақала пайдалы болды ма?