linux:replikacja_mysql

Replikacja MySQL

Master

my.cnf:

log-bin = /var/log/mysql/mysql-bin.log
binlog-do-db=exampledb
server-id=1 

Oprócz tego pozwalamy na zdalne blokowanie tabel i przyjmowanie połączeń z sieci zewn.

Użytkownik do deplikacji

GRANT REPLICATION SLAVE ON *.* TO 'slave_user'@'%' IDENTIFIED BY '<some_password>'; (Replace <some_password> with a real password!)
FLUSH PRIVILEGES;
SHOW MASTER STATUS;
+---------------+----------+--------------+------------------+
| File          | Position | Binlog_do_db | Binlog_ignore_db |
+---------------+----------+--------------+------------------+
| mysql-bin.006 | 183      | exampledb    |                  |
+---------------+----------+--------------+------------------+
1 row in set (0.00 sec)
UNLOCK TABLES;

Slave

my.cnf:

server-id=2

Reszta rzeczy będzie bezpośrednio w bazie. Niektóre tutoriale podają, że można też i tu.

LOAD DATA FROM MASTER;

To jeśli istnieją już jakieś dane

SLAVE STOP;
CHANGE MASTER TO MASTER_HOST='192.168.0.100', MASTER_USER='slave_user', MASTER_PASSWORD='<some_password>', MASTER_LOG_FILE='mysql-bin.006', MASTER_LOG_POS=183;

Najlepiej przeczytać sobie to, co zwraca:

\h CHANGE MASTER TO

W skrócie:

  • MASTER_HOST - adres serwera master
  • MASTER_USER - user
  • MASTER_PASSWORD - hasło
  • MASTER_LOG_FILE - dane z mastera
  • MASTER_LOG_POS - dane z mastera
START SLAVE;