Mysql Replication

Allikas: Kuutõrvaja
Redaktsioon seisuga 19. oktoober 2007, kell 12:43 kasutajalt Jj (arutelu | kaastöö)

Antud pala räägib mysql'i ühest serverist teise replikeerimisest näiteks failover puhuks kui master server katki

installime mõlemasse serverisse mysql'i


Esimene master sever 192.168.1.1

ja teine backup 192.168.1.2


Serveripoolne seadistus on väga lihtne


Master serveri conf

my.cnf

[mysqld]
log-bin = ServerA.bin.log
server-id = 1

ja kõik. Stardime serverid

loome master serverile replikeerimiseks vajaliku kasutaja

mysql> GRANT REPLICATION SLAVE, SUPER, RELOAD, SELECT ON *.* TO 'user_name'@'192.168.1.2' IDENTIFIED BY 'parool';


replikatsioon siiski veel ei toimi


logime mysql'i

mysql> show master status;
+----------------+----------+--------------+------------------+
| File           | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+----------------+----------+--------------+------------------+
| ServerA.000024 |   136208 |              |                  |
+----------------+----------+--------------+------------------+
1 row in set (0.00 sec)


jätame mällu ServerA.000024 ja 136208

Backup serveri konf

teeme mysql'is sellise käsu

mysql> change master to master_host='192.168.1.1',
 ->     master_user='user_name',
 ->     master_password='parool',
 ->     master_log_file='ServerA.000024',
 ->     master_log_pos=136208; 

ja stardime replikatsiooni

mysql> slave start; 

kui replikatsioon peaks mingil juhul katkema saab seda uuesti startida käsuga


mysql> change master to master_log_file='ServerA.000024', master_log_pos=136208; 

logi nimi ja pos tuleb eelnevalt taas masterist vaadata


kontrollime backupis kas ühendus on saavutatud kahe serveri vahel


mysql> SHOW SLAVE STATUS \G
*************************** 1. row ***************************
             Slave_IO_State: Waiting for master to send event
                Master_Host: 192.168.1.2
                Master_User: root
                Master_Port: 3306
              Connect_Retry: 60
            Master_Log_File: ServerA.000024
        Read_Master_Log_Pos: 136396
             Relay_Log_File: -relay-bin.000012
              Relay_Log_Pos: 136531
      Relay_Master_Log_File: ServerA.000024
           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: 136396
            Relay_Log_Space: 136531
            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) 


rida Slave_IO_State: Waiting for master to send event näitab ,et kõik on läinud nagu vaja ja slave ootab master'ilt infot

Multimaster replikatsioon

Vajalik oleks samas sageli ,et replikatsioon toimuks automaatselt ja mõlemas suunas paraleelselt.


Esimene server

[mysqld]

server-id                       = 10
auto_increment_increment      = 10
auto_increment_offset         = 1
master-host                     = 192.168.1.1
master-user                     = kasutaja
master-password                 = parool

log-bin = mysql-bin
relay-log = relay-log
relay-log-index=relay-log-index


masin 2

[mysqld]

server-id                       = 20
auto_increment_increment      = 10
auto_increment_offset         = 2
master-host                     = 192.168.1.2
master-user                     = kasutaja
master-password                 = parool

log-bin = mysql-bin
relay-log = relay-log
relay-log-index=relay-log-index


testimine

tekitame näiteks master'is baasi test ,et kas kõik on läinud nagu vaja

master:

mysql> CREATE DATABASE test;


backup:

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| test               |
+--------------------+
1 rows in set (0.00 sec)


JJ