FreeBSD上有多个MySQL实例

时间:2017-10-31 13:00:47

标签: mysql instance freebsd bsd

亲爱的所有专业人士

我们在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 - 服务器 - 5.7.20_1

我们想知道是否有人可以帮我们处理这个问题

1 个答案:

答案 0 :(得分:0)

拥有多个MySQL实例的一种方法是使用jails,这样你就可以像往常一样安装包,继承更多的安全性。

一个简单的方法是使用ZFS + jails来获取图像,你可以使用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/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实例使用不同的端口

启动jails:

# /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 1:

# jexec 1

进入jail后,使用pkg或ports。

安装软件包