На этом уроке мы покажем вам, как настроить основную репликацию MySQL на двух серверах CentOS 7, но те же самые шаги должны работать на всех системах на основе RPM. Мы будем использовать два тестовых CentOS 7 виртуальных сервера для этого урока со следующими IP – адресами:
MASTER: 192.168.1.2 SLAVE: 192.168.1.3
Мастер-сервер:
Вход на мастер-сервер в качестве пользователя root
ssh root@IP_Address
и установить сервер MySQL, если он еще не установлен
yum install mysql-server mysql
Запустите сервер MySQL и добавьте его в автозагрузку
systemctl start mysql systemctl enable mysql
Затем откройте файл конфигурации MySQL с помощью текстового редактора и добавьте следующие строки в файл
vi /etc/my.cnf
server-id = 1 binlog-do-db=database relay-log = mysql-relay-bin relay-log-index = mysql-relay-bin.index log-bin = mysql-bin
Не забудьте заменить ” database” на фактическое имя базы данных, которую вы хотите скопировать на подчиненный сервер.
Сохраните файл конфигурации и перезапустите сервер MySQL для того, чтобы изменения вступили в силу
systemctl restart mysql
Войдите на сервер MySQL в качестве пользователя root и создайте пользователя, который будет использоваться ведомым сервером
mysql -u root -p
mysql> GRANT REPLICATION SLAVE ON *.* TO 'slaveuser'@'%' IDENTIFIED BY 'PASSWORD' mysql> FLUSH PRIVILEGES; mysql> FLUSH TABLES WITH READ LOCK; mysql> SHOW MASTER STATUS; mysql> SHOW MASTER STATUS; +------------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +------------------+----------+--------------+------------------+ | mysql-bin.000001 | 245 | database | | +------------------+----------+--------------+------------------+ 1 row in set (0.00 sec) mysql> exit
Нам потребуются координаты master, которые собираются использовать для подчиненного сервера, поэтому запишите их.
Файл: MySQL-bin.000001 Позиция: 245
Заменить ‘ PASSWORD ‘ с фактическим сильным паролем.
Теперь, если база данных, которую вы хотите перенести, является не пустой, создайте дамп из базы данных
mysqldump -u root -p --master-data database > /root/database.sql
и передайте файл дампа подчиненному серверу
rsync -Waq -e ssh /root/database.sql 192.168.1.3:/root
Подчиненный сервер:
Следующий шаг заключается в настройке подчиненного сервера. Вход на подчиненный сервер через SSH в качестве пользователя root и установите сервер MySQL, как мы делали на главном сервере.
После установки и запуска сервера MySQL, откройте конфигурационный файл и добавьте следующие строки:
vi /etc/my.cnf
server-id = 2 master-host=191.168.1.2 master-connect-retry=60 master-user=slaveuser master-password=PASSWORD replicate-do-db=database relay-log = mysql-relay-bin log-bin = mysql-bin
Сохраните файл и перезапустите сервер MySQL после изменения, чтобы настройки обновились.
systemctl restart mysql
Импортируйте файл дампа MySQL, который мы создали на главном сервере
mysql -u root -p < /root/database.sql
Вход в MySQL как пользователь root, остановить slave и настройте его
mysql -u root -p
mysql> slave stop; mysql> CHANGE MASTER TO MASTER_HOST='123.456.789.1', MASTER_USER='slaveuser', MASTER_PASSWORD='PASSWORD', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=245; mysql> slave start;
Используйте имя пользователя MySQL и пароль, который мы создали на главном сервере.
Вы можете проверить состояние ведомого устройства, выполнив следующую команду MySQL:
mysql> show slave status;
*************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: 123.456.789.1 Master_User: slaveuser Master_Port: 3306 Master_Log_File: mysql-bin.000001 Slave_IO_Running: Yes Slave_SQL_Running: Yes Replicate_Do_DB: database
Если “Slave_IO_State” сообщает “Ожидание master, чтобы отправить событие’, репликация успешно.
Вот и все. Это так просто. Если вам нужна дополнительная информация о том, как настроить конфигурацию мастер репликации вы можете найти его на официальном сайте MySQL.
PS. Если вам понравился этот пост, пожалуйста, поделитесь им с друзьями в социальных сетях с помощью кнопок на левой стороне поста или просто оставьте комментарий ниже. Заранее благодарю.