Changes between Version 2 and Version 3 of SoftswitchFailOver


Ignore:
Timestamp:
Feb 19, 2017, 8:36:46 PM (7 years ago)
Author:
alx
Comment:

Описана настройка репликации базы данных.

Legend:

Unmodified
Added
Removed
Modified
  • SoftswitchFailOver

    v2 v3  
    152152
    153153===== Конфигурируем хранение core-db в MySQL =====
     154
     155[[span(style=color:red, Во время практического эксперимента без установки глобальной кодировки utf8 core-db была успешно перенесена в mysql. Однако далее в процессе работы возникали ошибки при попытках добавления в базу текста с нелатинскими символами. core-db была перенесена обратно в sqlite3, ее таблицы в mysql удалены, установлена глобальная кодировка базы utf8, после чего при указании использовать mysql для core-db сервер не поднимался после рестарта, в это время mysqld занимал 100% времени CPU. Пока предлагается пропустить этот этап, оставив core-db в sqlite3. )]]
    154156
    155157В конфиг-файле switch.conf.xml добавляем параметр:
     
    200202+-------------------------------------+
    201203}}}
     204
     205== Настраиваем репликацию между двумя серверами mysql ==
     206
     207В конфиг-файлы серверов добавляем следующее:
     208
     209{{{
     210server-id               = 1
     211log_bin                 = /var/log/mysql/mysql-bin.log
     212expire_logs_days        = 10
     213max_binlog_size         = 100M
     214binlog_do_db            = dispatcher
     215auto_increment_offset   = 1
     216auto_increment_increment= 2
     217}}}
     218
     219где {{{server-id}}} - идентификатор сервера (должен быть 1 у сервера 1 и 2 у сервера 2),
     220{{{auto_increment_offset}}} также должен быть 1 у сервера 1 и 2 у сервера 2.
     221
     222Перезапускаем mysqld на обоих серверах:
     223
     224{{{
     225$ sudo service mysql restart
     226}}}
     227
     228Подключаемся к mysql серверу и создаем пользователя для репликации:
     229
     230{{{
     231mysql> CREATE USER 'replicator'@'%' IDENTIFIED BY 'password';
     232}}}
     233
     234Даем пользователю право на репликацию:
     235
     236{{{
     237mysql> GRANT REPLICATION SLAVE ON *.* TO 'replicator'@'%';
     238}}}
     239
     240На сервере 1 блокируем базу данных на запись:
     241
     242{{{
     243mysql> FLUSH TABLES WITH READ LOCK;
     244}}}
     245
     246Выводим состояние мастера:
     247
     248{{{
     249mysql> SHOW MASTER STATUS;
     250}}}
     251
     252Будет выведена примерно такая таблица:
     253
     254{{{
     255+------------------+----------+--------------+------------------+-------------------+
     256| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
     257+------------------+----------+--------------+------------------+-------------------+
     258| mysql-bin.000002 | 62249651 | dispatcher   |                  |                   |
     259+------------------+----------+--------------+------------------+-------------------+
     2601 row in set (0.00 sec)
     261}}}
     262
     263Не выходя из консоли mysql (при выходе снимется блокировка), из другого терминала дампим базу данных:
     264
     265{{{
     266$ mysqldump -u root -p dispatcher >dispatcher.dump
     267}}}
     268
     269Когда дамп будет готов, снова выведем {{{SHOW MASTER STATUS;}}} и убедимся, что значение {{{Position}}} не изменилось. Теперь можно снять блокировку:
     270
     271{{{
     272mysql> UNLOCK TABLES;
     273}}}
     274
     275или просто выйти из консоли mysql.
     276
     277Копируем сделанный дамп базы на второй сервер. Записываем дамп в базу данных:
     278
     279{{{
     280$ mysql -u root -p dispatcher <dispatcher.dump
     281}}}
     282
     283Теперь входим в консоль mysql сервера 2 и запускаем репликацию:
     284
     285{{{
     286mysql> STOP SLAVE;
     287mysql> CHANGE MASTER TO MASTER_HOST = '<server 1 address>' , MASTER_USER = 'replicator', MASTER_PASSWORD = 'password', MASTER_LOG_FILE = 'mysql-bin.000002', MASTER_LOG_POS = 62249651;
     288mysql> START SLAVE;
     289}}}
     290
     291Проверим, что репликация активирована:
     292
     293{{{
     294mysql> SHOW SLAVE STATUS\G
     295*************************** 1. row ***************************
     296               Slave_IO_State: Waiting for master to send event
     297                  Master_Host: 192.168.0.64
     298                  Master_User: replicator
     299                  Master_Port: 3306
     300                Connect_Retry: 60
     301              Master_Log_File: mysql-bin.000003
     302          Read_Master_Log_Pos: 118750
     303               Relay_Log_File: r3-relay-bin.000002
     304                Relay_Log_Pos: 82017
     305        Relay_Master_Log_File: mysql-bin.000003
     306             Slave_IO_Running: Yes
     307            Slave_SQL_Running: Yes
     308              Replicate_Do_DB:
     309          Replicate_Ignore_DB:
     310           Replicate_Do_Table:
     311       Replicate_Ignore_Table:
     312      Replicate_Wild_Do_Table:
     313  Replicate_Wild_Ignore_Table:
     314                   Last_Errno: 0
     315                   Last_Error:
     316                 Skip_Counter: 0
     317          Exec_Master_Log_Pos: 118750
     318              Relay_Log_Space: 82221
     319              Until_Condition: None
     320               Until_Log_File:
     321                Until_Log_Pos: 0
     322           Master_SSL_Allowed: No
     323           Master_SSL_CA_File:
     324           Master_SSL_CA_Path:
     325              Master_SSL_Cert:
     326            Master_SSL_Cipher:
     327               Master_SSL_Key:
     328        Seconds_Behind_Master: 0
     329Master_SSL_Verify_Server_Cert: No
     330                Last_IO_Errno: 0
     331                Last_IO_Error:
     332               Last_SQL_Errno: 0
     333               Last_SQL_Error:
     334  Replicate_Ignore_Server_Ids:
     335             Master_Server_Id: 1
     336                  Master_UUID: 7603167a-1081-11e6-9637-902b3433882b
     337             Master_Info_File: /var/lib/mysql/master.info
     338                    SQL_Delay: 0
     339          SQL_Remaining_Delay: NULL
     340      Slave_SQL_Running_State: Slave has read all relay log; waiting for more updates
     341           Master_Retry_Count: 86400
     342                  Master_Bind:
     343      Last_IO_Error_Timestamp:
     344     Last_SQL_Error_Timestamp:
     345               Master_SSL_Crl:
     346           Master_SSL_Crlpath:
     347           Retrieved_Gtid_Set:
     348            Executed_Gtid_Set:
     349                Auto_Position: 0
     350         Replicate_Rewrite_DB:
     351                 Channel_Name:
     352           Master_TLS_Version:
     3531 row in set (0.00 sec)
     354}}}
     355
     356Аналогично, только без выполнения/восстановления дампа настраиваем репликацию сервера 2 на сервер 1.
     357