Недавно я обновил свой промежуточный сервер баз данных с MySQL 5.0.84 до 5.1.72. Я пытаюсь восстановить mysqldump после обновления. Имя базы данных в дампе — gss-app
. Но имя папки базы данных под /var/lib/mysql
оказалось gss@022dapp
, но когда я вхожу в mysql с помощью mysql -u root -p
и набираю, show databases;
он выводит только имя базы данных gss-app
, и я могу Use Database gss-app
и вывести список таблиц с помощью show tables
команды.
Восстановление не удалось из-за ошибки Got a packet bigger than --max_allowed_packet size
. В тот раз база данных была частично восстановлена, и я воспользовался этим шансом, чтобы переименовать папку gss@022dapp
в gss-app
и войти в оболочку mysql.
Он указал имя базы данных как @mysql@gss-app
и я не смог войти в базу данных. Теперь я снова запускаю восстановление базы данных с помощью --max_allowed_packet_size=1024M
и вижу, что gss@022dapp
папка была создана в /var/lib/mysql
.
Стоит ли беспокоиться об имени папки в /var/lib/mysql
? Или можно использовать другое имя базы данных при восстановлении?
решение1
Конкретно по вашему вопросу об использовании другого имени при восстановлении: с mysqldump вы можете сделать либо , mysqldump databasename
либо mysqldump --databases databasename
. Первый вариант не помещает create db
в него оператор, второй — помещает.
Когда вы сделали дамп с помощью первого оператора, вы можете просто вручную создать новую базу данных и загрузить дамп с помощью чего-то вроде mysql newdbname < dump.sql
. В последнем случае вы можете просто открыть свой файл дампа и изменить имя.
Замечание: я думаю, что это плохое решение MySQL, mysqldump
чтобы иметь это различие, BTW. Если вы делаете резервную копию без оператора --databases
, вам сначала нужно создать базу данных, прежде чем вы сможете восстановить ее. И эта база данных может иметь другой набор символов или сортировку, чем те, которые были у изначальной базы данных. По моему мнению, если вы делаете дамп базы данных, она должна содержать все данные и метаданные. То же самое касается необходимости предоставления --routines
и --events
. Я могу представить, что такие опции --no-routines
могут быть полезны, но по умолчаниюнетсброс процедур? Хм.