mysql - FreeBSD 上的多个 MySQL 实例

标签 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-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/

相关文章:

php - 使用列的值保存变量

mysql - 如何确定一个人是否在 SQL 中的特定日期注册

mysql - 选择前 X 行

c - 如何在 FreeBSD 中获取打开的 posix 共享内存段列表

java - FreeBSD 作为一个开发平台有多好?

php - 使用 PHP 存储 JSON 值

c++ - JNI 与 C++ 对象实例

java - 为类创建实例?

c# - 为什么 C# 编译器在使用 LINQ 方法 Any() 时创建私有(private) DisplayClass,我该如何避免?

audio - 有哪些代码库可提取适合商业用途的音频CD?