lleo_kaganov (lleo_kaganov) wrote,
lleo_kaganov
lleo_kaganov

Category:

Крах всему: помощь зала

это перепост заметки, оригинал находится на моем сайте: https://lleo.me/dnevnik/2020/06/03

UPD: Всем спасибо за советы, вопрос решен: оказывается, инкрементальный бэкап MySQL MariaDB не будет правильно работать до тех пор, пока базы не перевести из устаревшего формата MyISAM в формат InnoDB. Сделать это по-любому следует, формат устаревший. Перегнать MyISAM в InnoDB можно одной командой «ALTER TABLE `имя таблицы` ENGINE=InnoDB».

БЫЛО:

Вчера лишился всего, шо нажито непосильным трудом — всех своих сайтов и сетевых архивов. Потом все вернулось, но страху натерпелся...

История смешная. Короче, Linux-сервер. Я люблю, чтобы сервер, система и все прочее легко восстанавливаемое говно было где оно само захочет, но вот мои уникальные данные — где я захочу. А именно - в отдельной корневой папке, желательно даже на отдельной партиции. Мои данные уникальны, поэтому должны храниться на самом видном для меня месте. Чтоб если переезд — не бегать их собирать по кусочкам в далеких сраных папках самого разного софта, а взять и перенести. Как-то так.

Однако, nginx и особенно mysql очень не любят, когда их данные хранят не в /home/www, где они привыкли. И симлинк тоже не устраивает капризного mysql. Поэтому единственный способ вынести базы и сайты в корневую папку — это монтировать ее как bind в /home/www Поэтому у меня в fstab всегда было написано: "/home/www /R none bind 0 0" Но вчера я планово обновил систему, перезагрузился — и диск /R исчез! Увидев ПУСТУЮ папку /R, я пришел в неописуемый ужас и час страшно горевал, потому что там было всё: весь lleo.me, весь binoniq.net, все базы, вообще всё! И без бэкапа фактически, ну то есть, с бэкапом, но полугодичной давности. Потом удалось разобраться. Оказалось, "/home/www /R none bind 0 0" конечно монтирует первое во второе, поэтому вместо /R появилась пустая /home/www, а его реальное содержимое стало невидимым. Правильно наоборот: "/R /home/www none bind 0 0" Но блин, остается страшной загадкой, как оно у меня работало все это время — полгода, год? Либо я вписал это в fstab и не перегружал никогда машину (не верится), либо обновился mount, раньше он каким-то образом понимал, что строчка ошибочна, и монтировал как надо, а после обновления перестал... В общем, загадка.

Далее до полуночи я пробовал придумать наконец себе бэкап. Потому что это вообще с моей стороны дикое свинство подвергать опасности не только lleo.me, но и binoniq.net, где пользовательские данные. И оказалось, что с проблемой бэкапа до сих пор в мире всё достаточно тупо. Ну, то есть, файлы-то бэкапить не проблема, есть rsync, например. Но файлы и потерять не проблема, что там за файлы? Код движка — восстанавливается, фотки дневника (по крайней мере, моего) — они тоже копируются в разные места, в альбомы ВКонтактик, например, фотки каждой заметки исправно дублируются. В случае чего из кэшей поисковика собрать можно, у меня когда-то даже был скрипт, который собирал так убитые ЖЖ. Поэтому основная проблема бэкапа — это базы Mysql. Размер баз у меня — несколько гигабайт, и каждый вечер их в бэкап перезаливать на удаленное облако глупо. Особенно если на Яндекс-Диск, он монтируется как davfs2, а это, кто не в курсе, очень тормозная и проблемная штука, чтобы ворочать гигантскими файлами...

Окей, у mariadb есть фича инкрементального бэкапа. То есть, он якобы умеет записывать изменения. Инструкции предлагают сделать первый раз бэкап основной, а следующим шагом писать от него инкрементальный с последними изменениями относительно основного:

=============== cut ===============
mariabackup --backup --target-dir=/B/backup --user=lleo --password=T,fnmNsEvysq

mariabackup --backup --target-dir=/B/inc1/ --incremental-basedir=/B/backup/ --user=lleo --password=T,fnmNsEvysq
=============== /cut ===============

Однако, как я ни бился, итог плачевный - "инкрементальный бэкап" по размерам получается примерно как основной, хотя за эти несколько минут в базах изменений накапливается (в основном, от ваших посещений) на копейку:

=============== cut ===============
/B/backup 2486M

/B/inc1 2279M
=============== /cut ===============

Требуется помощь зала: что я делаю не так с инкрементальным бэкапом MariaDB? Как вы бэкапите базы?

PS: Видимо я не очень хорошо объяснил, уточню: бэкап файлов не является проблемой и софт по бэкапу файлов мне не нужен. Файлы (по сути - фотки) добавляются относительно редко, никогда потом не меняются, и они небольшие. То есть, нет никаких проблем с их бэкапом. Проблемой является именно бэкап баз MySQL MariaDB, потому что каждый чих на сайте приводит к изменению в гигабайтных файлах. С точки зрения софтинки, умеющей бэкапить файлы, когда кто-то на сайте поставил вашему комменту плюсик, то гигабайтный файл всех комментариев за последние 20 лет стал другим, и его надо срочно бежать перезаливать взамен старого. А это не дело.



это перепост заметки, оригинал находится на моем сайте: https://lleo.me/dnevnik/2020/06/03
Subscribe

  • Post a new comment

    Error

    default userpic

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 1 comment