创建配置文件
举例如下,多运行一个监听3309端口的MySQL实例,把原来的my.cnf复制一份到/etc/mysql/my3309.cnf
修改成以下配置
[client]
port = 3309
socket = /var/run/mysqld/mysqld3309.sock
[mysqld_safe]
socket = /var/run/mysqld/mysqld3309.sock
nice = 0
[mysqld]
user = mysql
pid-file = /var/run/mysqld/mysqld3309.pid
socket = /var/run/mysqld/mysqld3309.sock
port = 3309
datadir = /var/lib/mysql3309
由于Ubuntu使用了一种安全软件叫做AppArmor,这个安全软件会在你的文件系统中创建一个允许应用程序访问的区域(专业术语:应 用程序访问控制)。如果不为MySQL修改AppArmor配置文件,永远也无法为新设置的存储位置启动服务。
修改AppArmor配置文件
$sudo nano /etc/apparmor.d/usr.sbin.mysqld
为了方便,修改如下(某些地方直接添加了一个通配符*)
/var/log/mysql*.log rw,
/var/log/mysql*.err rw,
/var/lib/mysql3308/ r,
/var/lib/mysql3308/** rwk,
/var/lib/mysql3309/ r,
/var/lib/mysql3309/** rwk,
/var/lib/mysql/ r,
/var/lib/mysql/** rwk,
/var/log/mysql/ r,
/var/log/mysql/* rw,
/var/run/mysqld/mysqld*.pid w,
/var/run/mysqld/mysqld*.sock w,
/run/mysqld/mysqld*.pid w,
/run/mysqld/mysqld*.sock w,
修改完毕,重新载入AppArmor
$sudo /etc/init.d/apparmor reload
初始化新实例
创建新的数据存放目录,并设置MySQL的root用户密码
$sudo mysql_install_db --defaults-file=/etc/mysql/my3309.cnf --datadir=/var/lib/mysql3309 #初始化新数据目录
$sudo mysqld --defaults-file=/etc/mysql/my3309.cnf & #启动新实例
$sudo mysqladmin -S /var/run/mysqld/mysqld3309.sock -u root password '3309' #设置root用户密码为3309
添加启动脚本
$sudo touch /usr/bin/mysql3309.sh
$sudo chmod +x /usr/bin/mysql3309.sh
$sudo vim /usr/bin/mysql3309.sh
贴入以下内容
#!/bin/sh
case $1 in
start)
echo start mysql3309
mysqld --defaults-file=/etc/mysql/my3309.cnf >/dev/null 2>&1 &
exit 0;
;;
stop)
PID=`cat /var/run/mysqld/mysqld3309.pid`
kill -9 $PID
echo stop
;;
restart)
$0 stop
$0 start
;;
*)
echo "Usage:"$0" {start|stop|restart}"
;;
esac
启动,关闭,重启新实例时,使用以下命令
$sudo mysql3309.sh start #启动
$sudo mysql3309.sh stop #关闭
$sudo mysql3309.sh restart #重启
还不快抢沙发