Подтвердить что ты не робот

Есть ли формат дампа MySql? Или что-нибудь лучше, чем простые текстовые инструкции INSERT?

Есть ли что-нибудь лучше (быстрее или меньше), чем страницы простых текстовых операторов CREATE TABLE и INSERT для сброса баз данных MySql? Это кажется ужасно неэффективным для больших объемов данных.

Я понимаю, что файлы базы данных могут быть скопированы, но я предполагаю, что они будут работать только в той же версии MySql, из которой они происходят.

Есть ли инструмент, о котором я не знаю, или причина этого недостатка?

4b9b3361

Ответ 1

Не уверен, что это то, что вам нужно, но я обычно передаю вывод mysqldump непосредственно в gzip или bzip2 (и т.д.). Это, как правило, значительно быстрее, чем сбрасывание на stdout или что-то в этом роде, а выходные файлы намного меньше благодаря сжатию.

mysqldump --all-databases (other options) | gzip > mysql_dump-2010-09-23.sql.gz

Также возможно сбрасывать XML с помощью параметра --xml, если вы ищете "переносимость" за счет потребления (намного большего) дискового пространства, чем gzipped SQL...

Ответ 2

Извините, нет двоичного дампа для MySQL. Однако двоичные журналы MySQL специально предназначены для резервного копирования и репликации базы данных http://dev.mysql.com/doc/refman/5.5/en/binary-log.html. Их нетрудно настроить. Записываются только такие изменения, как обновление и удаление, поэтому каждый файл журнала (автоматически созданный MySQL) также является инкрементным резервным копированием изменений в БД. Таким образом, вы можете время от времени сохранять весь снимок db (один раз в месяц?), А затем хранить только файлы журнала, а в случае сбоя восстанавливать последний моментальный снимок и запускать журналы.

Ответ 3

Стоит отметить, что MySQL имеет специальный синтаксис для выполнения объемных вставок. Из руководство:

INSERT INTO tbl_name (a,b,c) VALUES(1,2,3),(4,5,6),(7,8,9);

Вставим 3 строки за одну операцию. Таким образом, загрузка этого способа не так неэффективна, как в противном случае она может быть с одним выражением для каждой строки, а вместо 129 байтов в 3 операторах INSERT это 59 байт, и это преимущество только увеличивается, чем больше у вас строк.

Ответ 4

Я никогда не пробовал это, но не таблицы mysql только двоичные файлы на жестком диске? Не могли бы вы просто скопировать файлы таблицы сами? Предположительно, это то, о чем вы просите.

Я не знаю, как сшить это вместе, но мне кажется, что копия /var/lib/mysql сделала бы трюк