Mysql replication master olarak secilen databaseda bellirli bir
objeyi - database, tablo, vs - slave olarak secilen databaselere
senkronize etmek icin kullanilir.
ornek setup:
Kod:
Kod: master : aaa.aaa.aaa.aaa slave1 : bbb.bbb.bbb.bbb slave2 : ccc.ccc.ccc.ccc"master"de my.cnf dosyasina:
Kod:
Kod: server-id = 1
log-binsatırları eklenir. Değişikliklerin aktif olabilmesi icin mysql restart edilir.
Kod:
Kod: mysql> GRANT REPLICATION SLAVE ON *.* to [email protected]'bbb.bbb.bbb.bbb' identified by 'slave_password' mysql> GRANT RELOAD ON *.* to [email protected]'bbb.bbb.bbb.bbb' identified by 'slave_password'; mysql> GRANT SUPER,REPLICATION CLIENT ON *.* to email protected'bbb.bbb.bbb.bbb' identified by 'slave_password'; mysql> GRANT REPLICATION SLAVE ON *.* to email protected'ccc.ccc.ccc.ccc' identified by 'slave_password' mysql> GRANT RELOAD ON *.* to email protected'ccc.ccc.ccc.ccc' identified by 'slave_password'; mysql> GRANT SUPER,REPLICATION CLIENT ON *.* to email protected'ccc.ccc.ccc.ccc' identified by 'slave_password';"slave1"de my.cnf dosyasinda, (replicate-do-table ile replicate yapilacak tablolar belirleniyor)
Kod:
Kod: server-id = 2 master-host =aaa.aaa.aaa.aaa master-user = slave_user master-password=slave_password master-port = 3306 replicate-do-table=db.TABLE1 replicate-do-table=db.TABLE2 replicate-do-table=db.TABLE3 replicate-do-table=db.TABLE4 "slave2"de my.cnf dosyasinda server-id = 3 master-host =aaa.aaa.aaa.aaa master-user = slave_user master-password=slave_password master-port = 3306 replicate-do-table=db.TABLE1 replicate-do-table=db.TABLE2 replicate-do-table=db.TABLE3 replicate-do-table=db.TABLE4eklentileri yapilir ve herbir slave makinada mysqller tekrar başlatılır.
slave1 veya slave2 de
Kod:
Kod: mysql> load data from master mysql> slave startedilir.
slavelerde,
Kod:
Kod: mysql> show slave statusG; ile ************************** 1. row ************************** Slave_IO_State: Waiting for master to send event Master_Host: aaa.aaa.aaa.aaa Master_User: slave_user Master_Port: 3306 Connect_Retry: 60 Master_Log_File: bin-log.000001 Read_Master_Log_Pos: 160158 Relay_Log_File: smlcpurgw1-relay-bin.000001 Relay_Log_Pos: 59186 Relay_Master_Log_File: bin-log.000001 Slave_IO_Running: Yes Slave_SQL_Running: Yes Replicate_Do_DB: Replicate_Ignore_DB: Replicate_Do_Table: db.TABLE1,db.TABLE2,db.TABLE3,db.TABLE4 Replicate_Ignore_Table: Replicate_Wild_Do_Table: Replicate_Wild_Ignore_Table: Last_Errno: 0 Last_Error: Skip_Counter: 0 Exec_Master_Log_Pos: 160158 Relay_Log_Space: 59186 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)ERROR: No query specified
elde edilir.
buradaki Read_Master_Log_Pos: 160158 ile
master makinadaki
Kod:
Kod: mysql> show master status; +-----------------------------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +-----------------------------------+------------------+ | bin-log.000001 | 160158 | | | +-----------------------------------+------------------+ 1 row in set (0.00 sec)daki position: 160158 degerinin aynı olduğu gorulur.
masterin bin-log position ile slave lerdeki positionlar eşit olduğu surece
master-slave sistemi senkronize demektir.