Skip to main content

Как вывести инстанс из read-only

Инстанс переходит в режим read-only при заполнении хранилища на 95%. При этом для всех баз данных через запрос ALTER DATABASE выставляется настройка DEFAULT_TRANSACTION_READ_ONLY = TRUE. В этом режиме запросы на вставку (INSERT), удаление (DELETE) или обновление (UPDATE) данных завершаются ошибкой.

Есть два способа вывести инстанс из режима read-only:

Как почистить базу данных при переходе инстанса в read-only

Внимание

Ниже описаны действия, которые отключают предохранительный механизм инстанса. Если в процессе выполнения дальнейшей процедуры дисковое пространство снизится до нуля, PostgreSQL аварийно завершит работу, а инстанс станет неработоспособным.

Выполняйте эти действия, только если вы действительно понимаете, что происходит.

  1. Подключитесь к базе данных любым удобным способом.

  2. Откройте транзакцию и выполните в ней команду:

    SET LOCAL transaction_read_only TO off;
  3. В рамках этой же транзакции удалите ненужные данные с помощью операторов DROP или TRUNCATE.

    Внимание

    Запрещается использовать оператор DELETE!

    Данный оператор отмечает строки как удаленные, но не удаляет их из базы физически. При этом занимаемое место увеличивается. Это самый верный способ доломать инстанс.

  4. Зафиксируйте транзакцию и перезапустите все подключения к базе.

После освобождения места на диске, режим read-only будет выключен для всех новых транзакций в течение минуты.

Например, база данных содержит ненужную таблицу ExcessDataTable1. Чтобы удалить ее, выполните следующие команды:

BEGIN;
SET LOCAL transaction_read_only TO off;
DROP TABLE ExcessDataTable1;
COMMIT;