DBAtlas · Атлас эксплуатации баз данных

Применить патч

Oracle

# 1) Shut down the database, apply the binary patch with OPatch:
$ $ORACLE_HOME/OPatch/opatch apply
# 2) Open the database and load the SQL layer changes:
$ $ORACLE_HOME/OPatch/datapatch -verbose

opatch apply обновляет бинарные файлы в Oracle Home; затем datapatch применяет изменения словаря/SQL в открытой базе и регистрирует их в dba_registry_sqlpatch. В RAC патчи с поддержкой rolling можно применять узел за узлом.

PostgreSQL

# Minor version patch = replace binaries + restart (no dump needed):
$ sudo systemctl stop postgresql-16
$ sudo dnf update postgresql16-server   # or apt upgrade
$ sudo systemctl start postgresql-16

Минорные патчи в пределах одной мажорной серии (16.3 -> 16.4) не меняют формат данных: достаточно обновить пакет и перезапустить службу; pg_upgrade или dump/restore не нужны.

MySQL

# Minor/patch update: update the package and restart the service
$ sudo systemctl stop mysqld
$ sudo dnf update mysql-community-server   # or apt upgrade
$ sudo systemctl start mysqld

MySQL 8.0+ автоматически обновляет словарь данных при запуске; отдельный шаг mysql_upgrade не нужен. При репликации сначала обновляйте реплики, затем источник.

SQL Server

-- Run the Cumulative Update (CU) or GDR security update installer:
-- SQLServer2022-KB<no>-x64.exe /quiet /IAcceptSQLServerLicenseTerms
--   /Action=Patch /InstanceName=MSSQLSERVER
-- The instance then restarts; verify the version with SERVERPROPERTY.

Обновления CU (Cumulative Update) и GDR (General Distribution Release) применяются установщиком setup и требуют перезапуска экземпляра. В группе Always On сначала обновляйте вторичные реплики и выполняйте переключение, чтобы минимизировать простой.

MongoDB

// 'Rolling' patch on a replica set: one node at a time
// 1) Stop mongod, replace the binary with the new patch version, restart
// 2) Secondaries first, the primary last
// Step down the primary manually before patching it:
rs.stepDown()

Патч-обновления в пределах одной мажорной версии (7.0.x) выполняются поочерёдно (rolling), сначала secondary. Primary обновляется после передачи роли через rs.stepDown(), что минимизирует простой записи.

Redis

# Patch via rolling restart in a replicated deployment:
# 1) Stop one replica node, install the new version, start it, wait for sync
# 2) Repeat for the remaining replicas
# 3) Finally, fail over the master and patch it:
redis-cli -h <replica> REPLICAOF NO ONE   # promote the upgraded replica

Патч-версии (7.2.x) применяются через rolling restart: сначала обновляются и ресинхронизируются реплики, затем реплика повышается до master и обновляется старый master. Sentinel/Cluster автоматизирует отработку отказа.

Elasticsearch

# Rolling upgrade (patch within the same major version), per node:
PUT _cluster/settings
{ "persistent": { "cluster.routing.allocation.enable": "primaries" } }
# -> stop the node, update the package, start the node, then:
PUT _cluster/settings
{ "persistent": { "cluster.routing.allocation.enable": null } }

Патч/минорные обновления выполняются через rolling upgrade: размещение шардов ограничивается, узлы по одному обновляются и перезапускаются, затем размещение снова включается и ожидается возврат кластера в green.

Открыть в DBAtlas →