Я только что услышал о mysqlpump - похоже, он был выпущен с MySQL 5.7, однако MySQL 5.7 все еще включает mysqldump . Они обе программы резервного копирования, но может ли кто-нибудь обобщить основные различия? Существуют ли сценарии, когда один из них может работать лучше? Будет ли поэтапный отказ от mysqldump для mysqlpump?
17
Ответы:
Так как мне довелось исследовать это самостоятельно, вот краткое изложение того, что я нашел.
Согласно сообщению в блоге от команды разработчиков MySQL за 2015 год , основными преимуществами mysqlpump является то, что он может использовать несколько потоков параллельно для ускорения создания дампа, и что он не разделяет требования обратной совместимости mysqldump, что должно открыть дверь для дальнейшего развития. улучшения.
Тем не менее, пост предупреждает, что mysqlpump "в настоящее время небезопасен в качестве замены резервной копии общего назначения", поскольку отдельные потоки могут генерировать свои разделы дампа из разных состояний базы данных. Там не упоминается о каких-либо планах отказаться от mysqldump.
Джузеппе Максия поиграл с mysqlpump в 2015 году и обнаружил, что скорость демпинга довольно мала. Он высоко оценил новую возможность точного выбора объектов для выгрузки, но отметил, что загрузка дампа обратно может быть выполнена только однопоточным и что (в отличие от mysqldump) дампы могут быть загружены обратно только в базы данных с тем же именем.
источник
mysqlpump
это программное обеспечение с закрытым исходным кодом (неопределенное будущее). Альтернативой Open Sourcemysqlpump
является github.com/maxbube/mydumpermydumper
Я также изучал различия между этими двумя утилитами, и в дополнение к тому, что упомянуто в ответе @ Neil , кажется, что mysqlpump также имеет меньше параметров, чем mysqldump , например, не учитывает следующее:
--compatible=
--tab
и связанные с ним варианты:--fields-terminated-by=
--fields-enclosed-by=
--fields-optionally-enclosed-by=
--fields-escaped-by=
--lines-terminated-by=
--quote-names
--add-drop-trigger
--allow-keywords
--apply-slave-statements
--comments
--compact
--compatible
--create-options
--delete-master-logs
--disable-keys
--dump-date
--dump-slave
--enable-cleartext-plugin
--flush-logs
--flush-privileges
--force
--ignore-error
--include-master-host-port
--lock-all-tables
--lock-tables
--master-data
--no-autocommit
--no-tablespaces
--opt
--order-by-primary
--pipe
--quick
--quote-names
--set-gtid-purged
--shared-memory-base-name
--skip-add-drop-table
--skip-add-locks
--skip-comments
--skip-compact
--skip-disable-keys
--skip-extended-insert
--skip-opt
--skip-quick
--skip-quote-names
--skip-triggers
--skip-tz-utc
--verbose
--where
--xml
С другой стороны, mysqlpump имеет следующие параметры, которые недоступны в mysqldump
--compress-output
--default-parallelism
--defer-table-indexes
--exclude-databases=
--exclude-events=
--exclude-routines=
--exclude-triggers=
--exclude-users=
--include-events=
--include-routines=
--include-triggers=
--include-users=
--parallel-schemas=
--skip-definer
--users
--watch-progress
Переименовано или похоже:
--no-data
в дампе ==--skip-dump-rows
в насосе--no-set-names
в дампе не существует в насосе , но его синоним ---skip-set-charset
- существует в обоих--ignore-table=
в дампе, в основном,--exclude-tables=
в pump, за исключением того, что--exclude-tables
может указывать все таблицы, разделенные запятыми, и допускает использование подстановочных знаков (%
и_
)--tables
в дампе находится в основном--include-tables=
в pump, за исключением того, что--include-tables
может указывать все таблицы, разделенные запятыми, и допускает использование подстановочных знаков (%
и_
). Также--tables
переопределяет--databases
в дампе , а--include-tables=
в насосе нет.--databases
как в dump, так и в pump, в основном,--include-databases=
в pump, за исключением того, что--include-databases
можно указать все базы данных, разделенные запятыми, и допускает использование подстановочных знаков (%
и_
).источник
Вот краткое изложение того, что я понял между обоими инструментами резервного копирования.
Определение для mysqldump дано на странице руководства
Mysqldump очень прост в использовании и синтаксис также очень прост. Когда мы выполняем это, он преобразует все строки в запросы SQL и печатает их в стандартном выводе. Мы можем перенаправить этот вывод в outfile (>) или используя опцию - result-file.
По умолчанию mysqldump не создает дамп таблиц information_schema и никогда не использует performance_schema. Основным недостатком mysqldump является то, что он использует только один поток при выполнении резервного копирования и восстановления.
Mysqlpump - это еще одна утилита, которая была представлена в MySQL 5.7 с несколькими дополнительными функциями по сравнению с mysqldump.
Определение для mysqlpump дано на странице руководства
Основные функции
Параллельная обработка (многопоточная) для ускорения резервного копирования
Индикатор прогресса
Сброс учетных записей пользователей как (создание, предоставление операторов не как вставки для базы данных системы MySQL)
По умолчанию mysqlpump не выполняет резервное копирование системных баз данных, таких как информационная схема, схема производительности и некоторые системные таблицы MySQL, если это не указано явно.
Также есть опции –include-database, –exclude-database, –include-table, –exclude-table с сопоставлением с образцом (%).
Эти параметры более удобны для пользователей, которые хотят создавать резервные копии только нескольких объектов из всего набора данных.
В общем, mysqlpump делит свою работу на куски, и каждый из них назначается многопоточной очереди.
Эта многопоточная очередь обрабатывается N потоками (по умолчанию используется 2 потока).
Мы можем определить несколько потоков, используя эту опцию –default -rallelism и –parallel-schemas.
во время восстановления он использует один поток, который совпадает с mysqldump, ему не хватает параллельного восстановления.
В качестве дополнения у нас есть еще один инструмент, который выполняет распараллеливание как при резервном копировании, так и при восстановлении (где отсутствуют mysqlpump и mysqldump), который называется mydumper и myloader . Это будет очень полезно при восстановлении огромных наборов данных.
Вы можете найти более подробную информацию и полезные опции этого инструмента в этом блоге mysqldump vs mysqlpump vs mydumper .
источник