Spec-Zone .ru
спецификации, руководства, описания, API
|
Если Ваша база данных является большой, копируя файлы необработанных данных может быть более эффективным чем
использование mysqldump и импорт файла на каждом ведомом устройстве. Эти
пропуски метода издержки обновления индексируют как INSERT
операторы
воспроизводятся.
Используя этот метод с таблицами в механизмах хранения с комплексом кэширующиеся или регистрирующие алгоритмы требует, чтобы дополнительные шаги произвели совершенный снимок "момента времени": начальная команда копии могла бы не учесть информацию о кэше и регистрирующие обновления, даже если Вы получили глобальную блокировку чтения. Как механизм хранения отвечает, это зависит от его возможностей восстановления катастрофического отказа.
Этот метод также не работает достоверно, если у ведущего устройства и ведомого устройства есть различные
значения для ft_stopword_file
,
ft_min_word_len
, или ft_max_word_len
и Вы копируете таблицы, имеющие полнотекстовый, индексирует.
Если Вы используете InnoDB
таблицы,
можно использовать mysqlbackup команду от Резервного компонента
MySQL Enterprise, чтобы произвести непротиворечивый снимок. Эта команда записывает имя журнала и смещение,
соответствующее снимку, который будет позже использоваться на ведомом устройстве. Резервное копирование MySQL
Enterprise является коммерческим продуктом, который включается как часть подписки MySQL Enterprise. См. Раздел
24.2, "Резервное копирование MySQL Enterprise" для получения дальнейшей информации.
Иначе, используйте холодный
резервный метод, чтобы получить надежный двоичный снимок InnoDB
таблицы:
скопируйте все файлы данных после выполнения медленного завершения работы MySQL
Server.
Создать снимок необработанных данных MyISAM
таблицы, можно использовать стандартные
инструменты копии, такие как cp или копия,
удаленный инструмент копии, такие как scp или rsync, инструмент архивирования, такие как zip или tar, или
инструмент снимка файловой системы, такие как дамп, если тот Ваш
MySQL файлы данных существует на единственной файловой системе. Если Вы тиражируете только определенные базы
данных, копируете только те файлы, которые касаются тех таблиц. (Для InnoDB
, все
таблицы во всех базах данных сохранены в системных файлах табличной
области, если Вы не имеете innodb_file_per_table
опция включается.)
Вы могли бы хотеть определенно исключить следующие файлы из своего архива:
Файлы, касающиеся mysql
база данных.
Основной файл репозитария информации, если использующийся (см. Раздел 16.2.2, "Реле репликации и Журналы Состояния").
Двоичные файлы журнала ведущего устройства.
Любые релейные файлы журнала.
Чтобы получить большинство непротиворечивых результатов со снимком необработанных данных, завершите работу главного сервера во время процесса, следующим образом:
Получите блокировку чтения и получите состояние ведущего устройства. См. Раздел 16.1.1.4, "Получая Ведущие Двоичные Координаты Журнала Репликации".
В отдельном сеансе, выключенном главный сервер:
shell> mysqladmin
shutdown
Сделайте копию файлов данных MySQL. Следующие примеры показывают распространенные способы сделать это. Вы должны выбрать только одного из них:
shell>tar cf
shell>/tmp/db.tar
./data
zip -r
shell>/tmp/db.zip
./data
rsync --recursive
./data
/tmp/dbdata
Перезапустите главный сервер.
Если Вы не используете InnoDB
таблицы, можно получить снимок системы от ведущего
устройства, не завершая работу сервера как описано в следующих шагах:
Получите блокировку чтения и получите состояние ведущего устройства. См. Раздел 16.1.1.4, "Получая Ведущие Двоичные Координаты Журнала Репликации".
Сделайте копию файлов данных MySQL. Следующие примеры показывают распространенные способы сделать это. Вы должны выбрать только одного из них:
shell>tar cf
shell>/tmp/db.tar
./data
zip -r
shell>/tmp/db.zip
./data
rsync --recursive
./data
/tmp/dbdata
В клиенте, где Вы получали блокировку чтения, выпустите блокировку:
mysql> UNLOCK
TABLES;
Как только Вы создали архив или копию базы данных, скопируйте файлы в каждое ведомое устройство прежде, чем запустить ведомый процесс репликации.