Я хочу сохранить резервную копию всех моих баз данных MySQL. У меня более 100 баз данных MySQL. Я хочу экспортировать их все одновременно и снова импортировать все на мой сервер MySQL одновременно. Как я могу это сделать?
mysql
database-backups
mysql-backup
Новый пользователь
источник
источник
Другое решение:
Резервное копирование каждой базы данных в отдельный файл
источник
ExcludeDatabases="Database|information_schema|performance_schema|mysql"
[следующая строка]databases=`-u $USER -p$PASWORD -e "SHOW DATABASES;" | tr -d "| " | egrep -v $ExcludeDatabases`
и полностью удалите строкиif
иfi
. В переменнойExcludeDatabases
вы храните имена баз данных, которые не должны сбрасываться [обычно системные базы данных].-Bse "show databases"
чтобы избежать дополнительного форматирования вывода и, следовательно, вы можете удалить| tr -d "| " | grep -v Database
. В моем экспортном скрипте эта строкаdatabases=`mysql -u $USER -p$PASSWORD -Bse "SHOW DATABASES;"
U+200C U+200B
между «c» и «h» слова «схема» . Это нарушает копирование и вставку этого бита. Более подробное обсуждение этого вопроса здесь: meta.stackexchange.com/questions/170970/…Все ответы, которые я вижу на этот вопрос, могут иметь проблемы с наборами символов в некоторых базах данных из-за проблемы перенаправления выхода
mysqldump
в файл в операторе оболочки>
.Чтобы решить эту проблему, вы должны сделать резервную копию с помощью команды, подобной этой
Чтобы сделать хорошее восстановление BD без проблем с наборами символов. Очевидно, вы можете изменить набор символов по умолчанию, как вам нужно.
источник
На основе этих ответов я создал скрипт, который создает резервные копии всех баз данных в отдельные файлы, а затем сжимает их в один архив с именем в качестве даты.
Это не будет запрашивать пароль, может быть использовано в cron. Чтобы сохранить пароль,
.my.cnf
проверьте этот ответ https://serverfault.com/a/143587/62749Сделано также с комментариями для тех, кто не очень знаком с bash-скриптами.
источник
Зачем разбирать форматированный вывод, в то время как команда mysql может делать то, что вы хотите?
Перечисляет имена баз данных и только это.
источник
Будьте осторожны при экспорте и импорте в разные версии MySQL, поскольку таблицы mysql могут иметь разные столбцы. Предоставить привилегии могут не работать, если вам не повезло. Я создал этот скрипт (mysql_export_grants.sql), чтобы выгрузить гранты для импорта в новую базу данных, на всякий случай:
источник
Когда вы сбрасываете всю базу данных. Очевидно, он имеет большие данные. Так что вы можете предпочесть ниже для лучшего:
Создание резервной копии:
Если ошибка
- Предупреждение: пропуск данных таблицы mysql.event. Укажите опцию --events явно.
Использование:
Восстановление резервной копии:
Надеюсь, это поможет :)
источник
Я написал этот комментарий уже более 4-х лет назад и решил сейчас ответить на него.
Скрипт из jruzafa можно немного упростить:
Замечания:
ExcludeDatabases
источник
mysqldump -uroot -proot --all-database> allDB.sql
примечание: -u "ваше имя пользователя" -p "ваш пароль"
источник
Экспортировать все базы данных в Ubuntu
1 -
mysqldump -u root -p --databases database1 database2 > ~/Desktop/databases_1_2.sql
ИЛИ
2 -
mysqldump -u root -p --all_databases > ~/Desktop/all_databases.sql
источник