问题标签 [mysql-cluster]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
mysql - 随机主键是 MySQL Cluster 的陷阱吗?
我知道 InnoDB 引擎的存储机制(索引布局等)严重依赖主键,因此使用非顺序主键(比如随机 15 位整数)是一个坏主意,因为它会导致频繁(不是说系统地)重建主键的 BTree,从而以指数方式减慢表上的插入。
我正在考虑建立一个 MySQL 集群来托管我的应用程序数据库,该数据库需要支持写入密集型负载(每天大约 2M 操作的大约 40% 写入)。鉴于 NDB 记录使用主键散列在集群节点之间分配记录,我想知道这个限制是否也适用于这个引擎。
我的第一个猜测是相反,随机性将有助于均匀分布数据,但我无法找到关于此的精确信息。那么,有人对这件事有见解吗?
mysql - 带有日志文件的 MySQL 集群转储
这是我在 MySQL 集群中遇到的一个问题,希望你们中的一个人有答案,因为它看起来很明显。
我正在生成我们的 MySQL 集群数据库的转储文件,其中当然包括 CREATE LOGFILE GROUP / CREATE TABLESPACE 命令。似乎没有任何办法可以做这两件事中的任何一件:
1)理想情况下,为日志文件/表空间创建包含...“DROP LOGFILE GROUP IF EXISTS”的某些版本的转储文件,以便我可以将它们导入现有数据库并覆盖数据,而不会在第 22 行产生“错误 1528 (HY000)”:未能创建 LOGFILE GROUP' 错误。
就目前而言,我所能做的就是有一个脚本在导入之前从转储文件中删除日志文件的创建,这不是很好,因为我的数据库已经有了这些。
2)否则,如果有一个单独的语法可以在没有创建日志文件/表空间的情况下生成转储文件,那也可以。
似乎日志文件/表空间应该存在 DROP IF EXISTS 语法,但似乎没有,除非我遗漏了一些东西。
我非常感谢您对此的任何帮助。
问候,约翰。
mysql - MySQL 集群中的远程数据节点启动问题
我正在使用 MySql Cluster 并遇到不常见配置的问题。大多数教程描述了数据节点和 MySQL 服务器节点驻留在同一台 PC 上的配置。但我试图将管理节点和 MySQL 服务器节点放到 PC 'A' 和数据节点到 PC 'B'。不幸的是,当我尝试运行数据节点 ndbd.exe 时,它立即关闭并在 Windows 事件查看器中留下以下消息:“无法分配节点 ID,错误:'错误:无法在 pcA.ip.address 端口 1186 分配节点 ID : 从错误的主机 ip pcB.ip.address' 完成连接。 "。
我的配置文件如下:
PC 'A' config.ini:
mysqld 在 PC 'A' 上使用的 my.cnf:
PC 'B' 上的 my.cnf:
有人可以说上面这些文件有什么问题吗?正如我所说,我找不到此类集群配置的教程。
提前致谢。
mysql - MySQL集群配置
我已经安装了 MySQL 集群(NDB 7.3)
- 1个管理节点
- 4个数据节点
- 3个sql节点。
我有 4 个分区和两个节点组。我有几个问题。
我可以单独查看存储在每个数据节点中的数据吗?
我在哪里可以找到数据同步日志?
是否可以有两个具有相同数据的节点组,即分区数据被拆分并存储在节点组之间?
告诉我是否有办法在节点组之间存储相同的数据,目前如果节点组(2 个节点出现故障),我的集群将无法工作。
当一个节点组宕机时,其他节点重启,整个集群宕机。有没有办法阻止它并与其他节点组一起操作。
php - How to scale a web application
My basic question is: How to start building a web application that could grow fast?
A little background: A customer of me is asking for an offer for a web application. I can not go into details but it's an e-commerce and crowd funding kind of thing. So he wants to spend some money and expects a site that can grow unlimited.
I plan to build it with Zend Framework 2 and MySql. My problem is that I have no experience with large scale web apps. I read everywhere: No problem, just start the project and if it grows to large then you can react on it and add caching, clustering etc.
But is this really true, or do I have to add some scalability mechanisms from the start? Cloud servers (Amazon EC2) for example have a different approach for the file system. Is it possible to switch later? Or what about load balancing? I get problems with session handling, or not? And what about MySql? Or better start directly with a NoSql approach?
So my current plan is:
- Step 1: Build the web application normally with ZF2 and MySql.
- Step 2: Add caching like memcache and opcode
- Step 3: MySql cluster or NoSql or load balancing or cloud server??
UPDATE:
Ok, I know that my question is a little too broad. So I try to track it down to a few specific questions:
- Better start directly with a cloud server?
- Can a cloud server grow unlimited?
mysql - MySQL 集群数据节点在其孪生失败时重新启动
配置:
- 服务器#1:1 mgm 节点(#49),1 个数据节点(#1),1 个 sql 节点(真实 IP 192.168.1.128)
- 服务器#2:1 mgm 节点(#50),1 个数据节点(#2),1 个 sql 节点(真实 IP 192.168.1.130)
- 虚拟IP:192.168.1.240(使用keepalived,服务器#1作为master)
规格:
- MySQL 集群 7.3.6 x86_64
- Debian 7.6 x86_64
它是使用 MySQL Cluster Auto-Installer 部署的。每件事都很好。
但是,当我关闭一个节点时,另一台服务器上的数据节点会重新启动。NDB_MGM 显示它正在“开始”。退出“开始”状态需要很长时间。
正如我测试的那样,当有四个节点时它不会发生。
有谁知道这次重启的原因是什么?
提前致谢。
更新:配置文件和命令行参数
1. NDB_MGMD #50 的配置文件
2. NDB_MGMD #50 的配置文件
命令行参数:
1. 在服务器 #1 上启动 ndb_mgmd
2. 在服务器 #2 上启动 ndb_mgmd
3. 在服务器 #1 上启动 ndbmtd
4. 在服务器 #2 上启动 ndbmtd
mariadb - 同步与异步集群
我正在阅读 Galera Cluster 上的 mariaDD 知识库,我遇到了这个:
同步复制和异步复制的基本区别在于,“同步”保证如果更改发生在集群的一个节点上,它们会“同步”或同时发生在其他节点上。“异步”不保证在“主”节点上应用更改与将更改传播到“从”节点之间的延迟。延迟可以很短也可以很长。这也意味着如果主节点崩溃,一些最新的更改可能会丢失
最后一句话,我一直明白,即使在异步集群设置中从属设备上的更新不是同时执行的,它也会在主设备上进行更新时将这些更新记录到一个 bin 日志文件中。因此,如果主服务器在所有数据传递到从服务器之前崩溃,则当主服务器恢复时,更新仍然会继续进行,因为 bin 日志文件记录了更新。有人可以告诉我我的理解是否错误,并请为我澄清此事。谢谢。
mysql - 使用 2 个 mysqld(API) 的 Mysql 集群每次访问会产生不同的表
我正在运行一个具有 4 个数据节点和 2 个服务器的 mysql 集群,每个服务器上都有一个访问(API)和管理节点。
如果我使用 API 节点 1 创建一个表,如果我尝试在 API 节点 2 上访问它,它会显示为不存在。任何人都可以解释这是为什么或如何更正它。在 2 个单独的服务器上运行 2 个 API 节点的目的是为了冗余。
请参阅下面的 SHOW 配置(我已删除我的 ips):
如果您需要更多信息来回答,请询问,我会更新我的问题。
mysql - HAProxy 和 Mysql 集群拓扑
我已经在不同的主机上安装了带有 2 个数据节点、2 个 sqlnode 和一个管理服务器的 mysql 集群。此外,我还有 3 个不同的应用程序实例。
现在我想在 mysql 集群前安装 haproxy,但不确定拓扑。我在 google 上搜索过,但由于大多数示例使用 galera 集群等附加组件而更加困惑。我应该在不同的主机上安装 HAProxy 还是 HAProxy 必须与应用程序实例或 sqlnodes 在同一主机上?我读到每个人在他们引入的延迟方面都有优点和缺点,但我想知道哪个更被接受和使用?或任何参考或教程?(应用程序是用php编写的,顺便在centos 6 32bit上运行)
java - “无法获取表元数据”“从 NDBCLUSTER 收到错误 157‘未知错误代码’”
我正在开发一个 java web 应用程序,我使用 MySQL Cluster for Database
当我尝试在 Jboss 服务器中安装应用程序时出现此错误
.... org.hibernate.exception.GenericJDBCException:无法获取表元数据:MY_TABLE_NAME ....原因:java.sql.SQLException:从 NDBCLUSTER 收到错误 157“未知错误代码”
环境信息:
- 产品环境
- jbos eap 6.2
- 具有 2 个数据节点的 mysql 集群
- jboss 数据源 URL:jdbc:mysql:loadbalance://<ip-1>,<ip-2>/BASE_NAME?loadBalanceBlacklistTimeout=5000