答案1
我相信这就像mysqld_multi
正确运行和设置 my.cnf 一样简单。mysqld_multi
是 mysql 分发的一部分 - 而不是打包的装饰。
有补丁使其/usr/share/mysql/mysqld_multi.server
适合于使用/etc/init.d
和另一个补丁使用mysqld_multi
中的文件/etc/mysql/conf.d
。
mysql_install_db
您可以使用以下命令为新实例初始化 MySQL 数据目录:
mysql_install_db --datadir=/var/lib/mysql2
不要忘记更改新创建实例的 root 密码:
mysqladmin --port 3307 --user=root password 'new-password'
答案2
在 Debian 8 上,您可以使用 Systemd 机制:不再需要mysqld_multi
。
笔记:我使用 MariaDB 版本!不确定它是否适用于“经典”MySQL 包。
从:/lib/systemd/system/[email protected]
mariadb 的多实例版本。适用于您同时运行多个版本的情况。也用于 mariadb@bootstrap 来引导 Galera。
创建配置文件 /etc/mysql/conf.d/我的{实例名称}.cnf
以 systemctl start mariadb@{instancename}.server 身份启动
因此,创建一个文件/etc/mysql/conf.d/myserver2.cnf
,并在其中指定新的 pid/socket/datadir 文件和网络端口:
[mysqld]
user = mysql
pid-file = /var/run/mysqld/mysqld-server2.pid
socket = /var/run/mysqld/mysqld-server2.sock
port = 3307
basedir = /usr
datadir = /var/lib/mysql-server2
tmpdir = /tmp
编辑:请注意,第一个 MySQL 实例不会读取此配置文件,在!includedir /etc/mysql/conf.d/*
的底部有/etc/mysql/my.cnf
。如果是这种情况,请将myserver2.cnf 以外的每个配置文件的替换!includedir
为:!include
#!includedir /etc/mysql/conf.d/*
!include /etc/mysql/conf.d/conf1.cnf
!include /etc/mysql/conf.d/confX.cnf
MySQL 官方文档指出你必须命名[mysqld]
为[mysqld@server2]
(https://dev.mysql.com/doc/refman/5.7/en/using-systemd.html#systemd-multiple-mysql-instances) 但这不适用于 MariaDB。所以就让[mysqld]
。
在启动新的守护进程之前,不要忘记创建数据目录和所需的文件:
mkdir /var/lib/mysql-server2
chown mysql:mysql /var/lib/mysql-server2
mysql_install_db --datadir=/var/lib/mysql-server2
还重新加载 systemd 守护进程配置:
systemctl daemon-reload
如果您想在启动时启动该守护进程:
systemctl enable mariadb@server2
启动方法:
service mariadb@server2 start