Spec-Zone.ru › MySQL 5.7

21.5.24.2 Восстановление с другим числом узлов данных

  • 21.5.24.2.1 Восстановление на меньшее число узлов, чем изначальное
  • 21.5.24.2.2 Восстановление на большее число узлов, чем изначальное

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

21.5.24.2.1 Восстановление на меньшее число узлов, чем изначальное

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

  1. Сервер управления исходным кластером находится на хосте host10. Исходный кластер имеет четыре узла данных, с идентификаторами узлов и именами хостов, показанными в следующем фрагменте из файла config.ini сервера управления:

    [ndbd]
    NodeId=2
    HostName=host2
    
    [ndbd]
    NodeId=4
    HostName=host4
    
    [ndbd]
    NodeId=6
    HostName=host6
    
    [ndbd]
    NodeId=8
    HostName=host8
    

    Мы предполагаем, что каждый узел данных изначально был запущен с ndbmtd --ndb-connectstring=host10 или с эквивалентом.

  2. Выполните резервное копирование стандартным способом. См. Раздел 21.6.8.2, «Использование клиента управления кластером NDB для создания резервной копии» для получения информации об этом.

  3. Файлы, созданные резервной копией на каждом узле данных, перечислены здесь, где N — идентификатор узла, а B — идентификатор резервной копии.

    • BACKUP-B-0.N.Data

    • BACKUP-B.N.ctl

    • BACKUP-B.N.log

    Эти файлы находятся в BackupDataDir/BACKUP/BACKUP-B на каждом узле данных. Для остальной части этого примера мы предполагаем, что идентификатор резервной копии равен 1.

    Все эти файлы должны быть доступны для последующей копии на новые узлы данных (где к ним можно получить доступ на локальной файловой системе узла данных с помощью ndb_restore). Проще всего скопировать их все в одно место; мы предполагаем, что вы это сделали.

  4. Сервер управления целевого кластера находится на хосте host20, и у целевого кластера есть два узла данных, с идентификаторами узлов и именами хостов, показанными в файле управления config.ini сервера на host20:

    [ndbd]
    NodeId=3
    hostname=host3
    
    [ndbd]
    NodeId=5
    hostname=host5
    

    Каждый процесс узла данных на host3 и host5 должен быть запущен с ndbmtd -c host20 --initial или эквивалентом, чтобы новый (целевой) кластер запускался с чистыми файловыми системами узлов данных.

  5. Скопируйте две разные наборы из двух файлов резервной копии на каждый из целевых узлов данных. В этом примере скопируйте файлы резервной копии с узлов 2 и 4 из исходного кластера на узел 3 в целевом кластере. Эти файлы перечислены здесь:

    • BACKUP-1-0.2.Data

    • BACKUP-1.2.ctl

    • BACKUP-1.2.log

    • BACKUP-1-0.4.Data

    • BACKUP-1.4.ctl

    • BACKUP-1.4.log

    Затем скопируйте файлы резервной копии с узлов 6 и 8 на узел 5; эти файлы показаны в следующем списке:

    • BACKUP-1-0.6.Data

    • BACKUP-1.6.ctl

    • BACKUP-1.6.log

    • BACKUP-1-0.8.Data

    • BACKUP-1.8.ctl

    • BACKUP-1.8.log

    Для остальной части этого примера мы предполагаем, что соответствующие файлы резервной копии были сохранены в каталоге /BACKUP-1 на каждом из узлов 3 и 5.

  6. На каждом из двух целевых узлов данных необходимо восстановить из обеих наборов резервных копий. Сначала восстановите резервные копии с узлов 2 и 4 на узел 3, вызвав ndb_restore на host3, как показано здесь:

    $> ndb_restore -c host20 --nodeid=2 --backupid=1 --restore-data --backup-path=/BACKUP-1
    
    $> ndb_restore -c host20 --nodeid=4 --backupid=1 --restore-data --backup-path=/BACKUP-1
    

    Затем восстановите резервные копии с узлов 6 и 8 на узел 5, вызвав ndb_restore на host5, так:

    $> ndb_restore -c host20 --nodeid=6 --backupid=1 --restore-data --backup-path=/BACKUP-1
    
    $> ndb_restore -c host20 --nodeid=8 --backupid=1 --restore-data --backup-path=/BACKUP-1
    
21.5.24.2.2 Восстановление на большее число узлов, чем в оригинале

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

Примечание

При изменении общего количества потоков LCP или потоков LQH на узел группы необходимо пересоздать схему из резервной копии, созданной с помощью mysqldump.

  1. Создайте резервную копию данных. Это можно сделать, вызвав клиент ndb_mgm из командной строки следующим образом:

    $> ndb_mgm -e "START BACKUP 1"
    

    Предполагается, что необходимый идентификатор резервной копии — 1.

  2. Создайте резервную копию схемы. В NDB 7.5.2 и более поздних версиях этот шаг необходим только в случае изменения общего количества потоков LCP или LQH на узел группы.

    $> mysqldump --no-data --routines --events --triggers --databases > myschema.sql
    
    Важно

    После создания NDB родной резервной копии с помощью ndb_mgm не следует вносить какие-либо изменения в схему перед созданием резервной копии схемы, если вы этого не сделали.

  3. Скопируйте каталог резервной копии на новый кластер. Например, если резервная копия, которую вы хотите восстановить, имеет ID 1 и BackupDataDir = /backups/node_nodeid, то путь к резервной копии на этом узле — /backups/node_1/BACKUP/BACKUP-1. Внутри этого каталога находятся три файла, перечисленные здесь:

    • BACKUP-1-0.1.Data

    • BACKUP-1.1.ctl

    • BACKUP-1.1.log

    Вы должны скопировать весь каталог на новый узел.

    Если вам потребовался файл схемы, скопируйте его в местоположение на узле SQL, где он может быть прочитан mysqld.

Нет необходимости восстанавливать резервную копию с определённого узла или узлов.

Для восстановления из только что созданной резервной копии выполните следующие шаги:

  1. Восстановите схему.

    • Если вы создали отдельный файл резервной копии схемы с помощью mysqldump, импортируйте этот файл с помощью клиента mysql, аналогично тому, что показано здесь:

      $> mysql < myschema.sql
      

      При импорте файла схемы может потребоваться указать параметры --user и --password (и, возможно, другие), помимо показанных, чтобы клиент mysql смог подключиться к серверу MySQL.

    • Если вам не понадобилось создавать файл схемы, вы можете пересоздать схему, используя ndb_restore --restore-meta (краткая форма -m), аналогично тому, что показано здесь:

      $> ndb_restore --nodeid=1 --backupid=1 --restore-meta --backup-path=/backups/node_1/BACKUP/BACKUP-1
      

      ndb_restore должен иметь возможность связаться с сервером управления; добавьте параметр --ndb-connectstring, если и по мере необходимости, чтобы сделать это возможным.

  2. Восстановите данные. Это необходимо сделать для каждого узла данных в исходном кластере, каждый раз используя идентификатор узла этого узла данных. Предполагая, что изначально было 4 узла данных, набор необходимых команд будет выглядеть примерно так:

    ndb_restore --nodeid=1 --backupid=1 --restore-data --backup-path=/backups/node_1/BACKUP/BACKUP-1 --disable-indexes
    ndb_restore --nodeid=2 --backupid=1 --restore-data --backup-path=/backups/node_2/BACKUP/BACKUP-1 --disable-indexes
    ndb_restore --nodeid=3 --backupid=1 --restore-data --backup-path=/backups/node_3/BACKUP/BACKUP-1 --disable-indexes
    ndb_restore --nodeid=4 --backupid=1 --restore-data --backup-path=/backups/node_4/BACKUP/BACKUP-1 --disable-indexes
    

    Эти команды можно запустить параллельно.

    Убедитесь, что добавили параметр --ndb-connectstring по мере необходимости.

  3. Перестройте индексы. Они были отключены параметром --disable-indexes, используемым в только что показанных командах. Перестройка индексов предотвращает ошибки из-за того, что восстановление не является согласованным во всех точках. Перестройка индексов также может улучшить производительность в некоторых случаях. Для перестройки индексов выполните следующую команду один раз на одном узле:

    $> ndb_restore --nodeid=1 --backupid=1 --backup-path=/backups/node_1/BACKUP/BACKUP-1 --rebuild-indexes
    

    Как упоминалось ранее, вам может потребоваться добавить параметр --ndb-connectstring, чтобы ndb_restore смог связаться с сервером управления.

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/mysql-5.7-en/ndb-restore-different-number-nodes.html

Spec-Zone.ru

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