mysql

Z dôvodu HA riešenia manažmentu je treba ako podkladovú DB použiť MySQL. Na oboch serveroch sa štandardne nainštaluje Mysql-Server a na oboch nastavíme rovnaké root heslá.

apt-get install mysql-server mysql-client

Nasledujúca konfigurácia využíva faktu ze obe DB sú prázdne preto nebudeme robiť úvodnú synchronizáciu DB!!!

Vytvoríme užívateľov pre synchronizáciu. Pripomínam že na takéto veci tu máme špeciálnu sieť 172.16.2.0/24

Na oboch serveroch vytvorime užívateľov. Keďže sa aj databáza mysql bude synchronizovať musia byt užívatelia v oboch databázach.

CREATE USER 'replynfs02'@'172.16.2.12' IDENTIFIED BY 'coool_dlhe_heslo';
GRANT REPLICATION SLAVE ON *.* TO 'replynfs02'@'172.16.2.12';
CREATE USER 'replynfs02'@'172.16.2.11' IDENTIFIED BY 'coool_dlhe_heslo';
GRANT REPLICATION SLAVE ON *.* TO 'replynfs02'@'172.16.2.11';
flush privileges;

Následne upravíme konfiguráciu mysql serverov.

Ako prve zmeníme bind adresu na 0.0.0.0. A to na oboch serveroch.

...
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
bind-address            = 0.0.0.0
#
# * Fine Tuning
#
...

Následne nakonfigurujeme synchronizáciu:

...
# The following can be used as easy to replay backup logs or for replication.
# note: if you are setting up a replication slave, see README.Debian about
#       other settings you may need to change.
server-id               = 1

log-bin                 = /var/log/mysql/mysql-bin.log
log-slave-updates
log-bin-index           = /var/log/mysql/mysql-log-bin.index
log-error               = /var/log/mysql/mysql-error.log

relay-log               = /var/log/mysql/mysql-relay.log
relay-log-info-file     = /var/log/mysql/mysql-relay-log.info
relay-log-index         = /var/log/mysql/mysql-relay-log.index

auto_increment_increment        = 10
auto_increment_offset   = 1

expire_logs_days        = 10
max_binlog_size         = 100M
#binlog_do_db           = include_database_name
#binlog_ignore_db       = include_database_name
#
# * InnoDB
...

Na druhom servery nahradíme nfs02.sync.mavipet.sk za nfs01.sync.mavipet.sk a užívateľa z replynfs01 za replynfs02. Pokial sme dali rozdielne hesla tak zmenime aj to. Ako ďaľšie zmeníme server-id na 2 rovnako ako auto_increment_offset. 

Teraz stačí myslq servery reštartnúť a prihlásiť sa na ne. Aby sme eventuálne spustili úvodnú synchronizáciu.

# mysql mysql -p

Teraz sa môžeme pozrieť či sa synchronizácia rozbehla, kontrolujeme na oboch nódoch. Ukážka z nódu nfs01. Na nóde nfs02 náležite vymeníme hosta a login:

mysql> CHANGE MASTER TO MASTER_HOST='nfs02.sync.mavipet.sk', MASTER_USER='replynfs01', MASTER_PASSWORD='coool_dlhe_heslo', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=0;
mysql> SHOW SLAVE STATUSG;
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: nfs02.sync.mavipet.sk
                  Master_User: replynfs01
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000008
          Read_Master_Log_Pos: 106
               Relay_Log_File: mysql-relay.000115
                Relay_Log_Pos: 251
        Relay_Master_Log_File: mysql-bin.000008
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
              Replicate_Do_DB:
          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: 106
              Relay_Log_Space: 547
              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:
1 row in set (0.00 sec)

ERROR:
No query specified

Ako odpoveď by sme dostali tabuľku zo stavom synchronizácie. V našom nasadení používame na synchronizáciu priamy prepoj medzi nódmi a preto nebudeme riešiť šifrovanie komunikácie.

Ako test môžeme vytvoriť na jednom nóde Databázu a na druhom ju skontrolovať.