Snapshot aktuálního stavu v MariaDB

Snapshot aktuálního stavu v MariaDB
« kdy: 26. 11. 2022, 21:50:50 »
Ahojte, na lokálnom stroji mám asi 20GB databázu mariadb a webovú aplikáciu. Robím teraz taký ošemetný import, ktorý zapisuje do veľa tabuliek a potreboval by som skúsiť import, otestovať čo to spravilo, vrátiť zmeny v databáze, upraviť si kód, spustiť import znova... A tak dokola. Import dumpu trvá vyše pol hodiny, takže to je vopruz.

Máte niekto overený spôsob? Virtuálny stroj a snapshot? Docker? Kópia /var/lib/mysql? Niečo lepšie?
« Poslední změna: 26. 11. 2022, 22:03:27 od Petr Krčmář »


Re:Snapshot aktuálního stavu v MariaDB
« Odpověď #1 kdy: 27. 11. 2022, 00:16:10 »
Ak tam mas len DML tak transakcia, do povodneho stavu sa vratis pomocou rollback... ak tam mas DDL tak smola, mysql to nevie...

BoneFlute

  • *****
  • 1 981
    • Zobrazit profil
Re:Snapshot aktuálního stavu v MariaDB
« Odpověď #2 kdy: 27. 11. 2022, 03:35:22 »
na lokálnom stroji mám
...
Kópia /var/lib/mysql?
Toto jsem používal a funguje to celkem dobře. Je to krapet "ošklivé", hrabat marii takhle do střev, ale funkční.

Re:Snapshot aktuálního stavu v MariaDB
« Odpověď #3 kdy: 27. 11. 2022, 07:03:48 »
na lokálnom stroji mám
...
Kópia /var/lib/mysql?
Toto jsem používal a funguje to celkem dobře. Je to krapet "ošklivé", hrabat marii takhle do střev, ale funkční.

Pokud se to udělá při vypnuté databázi, tak by to mělo být úplně v pohodě (pro libovolnou db). Aby se zabránilo kopírování všech dat, lze použít rsync. Jen je potřeba si ověřit, že se kopíruje celá db. V Postgresu se mohou db objekty uložit i do jiných než default adresářů skrze tablespace

Re:Snapshot aktuálního stavu v MariaDB
« Odpověď #4 kdy: 27. 11. 2022, 14:06:01 »
Případně mariabackup (fork xtrabackup od Percony, ten mi funguje velice pěkně). Ale pokud lze DB shodit, je nejjednodušší/nejrychlejší nakopírovat rovnou soubory.


Re:Snapshot aktuálního stavu v MariaDB
« Odpověď #5 kdy: 28. 11. 2022, 10:47:49 »
co tak to ladit na BTRFS snapshotech?

Re:Snapshot aktuálního stavu v MariaDB
« Odpověď #6 kdy: 28. 11. 2022, 11:41:38 »
Dnes som chvíľu skúšal aj btrfs, ale medzitým mi napadlo celkom elegantné riešenie:

Kód: [Vybrat]
docker kill project-mariadb
docker rm project-mariadb
docker volume rm projectdb

cd /var/lib/docker/volumes/
mv _projectdb_copy projectdb

docker stop project-mariadb
docker run -d --restart unless-stopped --name project-mariadb -v projectdb:/var/lib/mysql -p 127.0.0.9:3306:3306 mariadb:10.10
echo "Db is starting. Copying files for the next use:"
cp -ra _project_template _projectdb_copy
« Poslední změna: 28. 11. 2022, 11:50:29 od rooobertek »