Что такое репликация MySQL?

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

Предварительные требования

Этот снимок предполагает следующее:

  • У пользователя есть привилегии sudo
  • MySQL установлен на машине
  • Два сервера (главный и подчиненный) установлены и работают на двух разных IP-адресах

Настройка главной базы данных

Сначала нам нужно открыть загрузите файл конфигурации MySQL на главном сервере, используя следующую команду на терминале:

  sudo nano/etc/mysql/mysql.conf.d/mysqld  .cnf  

Вам будет предложено ввести пароль root перед открытием файла конфигурации. Прокрутите вниз, пока не дойдете до следующей строки:

  bind-address = 127.0.0.1  

Здесь измените стандартный IP-адрес на IP-адрес главного сервера.
Затем перейдите к файлу конфигурации и убедитесь, что следующие строки не закомментированы:

  server-id = 1log_bin =/var/log/mysql/mysql-bin.logbinlog_do_db = include_database_name  

Вы можете выбрать идентификатор сервера, отличный от 1, если выбранный идентификатор уникален и не соответствует никакому другому идентификатору сервера в группе репликации. Замените include_database_name любой базой данных, которую вы хотите реплицировать на подчиненном сервере. В нашем примере давайте использовать базу данных с именем repl_database . Если вы хотите реплицировать более одной базы данных, повторите строку binlog_do_db = include_database_name для всех нужных вам баз данных. Теперь мы закончили вносить изменения в файл конфигурации, поэтому мы сохраним и выйдите из файла перед обновлением MySQL с помощью следующей команды:

  sudo service mysql restart  

Следующие команды будет весело на оболочке MySQL. Мы запустим оболочку с помощью следующей команды:

  mysql -u root -p  

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

  GRANT REPLICATION SLAVE ON *. * TO 'slave_user' @ '%' IDENTIFIED  BY 'password';  

Команда будет следовать за этим:

  FLUSH PRIVILEGES;  

Для следующих нескольких шагов нам нужно будет открыть новое окно или вкладку вместе с уже запущенными. На этой новой вкладке мы запустим следующие команды MySQL:

  USE repl_database; FLUSH TABLES WITH READ LOCK; SHOW MASTER STATUS;  

Приведенная выше команда SHOW MASTER STATUS; отобразит таблицу, показывающую положение базы данных, из которой ведомое устройство будет копировать. Откройте новое окно еще раз и введите следующую команду в терминале, чтобы экспортируйте свою базу данных:

  mysqldump -u root -p --opt repl_database> repl_database.sql  

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

  РАЗБЛОКИРОВАТЬ ТАБЛИЦЫ; ВЫЙТИ;  

Настройка подчиненной базы данных

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

  mysql -u  root -pCREATE DATABASE repl_database; EXIT;  

Затем мы хотим импортировать базу данных, которую мастер экспортировал с помощью команды:

   mysql -u root -p repl_database /to/repl_database.sql  

Теперь мы можем настроить подчиненный сервер аналогично тому, как мы настроили владелец. Мы снова откроем файл конфигурации с помощью:

  sudo nano/etc/mysql/mysql.conf.d/mysqld.cnf

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

  server-id = 2relay-log =/var/log/mysql/mysql-relay-  bin.loglog_bin =/var/log/mysql/mysql-bin.logbinlog_do_db = repl_database  

Мы снова перезапустим MySQL:

  sudo service mysql restart  

Теперь мы можем включить репликацию с помощью оболочки MySQL. Запустите оболочку с помощью mysql -u root -p и введите следующую команду, заменив поля в звездочках соответствующими данными в строковой форме:

  ИЗМЕНИТЬ МАСТЕРА НА MASTER_HOST = * Ваш главный IP-адрес *, MASTER_USER = * Ваш главный пользователь *, MASTER_PASSWORD = * Ваш главный пароль *, MASTER_LOG_FILE = 'mysql-bin. 000001 ', MASTER_LOG_POS = 107;  

Наконец, мы можем активировать подчиненный сервер и просмотреть детали репликации с помощью команд:

  START SLAVE; SHOW SLAVE STATUS  G  

В случае возникновения проблемы попробуйте:

  SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1  ;  ПОДЧИНЕННЫЙ СТАРТ;   

Теперь вы успешно реплицировали данные из главной базы данных MySQL в подчиненную базу данных!

Оцените статью
nanomode.ru
Добавить комментарий