Canali
![]() Ultime news
![]() Ultimi articoli
![]() Le ultime dal Forum |
![]() Correlati![]() TagPassa qui con il mouse e visualizza le istruzioni per utilizzare i tag! Per prima cosa, ci occuperemo di predisporre il server master. Aprite quindi il relativo file di configurazione di MySQL sulla macchina principale. Se state operando sotto Windows, tale file si trova nella cartella d'installazione del programma stesso: per impostazione predefinita, C:\Programmi\MySQL\MySQL Server <versione>\my.ini. Se invece il vostro sistema utilizza Linux... individuare il corrispondente my.cnf è meno immediato, poichè il percorso varia da distribuzione a distribuzione. /usr/local/mysql/ potrebbe essere un buon candidato. In caso ancora non lo troviate, aiutatevi con find / -name "my.cnf". Una volta aperto il file, individuate la sezione [mysqld] . Fate attenzione: è presente anche una sezione [mysql] (senza la "d" finale) che, però, non è quella che ci interessa! Una volta trovata la linea giusta, modificatela aggiungendo subito sotto due parametri, così come indicato di seguito
Il risultato dovrà essere quello riportato in immagine Dopo aver apportato tale variazione, salvate la modifica. Notate che, su Windows Vista e successivi con Controllo Account Utente (UAC) attivo, dovrete dapprima salvare il documento in una cartella non-"di sistema" come il desktop, quindi sovrascrivere manualmente il vecchio file con quello nuovo. Riavviate ora il database: se MySQL è installato come servizio di sistema (impostazione predefinita), aprite un prompt di comando amministrativo e quindi lanciate net stop mysql seguito da net start mysql. Sotto Linux usate semplicemente service mysqld restart. Creare un account per la replicazioneI vari slave dovranno accedere al server presentando credenziali d'accesso valide. Sebbene qualsiasi utente dotato di un certo privilegio possa essere usato, raccomando vivamente di creare un account adibito alla sola replicazione dei dati. Per farlo, accedete al database del master (mysql -uNomeUtenteAmministratore -pRelativaPassword se lavorate da linea di comando) e quindi impartite CREATE USER 'Replicator'@'%' IDENTIFIED BY 'RepliCarter';. Appare evidente che il nome utente scelto, Replicator, e la relativa password, RepliCarter (se non capite l'ironia, è normale..) sono del tutto arbitrari. Una volta creato l'utente, impartite GRANT REPLICATION SLAVE ON *.* TO 'Replicator'@'%';: questo doterà l'account di replicazione dell'unico privilegio necessario ad operare. Notate che REPLICATION SLAVE deve essere obbligatoriamente assegnato all'intero server. Tentare di limitarlo ad uno specifico database, con qualcosa simile a GRANT REPLICATION SLAVE ON miodatabase.* TO 'Replicator'@'%'; restituirà, per qualche motivo che va ben oltre la mia comprensione, un errore. Gli amministratori di sistema più cauti vorranno limitare al solo indirizzo dello slave la possibilità di autenticarsi con tale account. Per farlo, è sufficiente sostituire (in entrambi i comandi) a 'Replicator'@'%' la stringa 'Replicator'@'192.168.0.75' o 'Replicator'@'192.168.0.%' (per tutta la rete locale) oppure 'Replicator'@'slave.miodominio.it' o 'Replicator'@'%.miodominio.it' (per tutto il dominio). Preparasi a qualche disagioIl prossimo passaggio inibirà per qualche tempo le operazioni di scrittura sul database. Più precisamente, tutti i tentativi di modificare i dati verranno posti in attesa fino alla fine dell'operazione: questo potrebbe comportare qualche timeout o altri tipi di disagi per gli utenti della base di dati. Se la vostra applicazione è predisposta per consentire l'uso del servizio anche in sola-lettura, potete facilmente attenuare l'inconveniente agendo su questa caratteristica. In caso contrario, il consiglio è quello di prevenire completamente tali problemi inibendo del tutto l'accesso al database. Se MySQL funge unicamente da backend ad un sito web, il risultato si può ottenere facilmente arrestando il server HTTP. In caso contrario, lo scenario è più complesso e sarà necessario ragionare caso per caso. Generare una copia del database per i clientDovete ora "fotocopiare" manualmente il contenuto del master sullo slave. Per farlo, useremo mysqldump sul master, per poi importare il file da esso generato sul server secondario. Il comando da usare (all'interno di un prompt di comando amministrativo) per "dumpare" i tre database di nome miodatabase è mysqldump -uroot -pmiapassword --databases miodatabase1 miodatabase2 miodatabase3 --add-drop-database --master-data > C:\dump_del_database_master.sql (sotto Linux è necessario solamente sostituire C:\ con un percorso adeguato al file system, come /usr/). Prestate particolare attenzione a non dimenticare il parametro --master-data del comando! Questo semplifica moltissimo la procedura e, per come è stato impostato il discorso fino ad ora, è indispensabile per mantenere integri i dati esportati. Notate anche che, sempre per garantire l'integrità dei dati, dovrete indicare nel comando tutti i nomi dei database che vorrete poi replicare. La vostra priorità è ora probabilmente quella di ripristinare la piena operatività del server. Potete procedere non appena l'operazione di dump si sarà conclusa. A questo punto, trasportate il file generato da mysqldump sullo slave (FTP, SCP, Desktop Remoto... perfino un servizio di filehosting va benissimo, se siete disperati e poco preoccupati della riservatezza delle informazioni) e tenetelo pronto: servirà fra poco. Per una trattazione più approfondita di mysqldump si veda l'articolo "Guida rapida al backup e ripristino dei database MySQL". ![]() Configurazione degli slave ![]() Come replicare un database MySQL su più server (Windows/Linux) Pagine
Segnala ad un amico |
© Copyright 2025 BlazeMedia srl - P. IVA 14742231005