在FreeBSD上部署MySQL多实例,可以通过以下步骤来完成:
- 安装MySQL
首先,确保已经安装了MySQL。如果没有,请使用以下命令安装:
pkg install mysql80-server
- 创建数据目录和配置文件
为每个实例创建一个单独的数据目录和配置文件。例如,我们将创建两个实例,分别为instance1
和instance2
。
mkdir -p /data/mysql/instance1/{data,log} mkdir -p /data/mysql/instance2/{data,log}
接下来,为每个实例创建一个配置文件。这些文件通常位于/usr/local/etc/
目录下,并且以.cnf
结尾。
touch /usr/local/etc/my.instance1.cnf touch /usr/local/etc/my.instance2.cnf
编辑这些文件,添加以下内容(根据需要进行修改):
my.instance1.cnf
:
[mysqld] datadir=/data/mysql/instance1/data socket=/tmp/mysql_instance1.sock port=3307 log-error=/data/mysql/instance1/log/error.log pid-file=/var/run/mysql_instance1.pid
my.instance2.cnf
:
[mysqld] datadir=/data/mysql/instance2/data socket=/tmp/mysql_instance2.sock port=3308 log-error=/data/mysql/instance2/log/error.log pid-file=/var/run/mysql_instance2.pid
- 初始化数据目录
对于每个实例,使用mysqld
命令初始化数据目录。这将创建系统表和其他必要的文件。
mysqld --defaults-file=/usr/local/etc/my.instance1.cnf --initialize-insecure mysqld --defaults-file=/usr/local/etc/my.instance2.cnf --initialize-insecure
- 创建MySQL用户和组
为每个实例创建一个单独的用户和组。这些用户将运行MySQL服务器进程。
pw groupadd mysql_instance1 pw useradd -n mysql_instance1 -g mysql_instance1 -d /nonexistent -s /bin/false pw groupadd mysql_instance2 pw useradd -n mysql_instance2 -g mysql_instance2 -d /nonexistent -s /bin/false
- 更改数据目录的所有权
将每个数据目录的所有权更改为相应的MySQL用户。
chown -R mysql_instance1:mysql_instance1 /data/mysql/instance1 chown -R mysql_instance2:mysql_instance2 /data/mysql/instance2
- 创建启动脚本
为每个实例创建一个启动脚本。这些脚本将在系统启动时自动启动MySQL服务器。
/usr/local/etc/rc.d/mysql_instance1
:
#!/bin/sh # PROVIDE: mysql_instance1 # REQUIRE: DAEMON # KEYWORD: shutdown . /etc/rc.subr name="mysql_instance1" rcvar=${name}_enable command="/usr/local/libexec/mysqld" command_args="--defaults-file=/usr/local/etc/my.instance1.cnf" load_rc_config $name run_rc_command "$1"
/usr/local/etc/rc.d/mysql_instance2
:
#!/bin/sh # PROVIDE: mysql_instance2 # REQUIRE: DAEMON # KEYWORD: shutdown . /etc/rc.subr name="mysql_instance2" rcvar=${name}_enable command="/usr/local/libexec/mysqld" command_args="--defaults-file=/usr/local/etc/my.instance2.cnf" load_rc_config $name run_rc_command "$1"
为这些脚本添加可执行权限:
chmod +x /usr/local/etc/rc.d/mysql_instance1 chmod +x /usr/local/etc/rc.d/mysql_instance2
- 启动实例
现在,可以启动这些实例了。使用以下命令启动它们:
service mysql_instance1 start service mysql_instance2 start
要在系统启动时自动启动这些实例,请将以下内容添加到/etc/rc.conf
文件中:
mysql_instance1_enable="YES" mysql_instance2_enable="YES"
现在,您已经在FreeBSD上成功部署了MySQL多实例。您可以使用不同的配置文件和端口连接到这些实例。