2.5.6 Модернизация к иной архитектуре
При использовании MySQL 3.23 можно копировать файлы `.frm', `.MYI' и
`.MYD' между различными архитектурами, поддерживающими одинаковый формат
чисел с плавающей точкой (все проблемы, связанные с перестановкой байтов,
берет на себя MySQL).
Имеющиеся в MySQL файлы данных и индексные файлы типа ISAM
(`.ISD' и
`*.ISM' соответственно) являются архитектурно-независимыми, а в ряде
случаев - зависимыми от операционной системы. Для переноса приложений на
компьютер с архитектурой или операционной системой, которые отличаются от
используемых на исходном компьютере, не следует пытаться перенести базу
данных путем простого копирования файлов на другой компьютер. Используйте
вместо этого mysqldump
.
По умолчанию mysqldump
создаст файл со всеми командами SQL. После этого
данный файл можно перенести на другой компьютер и подать его на вход
клиента mysql
.
Используя mysqldump --help
, просмотрите все доступные опции. При
перемещении данных на более новую версию MySQL следует применять mysqldump
--opt
более новой версии, чтобы получить быструю и компактную копию.
Самый простой (хотя и не самый быстрый) способ перемещения базы данных с
компьютера на компьютер - запустить на компьютере, где размещается
исходная база данных, следующие команды:
shell> mysqladmin -h 'other hostname' create db_name
shell> mysqldump --opt db_name \
| mysql -h 'other hostname' db_name
Если вы хотите скопировать базу данных с удаленного компьютера через
медленную сеть, то можно использовать:
shell> mysqladmin create db_name
shell> mysqldump -h 'other hostname' --opt --compress db_name \
| mysql db_name
Можно также сохранять результат в файле, затем передавать этот файл на
требуемый компьютер и загружать этот файл в расположенную там базу данных.
Например, можно скопировать базу данных в файл на исходном компьютере как
показано ниже:
shell> mysqldump --quick db_name | gzip > db_name.contents.gz
(Созданный в данном примере файл сжимается). Передайте этот файл с
содержимым базы данных на требуемый компьютер и запустите там эти команды:
shell> mysqladmin create db_name
shell> gunzip < db_name.contents.gz | mysql db_name
Для выполнения передачи базы данных можно также использовать mysqldump
и
mysqlimport
. В случае больших таблиц это намного более быстрый способ, чем
простое применение mysqldump
. В следующих командах DUMPDIR
представляет
собой полный путь к каталогу, используемому для хранения вывода из
mysqldump
.
Во-первых, создайте каталог для файлов вывода и дампа базы данных:
shell> mkdir DUMPDIR
shell> mysqldump --tab=DUMPDIR db_name
Затем передайте эти файлы в каталог DUMPDIR
некоторого соответствующего
каталога на требуемом компьютере и загрузите там данные файлы в MySQL:
shell> mysqladmin create db_name # создание базы данных
shell> cat DUMPDIR/*.sql | mysql db_name # создание таблиц в базе данных
shell> mysqlimport db_name DUMPDIR/*.txt # загрузка данных в таблицы
Помимо этого, не забудьте скопировать базу данных mysql
, поскольку в ней
хранятся таблицы привилегий (user
, db
, host
). Возможно, на новом
компьютере будет нужно запустить команды в качестве пользователя root
MySQL, пока база данных mysql
не займет свое место.
После импорта базы данных mysql
на новый компьютер выполните mysqladmin
flush-privileges
, чтобы сервер перезагрузил информацию в таблицах
привилегий.