… ovvero come faccio ad avere due instanze indipendenti di mysql sullo stesso server ?
Attenzione :
Questo how-to è stato scritto e pensato per Ubuntu/Debian in particolare, alcuni path e directory potrebbero essere differenti nella vostra versione di Linux
1. Creo directory e predispongo i file di log
mkdir /var/lib/mysql2 chown −R mysql.mysql /var/lib/mysql2/ mkdir /var/log/mysql2 chown −R mysql.mysql /var/log/mysql2
2. Creo una nuova configurazione di mysql
cp -R /etc/mysql/ /etc/mysql2
A questo punto dobbiamo modificare il file di configurazione di mysql e cambiare la porta, socket e pid :
cd /etc/mysql2/ sed −i 's/3306/3307/g' my.cnf sed −i 's/mysqld.sock/mysqld2.sock/g' my.cnf sed −i 's/mysqld.pid/mysqld2.pid/g' my.cnf sed −i 's/var\/lib\/mysql/var\/lib\/mysql2/g' my.cnf sed −i 's/var\/log\/mysql/var\/log\/mysql2/g' my.cnf
3. Inizializzazione e start
Abbiamo a questo punto dell’how-to due scelte da fare :
1. creiamo una instanza vuota con database di default come se fosse una nuova installazione
2. Copiamo i database da un’altra instanza
Nel caso :
1. mysql_install_db −−user=mysql −−datadir=/var/lib/mysql2/ 2. cp −R /var/lib/mysql/* /var/lib/mysql2/*
Possiamo a questo punto far partire l’instanza :
mysqld_safe --defaults-file=/etc/mysql2/my.cnf &
e connetterci in due modi :
mysql -S /var/run/mysqld/mysqld2.sock
o
mysql -h 127.0.0.1 -P 3307
Possiamo a questo punto creare uno script di init (es: mysql2) in /etc/init.d/
#!/bin/sh
# Begin /etc/init.d/mysql
#source /etc/init.d/functions
case "$1" in
start)
echo -n "Starting mysql..."
/usr/bin/mysqld_safe --defaults-file=/etc/mysql2/my.cnf >/dev/null 2>&1 &
ret=$?
;;
stop)
echo -n "Stopping mysqld..."
# kill `cat /var/run/mysqld/mysqld-rep.pid`
mysqladmin -S /var/run/mysqld/mysqld2.sock shutdown > /dev/null 2>&1
ret=$?
;;
restart)
$0 stop
/usr/bin/sleep 1
$0 start
;;
status)
statusproc /usr/bin/mysqld
;;
*)
echo "Usage: $0 {start|stop|restart|status}"
exit 1
;;
esac
exit $?
se voglio farlo partire al boot :
update-rc.d mysql2 defaults