Spec-Zone .ru
спецификации, руководства, описания, API

16.1.1.6. Создание Снимка Данных Используя Файлы Необработанных данных

Если Ваша база данных является большой, копируя файлы необработанных данных может быть более эффективным чем использование 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 опция включается.)

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

Чтобы получить большинство непротиворечивых результатов со снимком необработанных данных, завершите работу главного сервера во время процесса, следующим образом:

  1. Получите блокировку чтения и получите состояние ведущего устройства. См. Раздел 16.1.1.4, "Получая Ведущие Двоичные Координаты Журнала Репликации".

  2. В отдельном сеансе, выключенном главный сервер:

    shell> mysqladmin
                        shutdown
  3. Сделайте копию файлов данных MySQL. Следующие примеры показывают распространенные способы сделать это. Вы должны выбрать только одного из них:

    shell> tar cf /tmp/db.tar ./datashell> zip
                        -r /tmp/db.zip ./datashell> rsync --recursive ./data /tmp/dbdata
  4. Перезапустите главный сервер.

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

  1. Получите блокировку чтения и получите состояние ведущего устройства. См. Раздел 16.1.1.4, "Получая Ведущие Двоичные Координаты Журнала Репликации".

  2. Сделайте копию файлов данных MySQL. Следующие примеры показывают распространенные способы сделать это. Вы должны выбрать только одного из них:

    shell> tar cf /tmp/db.tar ./datashell> zip
                        -r /tmp/db.zip ./datashell> rsync --recursive ./data /tmp/dbdata
  3. В клиенте, где Вы получали блокировку чтения, выпустите блокировку:

    mysql> UNLOCK
                        TABLES;

Как только Вы создали архив или копию базы данных, скопируйте файлы в каждое ведомое устройство прежде, чем запустить ведомый процесс репликации.