Описание проблемы
В отказоустойчивом кластере PostgreSQL, использующем Patroni и etcd, объем базы данных etcd может достичь установленной квоты хранения. В результате появляются ошибки NOSPACE, снижается стабильность работы кластера и могут возникать проблемы с записью новых данных.
Предварительные условия
- Иметь административный доступ к узлам кластера.
- Убедиться, что кластер функционирует штатно.
- Создать резервную копию базы данных etcd.
Шаг 1. Создать резервную копию etcd
etcdctl snapshot save etcd_backup.db
Шаг 2. Получить текущую ревизию
ETCDCTL_API=3 etcdctl --endpoints=:2379 endpoint status --write-out="json" | egrep -o '"revision":[0-9]*' | egrep -o '[0-9].*'
Шаг 3. Выполнить очистку истории изменений
etcdctl compact <ТЕКУЩАЯ_РЕВИЗИЯ-1000>
Шаг 4. Выполнить дефрагментацию
etcdctl defrag
Шаг 5. Проверить размер базы
ETCDCTL_API=3 etcdctl endpoint status --write-out=table --endpoints=http://<node1>:2379,http://<node2>:2379,http://<node3>:2379
Шаг 6. Сбросить аварийное состояние
ETCDCTL_API=3 etcdctl alarm disarm
Шаг 7. Проверить отсутствие активных предупреждений
Убедиться, что alarm успешно сброшен и кластер работает без предупреждений.
Ожидаемый результат
- Освобождается место в базе данных etcd.
- Устраняется ошибка NOSPACE.
- Размер базы данных уменьшается.
- Кластер PostgreSQL с Patroni работает штатно.
- Активные предупреждения отсутствуют.