我们的 ERP 系统使用内部 MySQL 5.5 服务器。
问题
- 事情进展缓慢,老板们也开始恼火
- 我们与基础设施服务提供商的 SLA 即将结束。
- 我们的小型开发团队需要接管数据库维护:
- 数据库集群
- 数据库备份
- 数据库崩溃恢复
不足之处:
- DB 未规范化
- DB 是 MyISAM(没有行级锁定,因此调用非常慢)
- 数据库为 228533.13 MB
- 我们的 ERP 软件是:
- PHP
- 巨大的
- 写得不好
- 没有数据库抽象层
- 业务逻辑嵌入在 SQL 中
按重要性排序的目标
- 消除对服务提供商的依赖
- 迁移至云或做好迁移准备
- 最大程度降低商业风险
- 使可维护
- 使快速
- 尽量减少开发团队的糟糕表现
我们能想到的方法
我们正在权衡以下利弊:
- 切换到 PostgreSQL
- 升级 MySQL
- 转向一些基于云的服务
- 寻找我们尚不知道的神奇解决方案
请求帮助
你们能评论一下吗?我们正处于调查阶段,希望在未来几年内做出正确的决定。
我们期待并鼓励大家对我们的困境开玩笑和嘲讽。^^
答案1
我的第一个建议是改进软件,但我猜你已经在做了,否则就不行了。我建议扩展。再添加 1 或 2 个服务器,更改几行代码,瞧,你就有 3 个主 MySQL 服务器了。
答案2
这是资源问题:领域知识(DBA、系统管理员)、金钱和时间。
由于您必须重构应用程序,请尝试外包数据库和服务器维护,至少在您有时间自己处理之前。使用云数据库提供商或购买新硬件并外包 DBA/sysadmin。
由于数据库速度较慢,强力修复需要使用 SSD 磁盘和更多 RAM。
PHP 版本是 7.2+ 吗?最新版本的性能有显著的提升。
在 PHP 应用程序中使用缓存,例如 memcache。
最后,找到瓶颈。
数据库写入?更快的磁盘,InnoDB 还是 Postgres
DB 读取?索引、重写查询、缓存结果
数据库临时表?为数据库添加 RAM
SQL 查询速度慢?重写它,添加索引
CPU?PHP升级,重写SQL查询,更强大的服务器