Реплікація 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 .