Sponsors

Google
- Epoch Time
A quick idea by Chris Rowe follow me @chrisrowe  •  Help spread the word and tweet about this site  •  What's the Epoch

Apple's new amazing product revealed at Codemotion!

Uno script bash per riallineare la configurazione dei server mysql in modalità multimaster; questo perchè i miei due server non sempre sono in connessione tra loro ed è capitato di non avere le repliche attive. Questo a portato ad avere disallineamento tra le due istanze.
SCRIPT mysql_MM.sh

#/bin/bash
# PRIMO SERVER
MM1=10.10.216.167
USER1=topolino
PASSWORD1=topolino
userDB="root"
pwdDB="toor"
# SECONDO SERVER
MM2=
10.10.216.168
USER2=paperino
PASSWORD2=paperino
userDB2="root"
pwdDB2="toor"

echo "SHOW MASTER STATUS;" > showmaster.sql

# CONFIGURAZIONE SERVER 15.1.1.1
filebin=`mysql -h $MM2 -u $userDB2 -p$pwdDB2 <showmaster.sql |grep -i mysql-bin|awk '{print $1}'`
position=`mysql -h $MM2 -u $userDB2 -p$pwdDB2 <showmaster.sql |grep -i mysql-bin|awk '{print $2}'`
cat > MMmysql.sql << DT
STOP SLAVE;
CHANGE MASTER TO MASTER_HOST='$MM2', MASTER_USER='$USER1', MASTER_PASSWORD='$PASSWORD1', MASTER_LOG_FILE='$filebin', MASTER_LOG_POS=$position;
START SLAVE;
DT
mysql -h $MM1 -u $userDB -p$pwdDB <MMmysql.sql


# CONFIGURAZIONE SERVER 15.1.1.3
filebin2=`mysql -h $MM1 -u $userDB -p$pwdDB <showmaster.sql|grep -i mysql-bin|awk '{print $1}'`
position2=`mysql -h $MM1 -u $userDB -p$pwdDB <showmaster.sql |grep -i mysql-bin|awk '{print $2}'`
cat > MMmysql2.sql << DT
STOP SLAVE;
CHANGE MASTER TO MASTER_HOST='$MM1', MASTER_USER='$USER1', MASTER_PASSWORD='$PASSWORD2', MASTER_LOG_FILE='$filebin2', MASTER_LOG_POS=$position2;
START SLAVE;
DT
mysql -h $MM2 -u $userDB2 -p$pwdDB2 <MMmysql2.sql
sleep 2
echo "SHOW SLAVE STATUS\G;" > showSlave.sql
date > mysqlMM.log
echo "CMD MYSQL PER $MM1">>mysqlMM.log
cat MMmysql.sql >> mysqlMM.log
echo "CMD MYSQL PER $MM2" >> mysqlMM.log
cat MMmysql2.sql >> mysqlMM.log
echo "" >> mysqlMM.log
mysql -h $MM2 -u $userDB2 -p$pwdDB2 <showSlave.sql>> mysqlMM.log
mysql -h $MM1 -u $userDB -p$pwdDB <showSlave.sql>> mysqlMM.log

rm showmaster.sql
rm MMmysql.sql
rm MMmysql2.sql
rm showSlave.sql

Su uno dei due server ho invce inserito nel crontab uno script bash che mi pubblica una pagina web con lo stato dei due server mysql multimaster (sempre che siano raggiugnibili!)


root@elsamu-zm:/home/domenico/Script# cat mysqlHTML.sh
#!/bin/bash
date > /var/www/mysql.html
echo "<br>" >> /var/www/mysql.html
fortune >> /var/www/mysql.html
echo "<br>" >> /var/www/mysql.html
echo " 15.1.1.1" >> /var/www/mysql.html
mysql -h 15.1.1.1 -u root -ptoor --html </home/domenico/Script/mysql_status.sql >> /var/www/mysql.html
echo " 15.1.1.3" >> /var/www/mysql.html
mysql -h 15.1.1.3 -u root -ptoor --html </home/domenico/Script/mysql_status.sql >> /var/www/mysql.html

E questo è lo script sql che contiene i 3 comandi utili per vedere lo stato dei multimaster

root@elsamu-zm:/home/domenico/Script# cat mysql_status.sql
SHOW MASTER STATUS;
SHOW PROCESSLIST;
SHOW SLAVE STATUS\G;

root@elsamu-zm:/home/domenico/Script#

New Maserati Gran Turismo S

Arte italiana

a ovindoli

Recuperare la password di root MYSQL

Oggi il simpatico collega laureando in ING informatica si è perso la password dell'utente root di MYSQL. Il cambio password è piu semplice di quanto possa sembrare, posto i semplici comandi da lanciare:

Per iniziare fermiamo MYSQL, su LINUX con /etc/init.d/mysql stop mentre su WINDOWS dalla finestra SERIVZI

mysqld --skip-grant-tables --user=root &

Nel caso di WINDOWS non inserire la e "&" commerciale

mysql
USE mysql
UPDATE user
SET password=password("topolino“)
WHERE user=”root”;
flush privileges;
exit

pkill mysqld

Nel caso di WINDOWS basta premere CTRL C^ NELLA FINESTRA DOS

ps -ef|grep -i mysqld

Verifichiamo che il demone mysql non sia attivo, a questo punto avviamolo.

/etc/init.d/mysql start

Ovviamente

Multimaster MYSQL

La necessità ora è cambiata, il server che in precedenza era configurato come SLAVE e quindi in sola lettura ora dovrà essere MASTER, così facendo passiamo dalla configurazione MASTER-SLAVE alla MULTIMASTER. Le info per la prima configurazione sono nel precedente post.

Andiamo ad editare i file di configurazione dei server mysql e aggiungiamo queste entry:

Server 15.1.1.1 (EX SLAVE):
auto_increment_increment = 2
auto_increment_offset = 2

Server 15.1.1.3 (EX MASTER) :
auto_increment_increment = 2
auto_increment_offset = 1

cosi facendo i file di configurazione saranno i seguenti:

SERVER 15.1.1.1

server-id = 2
auto_increment_increment = 2
auto_increment_offset = 2
master-host=15.1.1.3
master-user=repl_user
master-password=password
log-slave-updates
replicate-same-server-id = 0
master-connect-retry=60
replicate-do-db=invoicex
log_bin = /var/log/mysql/mysql-bin.log
expire_logs_days = 10
max_binlog_size = 100M

SERVER 15.1.1.3

server-id = 1
auto_increment_increment = 2
auto_increment_offset = 1
master-host=15.1.1.1
master-user=repl_user
master-password=password
log-slave-updates
replicate-same-server-id = 0
replicate-do-db=invoicex
log_bin = /var/log/mysql/mysql-bin.log
expire_logs_days = 10
max_binlog_size = 100M
binlog_do_db = invoicex


Andiamo a creare l'utenza per la replica sul server 15.1.1.1:


GRANT REPLICATION SLAVE ON *.* TO 'repl_user'@'%' IDENTIFIED BY 'dcrd1980';

Sempre dal server 15.1.1.3 restartiamo il demone mysql e andiamo a leggere su quale log sta scrivendo:


mysql -u root -p

mysql> SHOW MASTER STATUS;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000011 | 40827 | | |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)


Ora spostiamoci sul server 15.1.1.3 e attiviamo la replica:


CHANGE MASTER TO
MASTER_HOST='15.1.1.3',
MASTER_USER='repl_user',
MASTER_PASSWORD='password',
MASTER_LOG_FILE='mysql-bin.000011',
MASTER_LOG_POS=40827;

START SLAVE

I server sono ora in modalità MULTIMASTER, possiamo scrivere su entrambi i DB e avremo sempre i dati aggiornati disponibili.

Replicare i dati mysql MASTER-SLAVE

Questo articolo è una guida per replicare i dati tra due database mysql, nasce dalla necessità di avere un DB in locale (MASTER) e un DB remoto (SLAVE). Il master è un notebook con un software gestionale, essendo in una rete privata protetta non ha la possibilità di collegarsi al DB presente in un'altro ufficio (sede B dove risiederà lo SLAVE); altri utenti presenti nell'ufficio B devono accedere in lettura al DB.
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.

Spostare un DB mysql

Spostare un DB da un server ad un'altro non è un'operazione poi cosi complessa, prima di procedere assicurarsi di avere le credenziali di root e il servizi SSH attivo su uno dei due server (va bene anche ftp)

Accedere alla macchina da dismettere e con lanciare il seguente comando:

mysqldump DB_da_spostare -u root -pPassword > file_DB_dump.sql

ottenuto il dump del db ora copiamolo nel nuovo server:

scp file_DB_dump.sql root@10.10.0.120:/tmp

rimanendo sul server da dismettere lanciamo il seguete comando:

ssh root@10.10.0.120 " mysqladmin create DB_da_spostare -u root -pPassword; cd /tmp; mysql DB_da_spostare -u root -pPassword < file_DB_dump.sql"


Facendo il riepilogo le operazioni sono le seguenti:
Dump del DB:
mysqldump DB_da_spostare -u root -pPassword > file_DB_dump.sql
Creazione database da importare:
mysqladmin create DB_da_spostare -u root -pPassword
Importazione database:
mysql DB_da_spostare -u root -pPassword < file_DB_dump.sql
LBiT soluzioni informatiche

Link and Search

Solo lei

Solo lei ha quel che voglio

So di esser pronto ed è già da un pò che ci penso ma tutto quel che so è che so bene con lei ma non capisco cosa intende fare dove vorrà arrivare. Non mi ha mai visto prima ma ora al mondo ci siamo solo io e lei, la conosco da un minuto l'ho appena trovata e già l'ho perduta resta una sconosciuta, un mistero e chissà se è vero quel che i suoi occhi mi stanno dicendo di lei, io lo spero e sta volta è per davvero e tutto questo perchè se puoi io so... può lasciarsi andare e l'accompagnerò e domani ti giuro che me ne andrò può lasciarsi andare e l'accompagnerò e poi ti giuro che sparirò...
Solo lei ha quel che voglio e sono io ciò che sta cercando.
Questa notte potrei darle il mondo potrei darle tutto ciò che cerca ciò di cui ha bisogno quindi molla il tipo che è con te o mi perderai, potresti non rivedermi mai più non si sa mai, non sa cosa sta rischiando pensa che stia scherzando ma sono io ciò che sta cercando, no di sicuro l'uomo che è con lei perchè questa serata spero l'abbia solo accompagnata, mi servon due minuti ma ti assicuro che verrà e questa notte durerà un'eternità, e il mondo gira solo perchè ora c'è lei solo per il suo sguardo che mi fa prendere il volo, muoio, la conosco appena e già vivo per ogni suo respiro ti giuro non ti prendo in giro e mentre l'ammiro mi accorgo quanto sia stupenda e hai sbagliato se pensi che m'arrenda...
Solo lei ha quel che voglio e sono io ciò che sta cercando.
Il mio intuito mi ha spinto e solo ora capisco perchè come un druido ho il fluido che fa per lei non conta quanto sia durato ma che sia stato qualcosa per cui vale la pena d'aver vissuto e quindi lascio che la storia abbia il suo corso naturale ma ti prego fammi capire perchè sto male perchè so che domani io mi sveglierò e sarò ancor del suo profumo intriso dal suo sorriso ucciso ma io sarò con la mia donna e lei col suo uomo visto che ho scoperto che è l'unica lei è la sola....
Solo lei ha quel che voglio e sono io ciò che sta cercando.

top