webirus
@webirus
Тыжверстальщик! Наверстай мне упущенное...

Репликация MySQL, как оно должно работать?

Собственно, после вчерашнего вопроса Как лучше огранизовать работу с базами данных?
решил пойти таким путем:
1) Сделать себе небольшой сервер на VPS, где будут только базы данных для разработки.
2) Настроить его в качестве головного сервера для репликации.
3) Два компьютера с Lamp Server'ами сделать подчиненными.
Основная разработка ведется на удаленном сервере.
Но в случае ЧП (пропал интернет, сломался сервер), хочу иметь возможность быстро переключиться на локальное хранилище.
Собственно, в локальном хранилище должны быть все внесенные ранее на сервер изменения.
Головной сервер я настроил, пишет, что базы реплицированы.
Но почему-то подчиненные сервера ничего не видят, как не было никаких баз с сервера, так и нет.
В связи с этим вопросы.
1) Репликация происходит автоматически или нужно как-то получать данные вручную?
2) Можно ли добавить в головной сервер изменения сделанные на подчиненном?
3) На подчиненном базы появятся сами или нужно создать, тогда реплицируются таблицы?
4) Вообще, насколько хорош/плох этот метод работы?
  • Вопрос задан
  • 491 просмотр
Решения вопроса 1
alekciy
@alekciy
Вёбных дел мастер
Что значит не видят? Репликация-то в принципе настроена? Что говорит команда
SHOW SLAVE STATUS\G
на реплике ("локальное хранилище")? Вообще репликация работает автоматически (если она конечно же настроена). Пример с вывода команды с реплики:
mysql --execute 'SHOW SLAVE STATUS\G'
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 10.0.3.12
                  Master_User: replication
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.024614
          Read_Master_Log_Pos: 69542233
               Relay_Log_File: mysql-relay-bin-1.010200
                Relay_Log_Pos: 69542379
        Relay_Master_Log_File: mysql-bin.024614
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
              Replicate_Do_DB: berito
          Replicate_Ignore_DB: 
           Replicate_Do_Table: 
       Replicate_Ignore_Table: 
      Replicate_Wild_Do_Table: 
  Replicate_Wild_Ignore_Table: 
                   Last_Errno: 0
                   Last_Error: 
                 Skip_Counter: 0
          Exec_Master_Log_Pos: 69542233
              Relay_Log_Space: 69542580
              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
Master_SSL_Verify_Server_Cert: No
                Last_IO_Errno: 0
                Last_IO_Error: 
               Last_SQL_Errno: 0
               Last_SQL_Error: 
  Replicate_Ignore_Server_Ids: 
             Master_Server_Id: 1

Строки Slave_IO_Running=Yes и Slave_SQL_Running=Yes говорит о том, что репликация работает, а Seconds_Behind_Master=0, что реплика отстает от мастера на 0 секунд.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы