Ubuntu

Налаштування реплікації master-master для баз даних MySQL

Реплікація MySQL  – це процес копіювання бази даних  MySQL  на інший сервер. Реплікація  master-master  дає змогу копіювати дані з одного сервера на інший. Ця конфігурація додає надмірність та підвищує ефективність при зверненні до даних.

У цьому прикладі я беру два сервери з іменами  Server 1  та  Server 2 .

Сервер 1:   192.168.1.22
Сервер 2:   192.168.1.24

Установка Mysql

Встановіть  MySQL  на обох серверах, використовуючи наступну команду:

# sudo apt update
# sudo apt upgrade -y
# sudo apt install mysql-server mysql-client -y

Відредагуйте конфігураційний файл MySQL

Відредагуйте файл  /etc/mysql/mysql.conf.d/mysqld.cnf  на обох серверах.

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

 

 

Додайте або змініть такі дані:

Сервер 1:

server_id           = 1
log_bin             = /var/log/mysql/mysql-bin.log
log_bin_index       = /var/log/mysql/mysql-bin.log.index
relay_log           = /var/log/mysql/mysql-relay-bin
relay_log_index     = /var/log/mysql/mysql-relay-bin.index
expire_logs_days    = 10
max_binlog_size     = 100M
log_slave_updates   = 1
auto-increment-increment = 2
auto-increment-offset = 1
bind-address = 192.168.1.22

 

 

Сервер 2:

server_id           = 2
log_bin             = /var/log/mysql/mysql-bin.log
log_bin_index       = /var/log/mysql/mysql-bin.log.index
relay_log           = /var/log/mysql/mysql-relay-bin
relay_log_index     = /var/log/mysql/mysql-relay-bin.index
expire_logs_days    = 10
max_binlog_size     = 100M
log_slave_updates   = 1
auto-increment-increment = 2
auto-increment-offset = 2
bind-address = 192.168.1.24

 

 

 

Зупиняємо MySQL на обох серверах

# sudo service mysql stop

 

Переносимо MySQL бази з одного Server1 на Server2

# sudo rsync -avz --progress root@192.168.1.22:/var/lib/mysql /var/lib/

# sudo systemctl stop mysql
# sudo rm -f /var/lib/mysql/auto.cnf
# sudo systemctl start mysql

 

Запускаємо MySQL на обох серверах

# sudo service mysql start
 
Створення користувачів реплікації на обох серверах
1. Увійдіть у MySQL на Server 1
# mysql -u root -p

 

 

2. Налаштуйте користувачів реплікації на Server 1
# GRANT REPLICATION SLAVE ON *.* TO 'replication'@'192.168.1.24' IDENTIFIED BY 'password';

 

 

3. Увійдіть у MySQL на Server 2
# mysql -u root -p

 

 

4. Налаштуйте користувачів реплікації на Server 2
# GRANT REPLICATION SLAVE ON *.* TO 'replication'@'192.168.1.22' IDENTIFIED BY 'password';

 

 

Налаштування реплікації бази даних

1. Увійдіть у MySQL на Server 1, запросіть статус майстра:
# SHOW MASTER STATUS;

 

2. Увійдіть у MySQL на Server 2 і введіть нижченаведену команду.
STOP SLAVE;
CHANGE MASTER TO master_host='192.168.1.22', master_port=3306, master_user='replication', master_password='password', master_log_file='mysql-bin.000001', master_log_pos=460;
START SLAVE;

 

3. Запросите статус мастера:
# SHOW MASTER STATUS;

 

4. Увійдіть MySQL на Server 1 і введіть команду наведену нижче.

 

STOP SLAVE;
CHANGE MASTER TO master_host='192.168.1.24', master_port=3306, master_user='replication', master_password='password', master_log_file='mysql-bin.000001', master_log_pos=461;
START SLAVE;

 

Тепер виконано налаштування реплікації  master-master , настав час протестувати налаштування.

Конфігурація тестової реплікації

Сервер 1 :

create database Subhash;
create table Subhash.serverkaka (`id` varchar(10));

 

 

Сервер 2:

show tables in Subhash;

 

При запиті ми повинні побачити таблиці з  сервером 1 , репліковані на  сервері 2 .