Как вывести инстанс из read-only
Инстанс переходит в режим read-only при заполнении хранилища на 95%. При этом для всех баз данных через запрос ALTER DATABASE выставляется настройка DEFAULT_TRANSACTION_READ_ONLY = TRUE. В этом режиме запросы на вставку (INSERT), удаление (DELETE) или обновление (UPDATE) данных завершаются ошибкой.
Есть два способа вывести инстанс из режима read-only:
-
Режим read-only выключится автоматически в течение минуты после увеличения размера хранилища.
Как почистить базу данных при переходе инстанса в read-only
Ниже описаны действия, которые отключают предохранительный механизм инстанса. Если в процессе выполнения дальнейшей процедуры дисковое пространство снизится до нуля, PostgreSQL аварийно завершит работу, а инстанс станет неработоспособным.
Выполняйте эти действия, только если вы действительно понимаете, что происходит.
-
Подключитесь к базе данных любым удобным способом.
-
Откройте транзакцию и выполните в ней команду:
SET LOCAL transaction_read_only TO off; -
В рамках этой же транзакции удалите ненужные данные с помощью операторов
DROPилиTRUNCATE.ВниманиеЗапрещается использовать оператор
DELETE!Данный оператор отмечает строки как удаленные, но не удаляет их из базы физически. При этом занимаемое место увеличивается. Это самый верный способ доломать инстанс.
-
Зафиксируйте транзакцию и перезапустите все подключения к базе.
После освобождения места на диске, режим read-only будет выключен для всех новых транзакций в течение минуты.
Например, база данных содержит ненужную таблицу ExcessDataTable1. Чтобы удалить ее, выполните следующие команды:
BEGIN;
SET LOCAL transaction_read_only TO off;
DROP TABLE ExcessDataTable1;
COMMIT;