Назад | Перейти на главную страницу

Перенос баз данных MySQL вручную

У меня есть внешний жесткий диск, на котором есть незагрузочный клон старой машины (которой у меня больше нет). Одной из вещей, которые присутствовали на этой машине, была установка MySQL (v 5.5.19) с несколькими базами данных, которые я хотел бы сохранить.

Я покопался и обнаружил, что есть {root}/usr/local/mysql/data каталог, который содержит подкаталоги, которые кажутся соответствующими базам данных, которые я хотел бы сохранить.

Я скопировал один из этих каталогов на свой основной компьютер (также работающий с MySQL 5.5.19) и получил все права доступа к файлам и права собственности, настроенные правильно (_mysql:wheel, 0660 в файлах .frm и т. д.).

Когда я сейчас вхожу в PHPMyAdmin, я вижу базу данных, указанную слева, с правильным количеством таблиц в скобках. Однако, когда я пытаюсь подключиться к этой базе данных, он сообщает, что в базе данных нет таблиц.

Очевидно, я что-то упустил. Что я пропустил, и есть ли другой способ сделать это проще? Могу ли я, возможно, изменить множество файлов .cnf, чтобы они указывали на файлы MySQL на моем внешнем жестком диске, а затем использовать mysqldump на тех? Какие файлы мне нужно будет изменить?

Я понял!

Для потомков вот что я сделал:

  1. Я убил сервер MySQL
  2. Я скопировал /usr/local/mysql/support-files/my-small.cnf к /etc/my.cnf
  3. я открыл my.cnf и добавил эту строку в [mysqld] раздел:

    # point the datadir to the old stuff on the external hard drive
    datadir = /Volumes/Clone/usr/local/mysql/data
    
  4. Я сохранил и закрыл my.conf
  5. Я перезапустил сервер MySQL. На панели MySQL в Системных настройках было предупреждение о том, что «/ Volumes / Clone / usr / local / mysql / data» не имеет надлежащего владельца, но я решил, что это можно игнорировать. Также обнадежило то, что MySQL искал данные в нужном месте.
  6. Я открыл PHPMyAdmin и вошел в систему.
  7. Я экспортировал базы данных, о которых я заботился, как файлы .sql.gz
  8. Я повторно убил сервер MySQL и удалил /etc/my.cnf файл
  9. Я перезапустил сервер MySQL и вошел в PHPMyAdmin
  10. Я импортировал свои базы данных, и все в порядке!

Первое, что вам следует сделать, это следующее:

chown -R mysql:mysql /usr/local/mysql/data

Вы должны узнать, насколько велики файлы InnoDB

  • ibdata1
  • ib_logfile0
  • ib_logfile1

Если ibdata1 <20M, а ib_logfile0 = 5M, тогда mysql работал без my.cnf. Вы должны иметь возможность запустить mysql. Если они разного размера, вам нужно создать my.cnf со следующими

[mysqld]
innodb_log_file_size=???? (file of ib_logfile0 in M)

Я надеюсь это хорошее начало