DBMS/MySQL/XtraDBCluster/Manage

De TartareFR
Aller à la navigation Aller à la recherche

Script de test

#!/usr/bin/php
<?php

// CONNECT TO THE DATABASE
$DBNAME = 'didier';
$DBHOST = '192.168.122.136';
$DBUSER = 'didier';
$DBPASS = 'ght1vtt9';
$NBLOOP = 25000;

$CREATE_TABLE = "CREATE TABLE IF NOT EXISTS test ( " .
	"id int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY, " .
	"`timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, " .
	"`name` varchar(25) NOT NULL, " .
	"`text` varchar(50) NOT NULL " .
	") ENGINE=InnoDB AUTO_INCREMENT=1;";

$mysqli = new mysqli( $DBHOST, $DBUSER, $DBPASS, $DBNAME );
if ( mysqli_connect_errno() ) {
	printf( "Connect failed: %s\n", mysqli_connect_error() );
	exit( -1 );
}

$result = $mysqli->query( $CREATE_TABLE ) or print $mysqli->error."\n";
for ( $i = 0 ; $i < $NBLOOP ; $i++ )
{
	$val = substr( md5( microtime() ), rand( 0,26 ), 48 );
	$query = "INSERT INTO test(name, text) VALUES('didier', '$val')";
	$result = $mysqli->query( $query ) or print $mysqli->error."\n";
}

// Print first row
$query = "SELECT * FROM test LIMIT 1";
$result = $mysqli->query($query) or print $mysqli->error."\n";
if( $result->num_rows > 0 ) {
	while( $row = $result->fetch_assoc() ) {
		print_r( $row);
	}
	echo "\n";
}
else {
	echo "NO RESULTS\n";	
}
mysqli_close($mysqli);
?>

Restart du cluster après un arrêt général

  • Sur un noeuds
    service mysql restart-bootstrap
  • Sur les autres noeuds
    service mysql restart

Redémarrage après un crash

  • Il faut s'assurer que la clé suivante est bien décommentée et renseignée dans <path>/etc/my.cnf</path>
    wsrep_sst_donor = clust-node1
  • Si l'erreur suivante est rencontrée au démarrage du service mysql
    ERROR! MySQL (Percona XtraDB Cluster) is not running, but PID file exists
    Il faut supprimer le fichier PID (*.pid) dans <path>/var/lib/mysql/</path>