我正在尝试找到一种方法来将我的实际 MySQL 5.5 数据库保留在我的 Ubuntu 服务器(用于 Apache2 中的大多数网站)上,并在同一台服务器上安装另一个 MySQL 8.0 实例(用于其他一些网站)。
我在网上看到 Docker 是个好主意,所以我可以在 docker 上安装 MySQL 8.0。但我不知道这是否是最好的选择,因为我实际上不了解 docker。
所以我想问你,你认为运行 docker 是最好的计划吗?如果不是,你有什么更好的主意吗?
我有点担心在 docker 上安装时 docker 可能会覆盖我的 5.5 版本......
我还发现了 dbdeployer 选项,但它似乎是同一种东西。
感谢您的帮助!
答案1
在 docker 上运行 MySQL 是一种安全的方法,可以实现您想要的操作,它不会对您现有的 MySQL 实例造成任何影响。
您可以在 Docker 实例中的不同端口上运行 MySQL 8.0。
你可以这样做
执行时docker run
,您可以将其传递给命令,将容器内的 3306 端口重新映射到 3307,以便您的应用程序可以连接到 MySQL 8.0 实例。
docker run --name=mysql1 -d mysql/mysql-server:tag -p 3307:3306
如此处所述
如果要优化 mysql 安装,您还可以选择从本地数据目录和您创建的本地 my.cnf 文件运行 MySQL 8.0,看这里。
注意:不要使用当前 MySQL 5.5 的数据目录 使用(默认为 /var/lib/mysql) 为 MySQL 8.0 数据目录创建一个新目录并创建新的 my.cnf 文件。
您也可以尝试 Rinzwind 建议的方式,这也是一个很好的运行方法。
希望这可以帮助。
答案2
所以我问你,你认为运行 docker 是最好的计划吗?
不
如果没有,您有更好的想法吗?
使用被认为是执行此操作的方法的通用想法:基本上,您在不同的目录中安装您需要的每个版本的 mysql,并且由于我们正在谈论第三方安装,因此我会选择这样做,因为/opt/
这是此类安装的预期目标。
对于 mysql 来说
/opt/mysql-5.5
/opt/mysql-5.5.1
/opt/mysql-5.6
/opt/mysql-8.0
您在这些目录内创建所有配置(因此my.cnf
在这些目录内,每个安装有 1 个;如果您想同时运行它们,则每个 mysql 实例需要一个套接字和一个端口)。
通过版本目录中二进制文件的符号链接,/opt/mysql
您还可以在不同版本之间切换。
不过,实现这一点的方法更复杂。例如Percona 网站他们在哪里使用/opt/
手动安装或开放方舟他们在哪里使用/usr/local/
(尽管它没有使用,但我也喜欢这种方法/opt
)。