Spec-Zone.ru › MySQL 5.7

16.1.2.4 Выбор метода для создания моментальных снимков данных

  • 16.1.2.4.1 Создание моментального снимка данных с помощью mysqldump
  • 16.1.2.4.2 Создание моментального снимка данных с помощью файлов ссылок

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

Для выбора подходящего метода выгрузки базы данных выберите один из этих вариантов:

  • Используйте инструмент mysqldump для создания дампа всех баз данных, которые вы хотите реплицировать. Это рекомендуемый метод, особенно при использовании InnoDB.

  • Если ваша база данных хранится в двоичных портативных файлах, вы можете скопировать исходные файлы данных на репликатор. Это может быть более эффективным, чем использование mysqldump и импорт файла на каждом репликаторе, поскольку это пропускает накладные расходы на обновление индексов, поскольку INSERT-запросы повторно воспроизводятся. С такими механизмами хранения, как InnoDB, это не рекомендуется.

16.1.2.4.1 Создание моментального снимка данных с помощью mysqldump

Для создания моментального снимка данных в существующем источнике используйте инструмент mysqldump. После завершения выгрузки данных импортируйте эти данные в репликатор перед запуском процесса репликации.

Следующий пример делает дамп всех баз данных в файл с именем dbdump.db и включает параметр --master-data, который автоматически добавляет инструкцию CHANGE MASTER TO, необходимую на репликаторе для запуска процесса репликации:

$> mysqldump --all-databases --master-data > dbdump.db
Примечание

Если вы не используете --master-data, то необходимо заблокировать все таблицы в отдельной сессии вручную. См. Раздел 16.1.2.3, «Получение координат двоичного журнала источника репликации».

Можно исключить определенные базы данных из выгрузки с помощью инструмента mysqldump. Если вы хотите выбрать, какие базы данных включить в дамп, не используйте --all-databases. Выберите один из этих вариантов:

  • Исключите все таблицы в базе данных, используя параметр --ignore-table.

  • Укажите только те базы данных, которые должны быть включены в дамп, используя параметр --databases.

Дополнительную информацию см. в Разделе 4.5.4, «mysqldump — Программа резервного копирования базы данных».

Для импорта данных скопируйте файл дампа на репликатор или получите доступ к файлу из источника при удалённом подключении к репликатору.

16.1.2.4.2 Создание моментального снимка данных с помощью файлов ссылок

Этот раздел описывает, как создать моментальный снимок данных, используя файлы, из которых состоит база данных. Применение этого метода к таблице с механизмом хранения, имеющим сложные алгоритмы кэширования или ведения журнала, требует дополнительных шагов для получения идеального моментального снимка «в момент времени»: начальная команда копирования может пропустить информацию из кэша и обновленные записи журнала, даже если вы получили глобальную блокировку на чтение. Как механизм хранения реагирует на это, зависит от его возможностей восстановления после сбоя.

Если вы используете таблицы InnoDB, вы можете использовать команду mysqlbackup из компонента MySQL Enterprise Backup для создания согласованного моментального снимка. Эта команда записывает имя и смещение журнала, соответствующие снимку, который будет использоваться на репликаторе. MySQL Enterprise Backup — это коммерческий продукт, включённый в подписку MySQL Enterprise. Подробную информацию см. в Разделе 28.1, «Обзор MySQL Enterprise Backup».

Этот метод также не работает надёжно, если у источника и реплики разные значения для ft_stopword_file, ft_min_word_len или ft_max_word_len, и вы копируете таблицы с полными текстовыми индексами.

Предполагая, что вышеупомянутые исключения не относятся к вашей базе данных, воспользуйтесь техникой получения надёжного двоичного моментального снимка InnoDB таблиц: выполните остановку MySQL Сервера, а затем скопируйте файлы данных вручную.

Для создания моментального снимка сырых данных таблиц MyISAM, когда файлы данных MySQL находятся на одном файловой системе, вы можете использовать стандартные инструменты копирования файлов, такие как cp или copy, инструмент удалённого копирования, такой как scp или rsync, инструмент архивирования, такой как zip или tar, или инструмент создания моментального снимка файловой системы, такой как dump. Если вы реплицируете только определённые базы данных, копируйте только те файлы, которые относятся к этим таблицам. Для InnoDB все таблицы во всех базах данных хранятся в этих файлах, если не включён параметр innodb_file_per_table.

Для репликации не требуются следующие файлы:

  • Файлы, относящиеся к базе данных mysql.

  • Файл репозитория метаданных подключения репликации, если он используется (см. Раздел 16.2.4, «Журнал реле и репозитории метаданных репликации»).

  • Файлы двоичного журнала источника, за исключением файла индекса двоичного журнала, если вы собираетесь использовать его для определения координат двоичного журнала источника для репликации.

  • Любые файлы журнала реле.

В зависимости от того, используете ли вы InnoDB таблицы или нет, выберите один из следующих вариантов:

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

  1. Получите блокировку на чтение и получите статус источника. См. Раздел 16.1.2.3, «Получение координат двоичного журнала источника репликации».

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

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

    $> tar cf /tmp/db.tar ./data
    $> zip -r /tmp/db.zip ./data
    $> rsync --recursive ./data /tmp/dbdata
    
  4. Перезапустите сервер источника.

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

  1. Получите блокировку на чтение и получите статус источника. См. Раздел 16.1.2.3, «Получение координат двоичного журнала источника репликации».

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

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

    mysql> UNLOCK TABLES;
    

После создания архива или копии базы данных скопируйте файлы на каждый репликатор перед запуском процесса репликации.

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/mysql-5.7-en/replication-snapshot-method.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API