在FreeBSD上部署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服務器進程。
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多實例。您可以使用不同的配置文件和端口連接到這些實例。