最近在玩glusterfs。
我想尝试在 glusterfs 上运行 mysqld,方式与运行DRBD 上的 MySQL。
我熟悉 MySQL 复制以及使用该方法代替这种方法的优势,并且我也了解 MongoDB 和其他 NoSQL 解决方案。
然而,如果我可以保留 MySQL 原样并复制底层文件系统,那么对于我即将开展的几个特定项目来说,这将是一个简单的解决方案。
这是可能的吗?如果可以的话我可以在哪里找到方法?
答案1
由于很长时间没有答复,我通过反复试验才找到答案。
答案是:是的,我可以在 glusterfs 上运行 mysqld。
我在 Ubuntu 上进行了设置,简要步骤如下:
- 安装 Ubuntu
- 安装并配置 glusterfs
- 安装 mysql-server
- 配置 /etc/mysql/my.cnf 来设置数据目录/mnt/glusterfs 而不是 /var/lib/mysql
- 设置数据库
- 配置安普允许上述操作工作(或禁用 appamor )
真正的问题在于 MySQL 如何处理锁。
但是,您可以将所有这些交给 glusterfs 来处理,以便许多 mysqld 进程(在不同的节点上运行)可以访问 /mnt/glusterfs 上的相同数据库文件。你需要仔细阅读。
答案2
理论上可以。但在实践中,尤其是考虑到性能,Gluster 手册建议不要将其用于复制 DB 文件或其他细粒度 I/O 系统。
在这里查看 Gluster 官方概述:
Gluster 适合我吗?我需要它做什么?
... 另一方面,在组合中添加足够多的 Gluster 服务器后,由于该技术的横向扩展特性,一些人发现我们的性能优于其他解决方案 - Gluster 不支持所谓的“结构化数据”,即实时 SQL 数据库。当然,使用 Gluster 备份和恢复数据库是没问题的 - Gluster 传统上在使用至少 16KB 的文件大小时效果更好(最佳点在 128KB 左右)。
再次,如果您想要 MySQL 复制,我建议:
使用传统的 MySQL 主/从复制 https://dev.mysql.com/doc/refman/5.7/en/replication.html
使用 Codership Galera 集群,该集群现已在所有版本的 MySQL 中实现,例如 Oracle MySQL 或 MariaDB
答案3
在 K8 集群上尝试了此操作。MySQL 在容器内运行,GlusterFS 直接安装在节点上(非容器化)。MySQL 容器具有亲和性设置,始终在与 GFS 相同的节点上运行,使用 K8 的原生 GFS 卷驱动程序安装卷。
即使启用了 NGINX FastCGI (PHP-FPM) 缓存,WordPress 网站仍会遇到随机高延迟。切换到 MySQL 容器的 hostPath 卷后,延迟问题便消失了。
答案4
我不知道您为什么要从不同的 MySQL 服务器进程访问相同的数据库文件,但如果原因是性能,您应该看看 Galera。
http://www.codership.com/content/using-galera-cluster
集成在 Maria DB 和 Percona XTRA DB 集群中