Articoli correlati ‘command line’

Backup MySQL database in command line

23 December 2009

Può essere utile effettuare un backup di uno specifico database attraverso la linea di comando. Sicuramente è più agevole usare tool come phpMyAdmin, ma in caso di emergenza o perché preferite appunto la shell, questa info è sicuramente utile. L’eseguibile che effettua tale operazione è ” mysqldump ” che solitamente è installato assieme al server MySQL.

La sintassi da seguire è:

mysqldump -h localhost -u username -p database_name > database_backup.sql

Ovviamente variate i parametri di conseguenza, localhost dovrebbe andare bene considerando l’uso della shell, mentre username e database_name vanno regolati di conseguenza. Dopo il segno > il nome scelto è a vostra discrezione. Una volta impartito il comando vi verrà richiesta la password del database per accedere al suo contenuto.

E’ anche possibile produrre direttamente un file compresso variando leggermente la sintassi come segue:

mysqldump -h localhost -u username -p database_name | gzip -9 > database_backup.sql.gz

dove gzip effettua la compressione (il parametro -9 indica la miglior compressione possibile), utile se poi il file lo dovete scaricare attraverso internet.

Muovere i servizi di Windows Cluster via command line

5 August 2009

Nell’amministrazione di un cluster sotto ambiente Windows Server Enterprise, può capitare che a seguito dell’installazione di una patch sia necessario riavviare la macchina. Il movimento dei gruppi (leggi come servizi erogati) da un nodo all’altro significa comunque un disservizio anche se molto limitato nel tempo (solitamente qualche secondo).
Ad esempio, spostare un gruppo che contiene il servizio di posta Microsoft Exchange, comporterà per parecchi client l’avviso sul desktop di perdita e ripristino della connessione. Decisamente seccante se non volete ricevere chiamate d’assistenza totalmetne inutili.

In questo caso si può “spostare” nel tempo il momento in cui potremo cambiare nodo, ad esempio dopo l’orario di lavoro, anche se noi non siamo fisicamente presenti. Per fare questo ci viene in aiuto la command-line, che potremo schedulare comodamente con lo scheduler di windows.

Sotto la directory C:\Windows\System32 è presente il file cluster.exe che di fatto permette di effettuare le operazioni sul cluster non solo tramite la GUI ma anche via command-line.

Potrete trovare documentazione aggiuntiva presso la Technet Microsoft a questa pagina. Oppure un sunto dell’help alla fine di questo articolo.

Procediamo a vedere come si muove un gruppo di un cluster. Poniamo che il cluster si chiami MYCLUSTER, e i nodi fisici si chiamino NODE1 e NODE2. Per il gruppo solitamente troviamo MSDTC e ClusterGroup.

Il comando che daremo sarà:
C:\WINDOWS\system32>cluster.exe /cluster:MYCLUSTER group “MSDTC” /moveto:NODE02

Quindi ricapitolando, basterà che modifichiate MYCLUSTER, NODE02 e MSDTC con le nomenclature che avete scelto. Notare che il gruppo va racchiuso tra virgolette, questo perchè i nodi talvolta sono insiemi di parole, tipo “Cluster Group”.

Sicuramente la successiva domanda sarà, già ma un cluster difficilmente è composto da un solo gruppo, visto che è buona norma usare appunto un gruppo per il cluster, uno per l’MSDTC e uno per il servizio erogato.
In questo caso è possibile “raggruppare” i gruppi, come descritto in questa pagina del technet, con questo comando:
cluster MYCLUSTER group “disk group 1″ /prop AntiAffinityClassNames=”SEP1″
cluster MYCLUSTER group “disk group 2″ /prop AntiAffinityClassNames=”SEP1″

Possiamo anche fare più associazioni, anche incrociate, modificando il valore “SEP1″

Un estratto dell’help di cluster.exe

C:\WINDOWS\system32>cluster.exe -?
The syntax of this command is:

CLUSTER /LIST[:domain-name]

CLUSTER /CHANGEPASS[WORD] /?
CLUSTER /CHANGEPASS[WORD] /HELP
CLUSTER /CLUSTER:clustername1[,clustername2[,...]]
/CHANGEPASS[WORD][:newpassword[,oldpassword]]

=
[/FORCE] [/QUIET] [/SKIPDC] [/TEST] [/VERB[OSE]] [/UNATTEND[ED]] [/?] [/HELP]

CLUSTER [/CLUSTER:]cluster-name

=
/CREATE [/NODE:node-name] [/VERB[OSE]] [/UNATTEND[ED]] [/MIN[IMUM]]
/USER:domain\username | username@domain [/PASS[WORD]:password]
/IPADDR[ESS]:xxx.xxx.xxx.xxx[,xxx.xxx.xxx.xxx,network-connection-name]
/ADD[NODES][:node-name[,node-name ...]] [/VERB[OSE]] [/UNATTEND[ED]]
[/MIN[IMUM]] [/PASSWORD:service-account-password]

CLUSTER [[/CLUSTER:]cluster-name]

=
/CREATE [/NODE:node-name] /WIZ[ARD] [/MIN[IMUM]]
[/USER:domain\username | username@domain] [/PASS[WORD]:password]
[/IPADDR[ESS]:xxx.xxx.xxx.xxx]
/ADD[NODES][:node-name[,node-name ...]] /WIZ[ARD] [/MIN[IMUM]]
[/PASSWORD:service-account-password]
/PROP[ERTIES] []
/PRIV[PROPERTIES] []
/PROP[ERTIES][:propname[,propname ...] /USEDEFAULT]
/PRIV[PROPERTIES][:propname[,propname ...] /USEDEFAULT]
/REN[AME]:cluster-name
/QUORUM[RESOURCE][:resource-name] [/PATH:path] [/MAXLOGSIZE:max-size-kbytes]
/SETFAIL[UREACTIONS][:node-name[,node-name ...]]
/LISTNETPRI[ORITY]
/SETNETPRI[ORITY]:net[,net ...]
/REG[ADMIN]EXT:admin-extension-dll[,admin-extension-dll ...]
/UNREG[ADMIN]EXT:admin-extension-dll[,admin-extension-dll ...]
/VER[SION]
NODE [node-name] node-command
GROUP [group-name] group-command
RES[OURCE] [resource-name] resource-command
{RESOURCETYPE|RESTYPE} [resourcetype-name] resourcetype-command
NET[WORK] [network-name] network-command
NETINT[ERFACE] [interface-name] interface-command

=
name=value[,value ...][:] [name=value[,value ...][:] …]

=
BINARY|DWORD|STR[ING]|EXPANDSTR[ING]|MULTISTR[ING]|SECURITY|ULARGE

CLUSTER /?
CLUSTER /HELP

Note: With the /CREATE, /ADDNODES, and /CHANGEPASSWORD options, you
will be prompted for passwords not provided on the command line
unless you also specify the /UNATTENDED option.