Для того, чтобы организовать репликацию между двумя 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 — параметры и команды
4 comments:
Вопрос: реплицируются только выбранные таблицы или БД состоит из 2х таблиц?
Поясню к чему этот вопрос. Если внимательно прочитать документацию по репликации мускуля, то там сказано, что в лог пишутся изменения во всех таблицах и уже на слейве проверяется, включена ли репликация данной таблицы или нет, что замедляет работу слейва. Не забываем, что репликация работает в 1 поток. Имхо, при репликации только некоторых таблиц БД гораздо лучше использовать BLACKHOLE Storage Engine (mysql 5) для тех таблиц, которые не реплицируются.
to тёркин:
Спасибо за комментарий. Реплицируются только 2 таблицы из приведенной базы. Так как в данном месте используется MySQL 4.1, Blackhole отпадает :/
Небольшое замечание, не забываем про то, что для подключения слейва надо сделать
FLUSH TABLES WITH READ LOCK; после этого скопировать таблички, запустить slave c определенной позиции мастера и затем UNLOCK TABLES;
to mgyk:
Благодарю за комментарий. Внес необходимые поправки.
Post a Comment