在单个服务器上安装多个MySQL实例的“ Debian方法”是什么?


9

您知道在单个服务器上设置多个MySQL实例的任何“ Debian方法”吗?服务器将接收从多个远程数据库复制的数据。

我可以使用mysqlsandbox之类的脚本,但是我更喜欢使用Debian软件包,并且希望将来能够升级安装程序而不会带来太多麻烦。另一个解决方案是mysqlmanager-它可与MySQL 5.1一起使用,但已过时,并且不再与5.5一起发布。

那么,在一台Debian服务器上运行多个MySQL实例的“最佳实践”是什么?


如今,在这种情况下可以使用docker。
ALex_hha

Answers:


12

我相信这就像mysqld_multi正确地运行和设置my.cnf 一样简单。mysqld_multi是mysql发行版的一部分-不是打包的装饰。

一个补丁,使/usr/share/mysql/mysqld_multi.server适合于使用/etc/init.d其他补丁,使mysqld_multi正在使用的文件/etc/mysql/conf.d

您可以使用以下mysql_install_db命令为新实例初始化MySQL数据目录:

mysql_install_db --datadir=/var/lib/mysql2

不要忘记更改新创建实例的根密码:

mysqladmin --port 3307 --user=root password 'new-password'

谢谢; 你在实践中使用它吗?有恐怖故事/提示吗?
pQd 2012年

1
我最恐怖的故事是由于Debian的mysql初始化脚本没有正常关闭mysql,因为关闭花费了太长时间,因此长达2天的数据恢复。从那时起,我不再使用debian mysql软件包,只使用Percona的二进制发行版和其中的initscript
Gabor Vincze 2012年

@GaborVincze-是在mysqld_multi设置中还是“常规”单mysql实例安装中?
pQd 2012年

这是常规安装。5.1
Gabor Vincze 2012年

1
我在实践中确实使用mysqld_multi。最难的部分是,您必须使用mysqld_multi / mysqladmin来启动/关闭实例,而使用/etc/init.d/mysqld重新启动-并没有那么多的预先编写好的脚本可以使操作变得容易。一旦掌握了它,它就会变成旧帽子,并且是启动实例的非常方便的方法,例如恢复,延迟复制-等等。
Thinice 2012年

3

在Debian 8上,您可以使用Systemd机制:不再需要mysqld_multi

注意:我使用MariaDB版本!不知道它是否与“经典” MySQL包一起使用。

来自/lib/systemd/system/mariadb@.service

mariadb的多实例版本。因为如果您一次运行多个版本。也用于mariadb @ bootstrap引导Galera。

创建配置文件/etc/mysql/conf.d/ my {instancename} .cnf

以systemctl身份启动启动mariadb@{instancename}.server

因此,创建一个文件/etc/mysql/conf.d/myserver2.cnf,并在其中指定新的pid / socket / datadir文件和网络端口:

[mysqld]
user        = mysql
pid-file    = /var/run/mysqld/mysqld-server2.pid
socket      = /var/run/mysqld/mysqld-server2.sock
port        = 3307
basedir     = /usr
datadir     = /var/lib/mysql-server2
tmpdir      = /tmp

编辑:请注意,第一个MySQL实例不要读取此配置文件,!includedir /etc/mysql/conf.d/*位于的底部/etc/mysql/my.cnf。如果是这种情况,请!includedir使用!includemyserver2.cnf以外的每个配置文件替换一个:

#!includedir /etc/mysql/conf.d/*
!include /etc/mysql/conf.d/conf1.cnf
!include /etc/mysql/conf.d/confX.cnf

MySQL官方文档指示您必须命名[mysqld][mysqld@server2]https://dev.mysql.com/doc/refman/5.7/en/using-systemd.html#systemd-multiple-mysql-instances),但这不适用于MariaDB 。所以就让[mysqld]

在启动新守护程序之前,请不要忘记创建datadir和所需的文件:

mkdir /var/lib/mysql-server2
chown mysql:mysql /var/lib/mysql-server2
mysql_install_db --datadir=/var/lib/mysql-server2

还重新加载systemd守护程序配置:

systemctl daemon-reload

如果要在启动时启动此守护程序:

systemctl enable mariadb@server2

要启动它:

service mariadb@server2 start

主要的(非实例化)mysql读取/etc/my.cnf,这就是为什么。
迈克尔·汉普顿

我编辑了答案:实际上,似乎第一个实例确实使用读取了server2.cnf文件!includedir /etc/mysql/conf.d/*。为了提高安全性,我conf.d手动添加了每个文件
最糟糕的时间为
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.