Безопасно ли делать резервные копии томов данных работающего контейнера mariadb / postgres / mysql? Следует ли останавливать контейнер перед резервным копированием томов?
Не обошлось и без дополнительных шагов.
Файлы на диске, скорее всего, будут внутренне несовместимыми, поэтому их моментальный снимок должен будет пройти процесс восстановления, который (в идеале) откатит любые незафиксированные транзакции и вернет вас в согласованное состояние. Однако это будет работать только с атомарно созданными снимками, так как эта ситуация в основном эквивалентна потере питания в середине транзакции.
В Обзор резервного копирования и восстановления страница предлагает либо создать логическую резервную копию с помощью mysqldump
, или временно заморозить все таблицы (FLUSH TABLES WITH READ LOCK
) и сделать снимок. Обратите внимание, что это останавливает все транзакции изменения до тех пор, пока клиент не отключится или UNLOCK TABLES
выполняется, поэтому в идеале механизм моментальных снимков должен быть быстрым (например, моментальный снимок LVM или ZFS).