Могу ли я скопировать базу данных MySQL, скопировав файлы? Что конкретно содержат файлы?

Я использую базу данных MySQL и использую машину Ubuntu Linux.

Моя база данных с именем db_test , я замечаю, что в пути /var/lib/mysql/db_test есть суффикс файлов с .frm , .MYD , .MYI например:

 /var/lib/mysql/db_test# ls cars.frm cars.MYD cars.MYI customers.frm customers.MYD customers.MYI departments.frm departments.MYD departments.MYI ... 

Кажется, что каждая группа файлов .frm , .MYD , .MYI сопоставлена ​​с одной таблицей в базе данных.

У меня есть два вопроса:

  1. Что именно делают три файла?

  2. Если я создам новый каталог в каталоге path /var/lib/mysql/ say db_test_2 и db_test_2 каждый файл из db_test_1 в db_test_2 , будет ли он также создавать новую базу данных db_test_2 которая имеет точно такое же содержимое (таблицы), что и db_test_1 ?

Выполняет ли это физическое перемещение файлов базы данных тот же результат, что и следующие действия в командной строке:

  1. db_test_1 базу данных db_test_1 out

  2. создать новую базу данных db_test_2

  3. затем сбрасывать db_test_1 данных db_test_1 обратно в новую базу данных db_test_2 ?

Если это так, кажется, что перемещение файлов происходит намного быстрее, чем с помощью mysqldump для копирования баз данных (или для импорта данных из одного БД в другой БД в MySQL). Любые мнения по этому поводу?

У вас есть инструмент cmd-line, который выполняет именно это: mysqlhotcopy

Он отлично работает с моими таблицами myisam, но не с таблицами InnoDb.

Если вы настроили свой сервер с помощью lvm и поместите свой / var / lib / mysql на выделенный том, так я рекомендую делать резервные копии очень быстро и неблокирующими всеми вашими базами данных:

 mysql -U root -p > flush tables with read lock; 

Это сбрасывает все ваши таблицы на диск и блокирует любую работу r / w

  > system "lvcreate -s -L 1G -n lvMysql_snap /dev/vg_myserver/lv_mysql" ; 

Необходимо адаптироваться к вашей конфигурации, это создает моментальный снимок файловой системы вашей базы данных. Не требуется времени

  > unlock tables; 

Это делается, операция R / W возобновляется.

Теперь вы можете установить / dev / vg_myserver / lvMysql_snap и создать tar-архив своей базы данных!

  1. AFAIR, .frm – описание-файл (где описывается структура таблицы базы данных) .MYD – это файл с данными, .MYI – это файл с индексами.

  2. Да, копирование будет намного быстрее. Но есть одна проблема: это не атомная. При копировании файлов с высокой нагрузкой они будут непоследовательными и, возможно, даже повреждены. Особенно, если вы используете еще один «умный» движок, такой как InnoDB.

Edit: ps Вы можете безопасно скопировать эти файлы, но перед тем, как остановить сервер mysql.