Стратегия за mysqldump?

azsym

New member
Имам една БД с 4 таблици - 3 мнооого малки и една огромна.
В огромната има колона където всичко = 0 с изключение на 2-3 реда, където е > 0.
Въпроса е как да дъмпна БД така че всичко от малките таблици да е архивирано но от голямата да е само където колоната има > 0.

Иначе архива идва към 50 мб, а ще се архивира към 3-4 пъти на ден.
 
Re: Стратегия за mysqldump?

Имам една БД с 4 таблици - 3 мнооого малки и една огромна.
В огромната има колона където всичко = 0 с изключение на 2-3 реда, където е > 0.
Въпроса е как да дъмпна БД така че всичко от малките таблици да е архивирано но от голямата да е само където колоната има > 0.

Иначе архива идва към 50 мб, а ще се архивира към 3-4 пъти на ден.
Прехвърляш според критерия във временна таблица и след това архивираш нея. Или разделяш данните направо в две таблици, ако се ползват в различни случаи.
 
Re: Стратегия за mysqldump?

В phpmyadmin освен, че можеш да дъмпваш отделни таблици можеш да го правиш и за отделни редове. Правиш SELECT FROM голяма таблица WHERE поле>0, маркираш резултатите (редове) с checkbox и долу под таблицата с резултатите имаш бутон "export".
 
Re: Стратегия за mysqldump?

Прехвърляш според критерия във временна таблица и след това архивираш нея. Или разделяш данните направо в две таблици, ако се ползват в различни случаи.

това с деленето е лесно. но ако го направя ще има още една малка таблица. после с дъмп как да му кажа да архивира само малките таблици и да не пипа голямата.
 
Re: Стратегия за mysqldump?

http://linuxcommand.org/man_pages/mysqldump1.html

Като гледам можеш да си добавиш where condition, така че да си дъмпнеш само нужните редове.
Не съм го пробвал, но аз бих го направил така:
mysqldump -u user -ppassword db table1 >> date-mydatabase.sql
mysqldump -u user -ppassword db table2 >> date-mydatabase.sql
mysqldump -u user -ppassword db table3 [ТУК ДОБАВЯШ where] >> date-mydatabase.sql

За синтаксиса разгледай как е точно и ще стане, че го пиша малко на сляпо.
А двете > са за да запази предишния текст във файла.

ps - http://www.linuxquestions.org/questions/linux-newbie-8/mysqldump-where-condition-682407/
 
Re: Стратегия за mysqldump?

Опа! изпреварили са ме.
Здравей,
Може да има и по-интелигентно решение 🙂
1) дъмпваш малките таблици
Код:
mysqldump --user=user --password=pass --database test --table smallTamle1 smallTable2 > dump.sql
2) след това голямата с условието
Код:
mysqldump --user=user --password=pass --database test --table largeTable --opt --where="largeTable.field > 0"  >> dump.sql
Поздрави.
 
Последно редактирано:
Re: Стратегия за mysqldump?

Опа! изпреварили са ме.
Ама твоя пример поне е правилен. 😀
Не знаех, че могат да се изброяват таблици.. значи точно с 2 реда, както си го дал, ще стане перфе. 🙂
 

Back
Горе