AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / dba / 问题

问题[ndbcluster](dba)

Martin Hope
Rait
Asked: 2022-01-15 06:22:52 +0800 CST

MySql NDB 集群大事务

  • 0

我知道使用 NDB 你不能做大的事务,如果你做数据节点可以重新启动到只读模式和损坏的表。

我需要将记录复制到一个新表中,但问题是该表在暂存中包含数百万行,实时服务器甚至是该数量的 10 倍。

我怎样才能将我的副本分成更小的事务,这样我就不会杀死我的服务器?

mysql ndbcluster
  • 2 个回答
  • 56 Views
Martin Hope
Evan Carroll
Asked: 2018-04-14 20:02:44 +0800 CST

SPJ 在 MySQL 中代表什么?

  • 1

MySQL 在 MySQL 中有很多对SPJ 的引用,包括在官方 Oracle 幻灯片中,但我找不到它实际代表什么。我也看到它出现在一些博客中。

我查看了源代码,但一无所获。

SPJ 代表什么?

mysql ndbcluster
  • 1 个回答
  • 242 Views
Martin Hope
digitalformula
Asked: 2018-03-05 23:07:46 +0800 CST

无法使用 ndb_desc 连接到 MySQL NDB 管理器

  • 2

我有一个基本的 MySQL NDB 集群正在运行——它运行良好。Manager、Data、SQL节点都OK。1 个管理器,2 个 SQL 节点,4 个数据节点。2 个数据节点来自初始创建,2 个是我要添加的节点。

在环境方面,这就是我所拥有的(适用于所有节点)。

OS: CentOS 7
SELinux: disabled
firewalld : not installed
MySQL version: mysql-5.6.28
NDB: ndb-7.4.10

配置视图如下所示:

[root@mysql-ndb-manager ~]# ndb_mgm -e "SHOW"
Connected to Management Server at: localhost:1186
Cluster Configuration
---------------------
[ndbd(NDB)] 4 node(s)
id=2    @10.133.16.108  (mysql-5.6.28 ndb-7.4.10, Nodegroup: 0, *)
id=3    @10.133.16.196  (mysql-5.6.28 ndb-7.4.10, Nodegroup: 0)
id=6    @10.133.16.121  (mysql-5.6.28 ndb-7.4.10, Nodegroup: 1)
id=7    @10.133.16.112  (mysql-5.6.28 ndb-7.4.10, Nodegroup: 1)

[ndb_mgmd(MGM)] 1 node(s)
id=1    @10.133.16.179  (mysql-5.6.28 ndb-7.4.10)

[mysqld(API)]   3 node(s)
id=4    @10.133.16.117  (mysql-5.6.28 ndb-7.4.10)
id=5    @10.133.16.180  (mysql-5.6.28 ndb-7.4.10)
id=8 (not connected, accepting connect from any host)

NoOfReplicas 设置为 2,所以这个节点数应该没问题。我很快意识到将 NoOfReplicas 设置为 2 意味着添加一个额外的数据节点不起作用。

如您所见,我有一个可用的节点 ID (8),可以分配给 ndb_desc 等。

我要添加的新节点:

IDs: 6 & 7

据我所知,它们配置正确,但没有关于它们的数据。它们已正确启动并被列为集群的一部分。这是重新分配过程对我不起作用。

这些文档非常容易理解,即它们需要使用 ndb_desc 连接到管理器并更改表结构,以便将数据分发到新节点。

当我运行所需的命令时,我得到这个:

[root@mysql-ndb-manager ~]# ndb_desc -c 10.133.16.179:1186 my_table -d 
appdb -p --ndb-nodeid=8
Unable to connect to management server.

NDBT_ProgramExit: 1 - Failed```

我见过其他人有类似的问题,而且几乎总是缺少可以分配的节点 ID。据我所知,我的情况并非如此。

我试过连接管理员的 IP 地址,localhost,127.0.0.1。
我试过本地和远程。我试过使用文档中的确切命令,即它们的数据库和表名,但这不起作用(我猜是预期的)。

我现在唯一的数据如下:

Database: `appdb`
Table: `my_table` (ID auto_increment and `name` char(25))
Data: 14 rows, random names

数据在旧/工作节点之间毫无问题地复制,即我可以在其中一个节点上创建数据库或运行任何 SQL 命令,并且更改会立即反映在另一个节点上。离线节点按预期显示为离线,并在我将它们重新启动时显示为在线。

我还有一个滚动重启脚本,它可以正常工作,所以看起来集群方面没问题。

最后,这是我经理的配置文件:

[ndb_mgmd default]
DataDir=/var/lib/mysql-cluster

[mgm]
HostName=10.133.16.179

[ndbd default]
NoOfReplicas=2
DataMemory=256M
IndexMemory=128M
DataDir=/var/lib/mysql-cluster

[ndbd]
HostName=10.133.16.108

[ndbd]
HostName=10.133.16.196

[mysqld]
HostName=10.133.16.117

[mysqld]
HostName=10.133.16.180

[ndbd]
HostName=10.133.16.121

[ndbd]
HostName=10.133.16.112

[mysqld]

还有什么可能导致这个?

谢谢!

mysql ndbcluster
  • 1 个回答
  • 568 Views
Martin Hope
McJagger
Asked: 2017-12-07 23:11:09 +0800 CST

如何将 MySQL Cluster (NDB) 备份迁移到不同的 ndb 集群?

  • 0

我有两个 MySQL 集群 (NDB),Prod 和 Dev。每个集群包含 SQL 节点、管理节点和数据节点。使用以下文章在一个集群上完成备份:

https://dev.mysql.com/doc/refman/5.7/en/mysql-cluster-backup-using-management-client.html

如何将创建的备份文件导入到单独的MySQL Cluster中?即使用产品数据刷新开发集群。

备份似乎与创建它的集群相关联。有没有办法使用备份文件在单独的集群上进行“恢复”?

mysql-cluster ndbcluster
  • 2 个回答
  • 682 Views
Martin Hope
huksha
Asked: 2017-10-03 00:39:45 +0800 CST

MySQL Cluster 7.3 - NDB 引擎 - 无法连接到存储引擎

  • 1

设置

我已经安装了三个Oracle Linux 7.3。2 个用于数据节点,1 个用于管理和 SQL API 节点。机器可以互相 ping 通,SSH 工作,“etc/hosts”文件被正确填充:

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

172.16.1.101    mysqld_mgmt_1
172.16.1.103    mysql_data_1
172.16.1.104    mysql_data_2

管理节点在“/var/lib/mysql-cluster/config.ini”文件中有如下配置:

# Options affecting ndbd processes on all data nodes:
[NDBD DEFAULT]
NoOfReplicas=2                      # Number of replicas

[ndb_mgmd]
# Management process options:
hostname=mysqld_mgmt_1              # Hostname of the manager
datadir=/var/lib/mysql-cluster      # Directory for the log files

[ndbd]
hostname=mysql_data_1               # Hostname of the first data node
datadir=/var/lib/mysql-cluster      # Remote directory for the data files
ServerPort=50501

[ndbd]
hostname=mysql_data_2               # Hostname of the second data node
datadir=/var/lib/mysql-cluster      # Remote directory for the data files
ServerPort=50502

[mysqld]
# SQL node options:
hostname=mysqld_mgmt_1              # In our case the MySQL server/client is on the same Droplet as the cluster manager

SQL API 节点(与管理相同)在“/etc/my.cnf”文件中具有以下配置:

[mysqld]
ndbcluster                      # Run NDB storage engine
ndb-connectstring=172.16.1.101

[mysql_cluster]
ndb-connectstring=mysqld_mgmt_1 # IP address for server management node

两个数据节点在每个节点上都有相同的配置文件(“/etc/my.cnf”):

[mysqld]
ndbcluster
ndb-connectstring=172.16.1.101

[mysql_cluster]
ndb-connectstring=172.16.1.101     # IP address of Management Node 1

启动集群:

1. management:          ndb_mgmd -f /var/lib/mysql-cluster/config.ini
                        or with a new config to erase the cache:
                        ndb_mgmd --initial --config-file=/var/lib/mysql-cluster/config.ini
2. data node 1 and 2:   ndbd
3. mysql server:        service mysql start 

集群状态:

[root@mysqld-mgmt-1 ~]# ndb_mgm
-- NDB Cluster -- Management Client --
ndb_mgm> show
Connected to Management Server at: mysqld_mgmt_1:1186
Cluster Configuration
---------------------
[ndbd(NDB)]     2 node(s)
id=2    @172.16.1.103  (mysql-5.6.37 ndb-7.3.18, Nodegroup: 0, *)
id=3    @172.16.1.104  (mysql-5.6.37 ndb-7.3.18, Nodegroup: 0)

[ndb_mgmd(MGM)] 1 node(s)
id=1    @172.16.1.101  (mysql-5.6.37 ndb-7.3.18)

[mysqld(API)]   1 node(s)
id=4 (not connected, accepting connect from 172.16.1.101)

我可以从服务器节点上的命令行登录到 MySQL(以及从 MySQL Workbench 以及从另一个 VM):

[root@mysqld-mgmt-1 ~]# mysql -u root -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.6.37-ndb-7.3.18-cluster-gpl MySQL Cluster Community Server (GPL)

Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show engines;
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| Engine             | Support | Comment                                                        | Transactions | XA   | Savepoints |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| ndbcluster         | YES     | Clustered, fault-tolerant tables                               | YES          | NO   | NO         |
| MRG_MYISAM         | YES     | Collection of identical MyISAM tables                          | NO           | NO   | NO         |
| MyISAM             | YES     | MyISAM storage engine                                          | NO           | NO   | NO         |
| ndbinfo            | YES     | MySQL Cluster system information storage engine                | NO           | NO   | NO         |
| CSV                | YES     | CSV storage engine                                             | NO           | NO   | NO         |
| BLACKHOLE          | YES     | /dev/null storage engine (anything you write to it disappears) | NO           | NO   | NO         |
| ARCHIVE            | YES     | Archive storage engine                                         | NO           | NO   | NO         |
| FEDERATED          | NO      | Federated MySQL storage engine                                 | NULL         | NULL | NULL       |
| PERFORMANCE_SCHEMA | YES     | Performance Schema                                             | NO           | NO   | NO         |
| InnoDB             | DEFAULT | Supports transactions, row-level locking, and foreign keys     | YES          | YES  | YES        |
| MEMORY             | YES     | Hash based, stored in memory, useful for temporary tables      | NO           | NO   | NO         |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
11 rows in set (0.01 sec)

测试

我创建了一个没有“引擎”参数的示例表,只是为了尝试。我想更改表以使用 ndb 引擎,但我有以下问题:

mysql> use clusterdb;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed

mysql> select * from simples;
+----+
| id |
+----+
|  1 |
|  2 |
|  3 |
|  4 |
+----+
4 rows in set (0.00 sec)

mysql> alter table simples engine=ndb;
ERROR 157 (HY000): Could not connect to storage engine

mysql> show warnings;
+---------+------+---------------------------------------------------------------------------------+
| Level   | Code | Message                                                                         |
+---------+------+---------------------------------------------------------------------------------+
| Warning | 1296 | Got error 4009 'Cluster Failure' from NDB. Could not acquire global schema lock |
| Error   |  157 | Could not connect to storage engine                                             |
| Error   | 1499 | Too many partitions (including subpartitions) were defined                      |
+---------+------+---------------------------------------------------------------------------------+
3 rows in set (0.00 sec)

mysql> show global status like 'ndb_number_of%';
+--------------------------------+-------+
| Variable_name                  | Value |
+--------------------------------+-------+
| Ndb_number_of_data_nodes       | 2     |
| Ndb_number_of_ready_data_nodes | 0     |
+--------------------------------+-------+
2 rows in set (0.00 sec)

此外,使用“engine=ndb”参数创建表也会失败并给出相同的错误。我看到数据库可以与 InnoDB 引擎一起正常工作,但我需要一个容错(类似)数据库。

mysql-cluster ndbcluster
  • 1 个回答
  • 1571 Views
Martin Hope
Kae Verens
Asked: 2017-06-27 13:03:12 +0800 CST

MySQL Cluster 中的地理复制区域?

  • 0

在默认安装中,数据在所有数据节点之间不加选择地共享。

是否可以指定某些表只能跨一组特定的数据节点进行复制?

如果是这样,是否需要在这些节点上创建表,或者它们是否可以从其他节点迁移?

mysql-cluster ndbcluster
  • 1 个回答
  • 264 Views
Martin Hope
DavidK
Asked: 2016-07-02 00:40:43 +0800 CST

mysql NDB集群上的所有查询都很慢

  • 2

这是我的情况:

我得到了超过 10G 的网络日志(大约 3000 万行),我主要用各种条件搜索它。

例如:

select * from tbl 
where ip = '123.123.12.3' 
  and agent = 'mozillar' 
  and body like '%script%'

随着数据越来越大,一个简单的查询需要几分钟,所以我试图用 MySQL 集群创建一些分布式数据库。

我在 Google 云虚拟机上构建了 1 个管理服务器、1 个 SQL (api) 服务器和 4 个数据节点。每个实例有 2 个 CPU 和 8 GB。

问题:

当我尝试从 .sql 文件恢复数据时,每个插入语句几乎需要 2~3 秒!

3 秒 * 30m 行 = 永远!

选择查询也让我很失望,它比普通 InnoDB 花费了将近 100 倍的时间。

难道我做错了什么?

有没有更好的解决方案适合我的目的?

配置文件

[ndbd default]
NoOfReplicas=2    
DataMemory=5G    
IndexMemory=128M   
MaxNoOfConcurrentOperations=1000000
MaxNoOfLocalOperations=1100000
MaxNoOfConcurrentTransactions=327680
NoOfFragmentLogFiles=256
FragmentLogFileSize=32M
SharedGlobalMemory=512M
DiskPageBufferMemory=512M
DiskIoThreadPool=8

[ndb_mgmd]
NodeId=1
hostname=10.142.0.7
datadir=/var/lib/mysql-cluster/mgmt


[ndbd]
NodeId=11
hostname=10.142.0.8
datadir=/var/lib/mysql-cluster/data1
[ndbd]
NodeId=12
hostname=10.142.0.9
datadir=/var/lib/mysql-cluster/data2
[ndbd]
NodeId=13
hostname=10.142.0.10
datadir=/var/lib/mysql-cluster/data3
[ndbd]
NodeId=14
hostname=10.142.0.11
datadir=/var/lib/mysql-cluster/data4

[mysqld]
NodeId=100

所有节点都按预期连接到管理服务器

-- NDB Cluster -- Management Client --
ndb_mgm> show
Connected to Management Server at: localhost:1186
Cluster Configuration
---------------------
[ndbd(NDB)]     4 node(s)
id=11   @10.142.0.8  (mysql-5.6.29 ndb-7.4.11, Nodegroup: 0, *)
id=12   @10.142.0.9  (mysql-5.6.29 ndb-7.4.11, Nodegroup: 0)
id=13   @10.142.0.10  (mysql-5.6.29 ndb-7.4.11, Nodegroup: 1)
id=14   @10.142.0.11  (mysql-5.6.29 ndb-7.4.11, Nodegroup: 1)
[ndb_mgmd(MGM)] 1 node(s)
id=1    @10.142.0.7  (mysql-5.6.29 ndb-7.4.11)
[mysqld(API)]   1 node(s)
id=100  @10.142.0.2  (mysql-5.6.29 ndb-7.4.11)

附加信息:

    Create Table: CREATE TABLE `tbl` (
  `no` int(11) NOT NULL AUTO_INCREMENT,
  `rule_name` varchar(50) DEFAULT NULL,
  `ip` varchar(20) DEFAULT NULL,
  `detection_time` datetime NOT NULL,
  `uri` text,
  `site` varchar(500) DEFAULT NULL,
  `country` varchar(50) DEFAULT NULL,
  `body` text CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
  `detection_string` text,
  `detection_type` int(11) NOT NULL,
  `action` int(11) NOT NULL,
  `category` int(10) NOT NULL,
  PRIMARY KEY (`no`),
  KEY `no` (`no`),
  KEY `ip` (`ip`)
) ENGINE=InnoDB AUTO_INCREMENT=21682043 DEFAULT CHARSET=utf8
1 row in set (0.03 sec)
mysql ndbcluster
  • 1 个回答
  • 1526 Views
Martin Hope
Gpost
Asked: 2015-05-17 01:53:33 +0800 CST

Mysql Cluster Ndb Restore 违反了外键约束

  • 1

我正在尝试在从属集群上恢复 mysql 集群备份。

当我运行 ndb_restore 命令时,出现以下错误:

$ /usr/local/mysql/bin/ndb_restore -n 6 -b 15 -r ./6

Opening file './6/BACKUP-15.6.log'
File size 1210464 bytes
execute failed: 255: Foreign key constraint violated: No parent row found

NDBT_ProgramExit: 1 - Failed

我怎样才能跳过外键错误?

mysql-cluster ndbcluster
  • 1 个回答
  • 421 Views
Martin Hope
user2601966
Asked: 2013-12-11 10:30:01 +0800 CST

什么是 MySQL 集群中的 mysqld 进程?

  • 1

据我所知,mysqld 进程是 MySQl 集群的一种路由器。它将请求定向到正确的 ndbd 节点。

假设我在 3 台不同的机器上有 3 个 ndbd 节点并且我不使用复制。我需要多少个 mysqld 进程?我会说一个?对我来说,它就像一个主从架构(与 mongodb 相当)但我看到了每个 ndbd 节点也有一个 mysqld 进程的配置。为什么?

mysql ndbcluster
  • 2 个回答
  • 1669 Views
Martin Hope
Ajay Bhojak
Asked: 2013-04-16 22:06:52 +0800 CST

负载均衡 MySQL ndbcluster

  • 1

我已成功设置 ndbcluster 版本 7.1.26。这包含 2 个数据节点 [NDBD]、2 个 mysql [MYSQLD] 节点和一个管理 [MGMD] 节点。复制成功。我的 Web 应用程序部署在 JBoss-5.0.1 中,并使用 JNDI 连接资源,这些连接资源在应用程序特定的 ds.xml 文件中以负载平衡的 url 形式指定,例如 jbdc:mysql:loadbalance:host1:port1,host2:port2/databaseName。

host1 :指的是第一个 mysqld 节点,port1 指的是它运行的端口。host2 :指的是第二个 mysqld 节点,port2 指的是它运行的端口。

当两个 [MySQLD] 节点都启动并运行时,一切正常,集群响应良好,复制数据,数据检索操作也正常工作。

但是,当任何 [MySQLD] 节点出现故障时,就会出现问题。数据被插入/更新/复制,但应用程序无法从集群中检索数据,网页仍然忙于工作,这意味着忙于检索数据。一旦关闭的节点启动,它就会正确响应并且应用程序继续前进并显示从集群检索的数据。

在 JBoss 5.0.1 启动时,它在类 LoadBalancingConnectionProxy.invoke(LoadBalancingConnectionProxy.java:439) 中出现 NullPointerException。告诉我上述异常是否在上述解释的问题中起作用。

如果有人遇到过上述问题,并且对这些问题有任何解决方案,请告诉我。

谢谢并恭祝安康。

mysql ndbcluster
  • 1 个回答
  • 217 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve