Procederemo configurando il servizio mysql dell'ufficio B come SLAVE e quello del notebook come MASTER, la connessione avverrà tramite VPN. In questo modo ovunque sia il notebook l'utente avrà sempre i dati aggiornati essendo lui il master, anche se non avrà a disposizione una connessione dati, quando il PC entrerà in VPN l'istanza SLAVE aggiornerà i dati rendedoli disponibili.
Per preparare i server sono necessarie le seguenti operazioni:
OPERAZIONI DA ESEUIRE SUL SERVER MASTER (IP VPN 15.1.1.3)
Aggiungere un utente con privilegi di replica, lanciando la query
mysql -u root -p
GRANT REPLICATION SLAVE ON *.* TO 'replicauser'@'%' IDENTIFIED BY 'password';
Per aumentare la sicurezza modificare il campo host (%) indicando un IP o un hostname specifico
attivare i log binari in my.cnf (ed eventualmente escludere o includere i db desiderati) e assicurarsi di indicare che il server sarà il master; le righe interessate sono le seguenti:
mysql -u root -p
[mysqld]
server-id = 1
log-bin = /var/log/mysql/mysql-bin.log
max_binlog_size = 104857600
binlog-do-db = nomeDB
binlog-ignore-db = test
bloccare le tabelle da scrittura per impedirne la modifica con la query
FLUSH TABLES WITH READ LOCK;
NB: non disconnettere il client da cui si esegue questo comando, altrimenti il blocco da scrittura viene disabilitato. Questo passo è molto importante e serve per allineare i database prima di iniziare la replica vera e propria
fare una copia del database sorgente con mysqldump
sqldump nomeDB -u root -p > file_dump.sql
Lanciare la query in un nuovo terminale e segnarsi la Posizione e il file di log in uso.
SHOW MASTER STATUS;
risultato query:
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000294 | 4905684 | invoicex | |
+------------------+----------+--------------+------------------+
1 row in set (0,00 sec)
Ora possiamo sbloccare il MASTER
UNLOCK TABLES;
OPERAZIONI DA ESEGUIRE SULLO SLAVE (IP VPN 15.1.1.1)
Creare il database
mysql -u root -p
create database invoicex;
Importare il database (o meglio i database) salvati con il seguente comando
mysql nomeDB -u root -p < file_dump.sql
Verificare che nel file my.cnf ci sia la entry "server-id=2"
CHANGE MASTER TO
MASTER_HOST='15.1.1.3',
MASTER_USER='replicauser',
MASTER_PASSWORD='password',
MASTER_LOG_FILE='mysql-bin.000294',
MASTER_LOG_POS=4905684;
START SLAVE;
Verificare il corretto funzionamento della configurazione con i comandi:
SHOW MASTER STATUS;
SHOW PROCESSLIST;
SHOW SLAVE STATUS\G;
Ora la replica è pronta, ogni qual volta si aggancia al MASTER preleva le informazioni per replicare i dati, ovviamente in raltime.
Questa soluzione non è adatta ad una grande mole di dati, attualmente il DB è usato per gestire un negozio.
0 commenti:
Posta un commento