尊敬的各位专业人士
我们在 FreeBSD 操作系统上创建 Mysql 实例时遇到严重问题。 这是我制作实例的进度:
1-在新目标上创建新数据库实例
mkdir /mysql2/mysql
mkdir /mysql2/mysql/data
mkdir /mysql2/mysql/log
mkdir /mysql2/mysql/run
mkdir /mysql2/mysql/lock
chown -R mysql:mysql /mysql2/mysql
/usr/local/libexec/mysqld --initialize --datadir= /mysql2/mysql/data --user= mysql2
但是在这个过程的开始,我遇到了一个错误,但我不知道如何解决它:
[Warning] Could not increase number of max_open_files to more than 28782 (request: 263271)
[Warning] Changed limits: table_open_cache: 14310 (requested 131555)
[Warning] Ignoring user change to '' because the user was set to 'mysql' earlier on the command line
[ERROR] --initialize specified but the data directory has files in it. Aborting.
[ERROR] Aborting
FreeBSD 10.3 Mysql57-server-5.7.20_1
我们想知道是否有人可以帮助我们解决这个问题
最佳答案
拥有多个 MySQL 实例的一种方法是使用 jails这样你就可以像往常一样安装包,继承更多的安全性。
一个简单的方法是使用 ZFS 获取图像+ 为此你可以使用 jail fabrik.red无论如何,这是在当前系统中创建 jail 的基本步骤,您可以在这里找到更多信息:https://www.freebsd.org/doc/handbook/jails-build.html
在此示例中, jail 将位于 home/jail/mysql1
:
# mkdir -p /home/jail/mysql1
获取基本文件并将其解压到 jail 中:
# fetch ftp://ftp.freebsd.org/pub/FreeBSD/releases/amd64/amd64/10.3-RELEASE/base.txz -o /tmp/base.txz
# tar -xvf /tmp/base.txz -C /home/jail/mysql1
# fetch ftp://ftp.freebsd.org/pub/FreeBSD/releases/amd64/amd64/10.3-RELEASE/lib32.txz -o /tmp/lib32.txz
# tar -xvf /tmp/lib32.txz -C /home/jail/mysql1
创建/etc/rc.conf/
和/etc/resolv.conf
,在每个 jail 的家中,/etc/rc.conf
可以是这样的:
cron_flags="$cron_flags -J 60"
sendmail_enable="NONE"
对于 /etc/rc.conf
您可以复制主主机中的内容:
# cp /etc/resolv.conf /home/jail/mysql1/resolv.conf
# cp /etc/resolv.conf /home/jail/mysql1/resolv.conf
接下来创建一个/etc/jail.conf
:
exec.start = "/bin/sh /etc/rc";
exec.stop = "/bin/sh /etc/rc.shutdown";
exec.clean;
mount.devfs;
allow.raw_sockets;
securelevel=3;
host.hostname="$name.your.tld";
mysql1 {
ip4 = inherit;
path = "/home/jail/mysql1";
}
mysql2 {
ip4 = inherit;
path = "/home/jail/mysql2";
}
注意 ip4 = inherit
它将使您的 jail 使用主机上的相同网络,这样您就不必执行 NAT 或添加唯一的 IP,但正因为如此,您需要为每个 MySQL 实例使用不同的端口。
要启动 jail ,请执行以下操作:
# /etc/rc.d/jail start
要检查正在运行的 jail ,请输入 jls
这将打印类似的内容:
JID IP Address Hostname Path
1 mysql1.your.tld /home/jail/mysql1
2 mysql2.your.tld /home/jail/mysql2
使用 jexec
进入 jail ,例如,访问 jail 1:
# jexec 1
进入 jail 后,使用 pkg 安装您的软件包或端口。
关于mysql - FreeBSD 上的多个 MySQL 实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47036105/