如何在 Linux 中使用 systemd 配置和管理多个 MySQL 实例

##

如何在 Linux 中使用 systemd 配置和管理多个 MySQL 实例

本博客介绍了如何为多个 MySQL 实例配置 systemd。通过使用 YUM 或 APT 进行 MySQL 软件包安装,可以轻松地使用 systemctl 管理 MySQL,但是当您从通用二进制文件安装时,您将如何管理它呢?

在这里,我们将从通用二进制文件配置多个 MySQL 实例,并使用 systemd 管理它们。

为什么同一服务器上需要多个实例?

我们会这样做,但为什么首先需要同一主机上的多个实例呢?为什么不在同一个实例上创建另一个数据库呢?在某些情况下,您将需要主机上有多个实例。

  1. 您可以将具有两个或三个实例的主机配置为源服务器的延迟副本,其中 SQL 延迟为 24 小时、12 小时和 6/3 小时。
  2. 备份测试。您可以在服务器上运行多个实例,以使用正确的版本和配置测试备份。
  3. 我们按功能/团队拆分数据库,让每个团队对其模式拥有完全的自主权,如果有人搞砸了,只会破坏他们的集群,而不是所有数据库。然而,较大的实例更经济,因为并非所有 MySQL 服务器总是需要最大资源。因此,您可以将多个 MySQL 服务器放在一台机器上,而不是在一个 MySQL 实例中放置多个数据库。更好的故障处理,类似的成本。但是,是的,不要将同一集群的所有节点放在同一主机上,而是在不同集群的同一主机上有多个节点。
  4. 在这种情况下(在非常大的分片部署中)用户将在每台服务器上安装多个 mysqld 以减少争用,即,他们在每台具有 4 个或 8 个 mysqld 的 2 插槽服务器上获得的性能比一台服务器更高。据我所知,Facebook 就是这样做的。

FB 的最初动机是由于不同的硬件代次,特别是在区域/数据中心之间。例如,较旧的数据中心可能拥有较小/功能较弱的机器,因此它们在每个主机上运行较少的 mysqld 以进行补偿。还有其他例外,例如需要专用机器的异常大的特殊情况分片。

也就是说,上面提到的其他性能动机确实发挥了作用,尤其是在多线程复制出现之前。我同意,在云和巨大闪存存储的现代时代,绝大多数公司永远不需要考虑在产品中这样做,但总有需要的机会。

安装MySQL

要安装和使用 MySQL 二进制发行版,命令序列如下所示:

yum install libaio1 libaio-dev numactl useradd -r -g mysql -s /bin/false mysql groupadd mysql cd /usr/local/ tar xvfz /root/Percona-Server-8.0.19-10-Linux.x86_64.ssl101.tar.gz ln -s /usr/local/Percona-Server-8.0.19-10-Linux.x86_64.ssl101/ mysql cd /data/ mkdir -p /data/mysql/{3306,3307}/data chown -R mysql:mysql /data chmod 750 -R /data/mysql/{3306,3307}/data