As an user of OpenVZ it's often my task to migrate database driven web applications to separate environments. In recent versions of OpenVZ, bind mounting of sockets between virtual environments is prohibited. I had to find a way to proxy local connections to /var/run/mysqld/mysqld.sock
to the remote mysql server.
First I've created a mysql user and group:
addgroup --system mysql adduser --system --home /var/run/mysqld --ingroup mysql mysql
Then I've installed and configured the excellent socat
utility using launchtool
.
db.vz
is the address remote database host in the following executable launchtool
configuration script
#!/usr/bin/launchtool -C tag = mysql-proxy daemon = yes user = mysql command = socat UNIX-LISTEN:/var/run/mysqld/mysqld.sock,fork,mode=0666 TCP:db.vz:3306,forever start dir = /var/run/mysqld wait times = 5 infinite runs = yes stats = yes launchtool output = syslog:mysql-proxy,LOG_DAEMON,LOG_INFO launchtool errors = syslog:mysql-proxy,LOG_DAEMON,LOG_ERR command output = syslog:mysql-proxy,LOG_DAEMON,LOG_INFO command errors = syslog:mysql-proxy,LOG_DAEMON,LOG_ERR