Предположим, что имеется кластер ETCD, который используется кластером PostgreSQL (Patroni), и размер базы почти достиг значения в 2 ГБ.
- Заходим на сервер с ETCD и смотрим какие есть алерты:
etcdctl alarm list
- Смотрим статус всех нод ETCD (адреса и порты меняем на свои):
etcdctl --write-out=table --endpoints=http://192.168.100.62:2379,http://192.168.100.61:2379,http://192.168.100.60:2379 endpoint status
- Здесь нас интересует номер ревизии базы (значение “revision”):
endpoint status -w json
- Делаем снапшот базы ETCD:
etcdutl snapshot status backup.db
- Обрезаем базу — в случае с PostgreSQL будет достаточно хранить последнюю 1000 ревизий, X – число, полученное в п.3:
etcdctl compact (x-1000)
- Выполняем дефраг базы:
etcdctl defrag
- Убеждаемся, что база теперь урезана, а в логах смотрим, что ошибки не возникают:
etcdctl --write-out=table endpoints=http://192.168.100.62:2379,http://192.168.100.61:2379,http://192.168.100.60:2379 endpoint status tail -f /var/log/syslog
- Если ранее ETCD сыпал ошибками, а в 1 шаге был найден алерт, то теперь его необходимо снять:
etcdctl alarm disarm
Настройку и поддержку Patroni PostgreSQL мы осуществляем в рамках DevOps-аутсорсинга!