Для того, чтобы организовать репликацию между двумя MySQL-серверами необходимо:
- На master-сервере
log-bin=/var/db/mysql/srv011-bin.log2) Создать пользователя с правами:
server-id = 1
GRANT REPLICATION SLAVE ON *.* TO 'slave_user'@'%' IDENTIFIED BY '3) Заблокировать требуемые таблицы на время dump'а. Во время блокировки также необходимо посмотреть текущее состояние в binary логе';
FLUSH PRIVILEGES;
mysql> FLUSH TABLES WITH READ LOCK;4) Сделать dump требуемых таблиц и снять блокировку
mysql> show master status;
+-------------------+----------+--------------+------------------+
File Position Binlog_Do_DB Binlog_Ignore_DB
+-------------------+----------+--------------+------------------+
srv011-bin.000813 1156293
+-------------------+----------+--------------+------------------+
1 row in set (0.00 sec)
mysqldump -u root -p test_db > /root/test_db.db
mysql> UNLOCK TABLES;
- На slave-сервере
max-user-connections=502) Указать "отправную точку", с которой следует начать репликацию данных.
master-host=212.122.238.32
master-user=slave_user
master-password=v9X8Ds4
server-id= 2
replicate-do-db=test_db
replicate-do-table=test_db.wiz_data
replicate-do-table=test_db.wiz_main
mysql> CHANGE MASTER TO MASTER_LOG_FILE='srv011-bin.000813';3) Инициировать репликацию
Query OK, 0 rows affected (0.05 sec)
mysql> CHANGE MASTER TO MASTER_LOG_POS=1156293;
Query OK, 0 rows affected (0.05 sec)
mysql> SHOW SLAVE STATUS\G
*************************** 1. row ***************************
Slave_IO_State:
Master_Host: 212.122.238.32
Master_User: slave_user
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: srv011-bin.000813
Read_Master_Log_Pos: 1156293
Relay_Log_File: relay.000001
Relay_Log_Pos: 4
Relay_Master_Log_File: srv011-bin.000813
Slave_IO_Running: No
Slave_SQL_Running: No
Replicate_Do_DB: test_db
Replicate_Ignore_DB:
Replicate_Do_Table: test_db.wiz_main,test_db.wiz_data
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 1156293
Relay_Log_Space: 4
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: NULL
1 row in set (0.00 sec)
mysql> start slave;
Query OK, 0 rows affected (0.00 sec)
mysql> SHOW SLAVE STATUS\G
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 212.122.238.32
Master_User: slave_user
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: srv011-bin.000813
Read_Master_Log_Pos: 1174592
Relay_Log_File: relay.000001
Relay_Log_Pos: 18347
Relay_Master_Log_File: srv011-bin.000813
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB: test_db
Replicate_Ignore_DB:
Replicate_Do_Table: test_db.wiz_main,test_db.wiz_data
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 1174592
Relay_Log_Space: 18347
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: 0
1 row in set (0.00 sec)
Ссылки:
- Live Backups of MySQL Using Replication
- How To Set Up Database Replication In MySQL
- Репликация Master-Slave в MySQL
- Репликация mySQL — параметры и команды