18.5.10 ndbinfo MySQL Cluster 정보 데이터베이스
- 18.5.10.1 ndbinfo arbitrator_validity_detail 테이블
- 18.5.10.2 ndbinfo arbitrator_validity_summary 테이블
- 18.5.10.3 ndbinfo blocks 테이블
- 18.5.10.4 ndbinfo cluster_operations 테이블
- 18.5.10.5 ndbinfo cluster_transactions 테이블
- 18.5.10.6 ndbinfo config_params 테이블
- 18.5.10.7 ndbinfo counters 테이블
- 18.5.10.8 ndbinfo dict_obj_types 테이블
- 18.5.10.9 ndbinfo disk_write_speed_base 테이블
- 18.5.10.10 ndbinfo disk_write_speed_aggregate 테이블
- 18.5.10.11 ndbinfo disk_write_speed_aggregate_node 테이블
- 18.5.10.12 ndbinfo diskpagebuffer 테이블
- 18.5.10.13 ndbinfo logbuffers 테이블
- 18.5.10.14 ndbinfo logspaces 테이블
- 18.5.10.15 ndbinfo membership 테이블
- 18.5.10.16 ndbinfo memoryusage 테이블
- 18.5.10.17 ndbinfo memory_per_fragment 테이블
- 18.5.10.18 ndbinfo nodes 테이블
- 18.5.10.19 ndbinfo resources 테이블
- 18.5.10.20 ndbinfo server_operations 테이블
- 18.5.10.21 ndbinfo server_transactions 테이블
- 18.5.10.22 ndbinfo threadblocks 테이블
- 18.5.10.23 ndbinfo threadstat 테이블
- 18.5.10.24 ndbinfo transporters 테이블
ndbinfo
는 MySQL Cluster에 관련 정보를 저장하는 데이터베이스입니다.
이 데이터베이스는 많은 테이블을 저장하고 각 테이블은 MySQL Cluster 노드의 상태, 리소스 사용량 및 작업에 대한 다양한 데이터를 제공합니다. 다음의 여러 섹션에서 이러한 각 테이블에 대한 자세한 정보를 찾을 수 있습니다.
ndbinfo
는 MySQL Cluster 지원과 함께 MySQL 서버에 포함되어 있기 때문에 특별한 컴파일 및 구성 단계가 필요하지 않습니다. MySQL 서버가 클러스터에 연결하면 MySQL 서버에서 테이블이 작성됩니다. SHOW PLUGINS
을 사용하면 특정 MySQL 서버 인스턴스에서 ndbinfo
지원이 활성화되어 있는지를 확인할 수 있습니다. ndbinfo
지원이 활성화되어있는 경우, 다음 (강조 표시 한 텍스트)와 같이 Name
컬럼에 ndbinfo
가 포함되어 Status
열에 ACTIVE
가 포함 된 행이 표시됩니다.
mysql> SHOW PLUGINS;
+----------------------------------+--------+--------------------+---------+---------+
| Name | Status | Type | Library | License |
+----------------------------------+--------+--------------------+---------+---------+
| binlog | ACTIVE | STORAGE ENGINE | NULL | GPL |
| mysql_native_password | ACTIVE | AUTHENTICATION | NULL | GPL |
| mysql_old_password | ACTIVE | AUTHENTICATION | NULL | GPL |
| CSV | ACTIVE | STORAGE ENGINE | NULL | GPL |
| MEMORY | ACTIVE | STORAGE ENGINE | NULL | GPL |
| MRG_MYISAM | ACTIVE | STORAGE ENGINE | NULL | GPL |
| MyISAM | ACTIVE | STORAGE ENGINE | NULL | GPL |
| PERFORMANCE_SCHEMA | ACTIVE | STORAGE ENGINE | NULL | GPL |
| BLACKHOLE | ACTIVE | STORAGE ENGINE | NULL | GPL |
| ARCHIVE | ACTIVE | STORAGE ENGINE | NULL | GPL |
| ndbcluster | ACTIVE | STORAGE ENGINE | NULL | GPL |
| ndbinfo | ACTIVE | STORAGE ENGINE | NULL | GPL |
| ndb_transid_mysql_connection_map | ACTIVE | INFORMATION SCHEMA | NULL | GPL |
| InnoDB | ACTIVE | STORAGE ENGINE | NULL | GPL |
| INNODB_TRX | ACTIVE | INFORMATION SCHEMA | NULL | GPL |
| INNODB_LOCKS | ACTIVE | INFORMATION SCHEMA | NULL | GPL |
| INNODB_LOCK_WAITS | ACTIVE | INFORMATION SCHEMA | NULL | GPL |
| INNODB_CMP | ACTIVE | INFORMATION SCHEMA | NULL | GPL |
| INNODB_CMP_RESET | ACTIVE | INFORMATION SCHEMA | NULL | GPL |
| INNODB_CMPMEM | ACTIVE | INFORMATION SCHEMA | NULL | GPL |
| INNODB_CMPMEM_RESET | ACTIVE | INFORMATION SCHEMA | NULL | GPL |
| partition | ACTIVE | STORAGE ENGINE | NULL | GPL |
+----------------------------------+--------+--------------------+---------+---------+
22 rows in set (0.00 sec)
또한 다음 (강조 표시된 텍스트)와 같이 Engine
컬럼에 ndbinfo
가 포함되어 Support
컬럼에 YES
가 포함 된 행이 있는지에 대한 SHOW ENGINES
의 출력을 확인하여이를 수행 할 수 있습니다.
mysql> SHOW ENGINES\G
*************************** 1. row ***************************
Engine: ndbcluster
Support: YES
Comment: Clustered, fault-tolerant tables
Transactions: YES
XA: NO
Savepoints: NO
*************************** 2. row ***************************
Engine: MRG_MYISAM
Support: YES
Comment: Collection of identical MyISAM tables
Transactions: NO
XA: NO
Savepoints: NO
*************************** 3. row ***************************
Engine: ndbinfo
Support: YES
Comment: MySQL Cluster system information storage engine
Transactions: NO
XA: NO
Savepoints: NO
*************************** 4. row ***************************
Engine: CSV
Support: YES
Comment: CSV storage engine
Transactions: NO
XA: NO
Savepoints: NO
*************************** 5. row ***************************
Engine: MEMORY
Support: YES
Comment: Hash based, stored in memory, useful for temporary tables
Transactions: NO
XA: NO
Savepoints: NO
*************************** 6. row ***************************
Engine: FEDERATED
Support: NO
Comment: Federated MySQL storage engine
Transactions: NULL
XA: NULL
Savepoints: NULL
*************************** 7. row ***************************
Engine: ARCHIVE
Support: YES
Comment: Archive storage engine
Transactions: NO
XA: NO
Savepoints: NO
*************************** 8. row ***************************
Engine: InnoDB
Support: YES
Comment: Supports transactions, row-level locking, and foreign keys
Transactions: YES
XA: YES
Savepoints: YES
*************************** 9. row ***************************
Engine: MyISAM
Support: DEFAULT
Comment: Default engine as of MySQL 3.23 with great performance
Transactions: NO
XA: NO
Savepoints: NO
*************************** 10. row ***************************
Engine: BLACKHOLE
Support: YES
Comment: /dev/null storage engine (anything you write to it disappears)
Transactions: NO
XA: NO
Savepoints: NO
10 rows in set (0.00 sec)
ndbinfo
지원이 활성화되어 있다면, mysql과 다른 MySQL 클라이언트에서 SQL 문을 사용하여 ndbinfo
에 액세스 할 수 있습니다. 예를 들어, 다음과 같이, SHOW DATABASES
의 출력에 ndbinfo
가 나열됩니다.
mysql> SHOW DATABASES;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| ndbinfo |
| test |
+--------------------+
4 rows in set (0.00 sec)
--ndbcluster
옵션으로 mysqld 프로세스가 시작되지 않은 경우 ndbinfo
을 사용할 수 없으며, SHOW DATABASES
에 의해 표시되지 않습니다. 이전에 mysqld가 MySQL Cluster에 연결되었지만 (클러스터를 종료하거나 네트워크 연결 손실 등의 이벤트로 인해) 클러스터를 사용할 수 없게 된 경우 ndbinfo
및 그 테이블은 계속 표시되지만 ( blocks
또는 config_params
이외의) 테이블에 액세스하려고하면 다음 오류로 실패합니다 : Got error 157 'Connection to NDB failed'from NDBINFO
blocks
및 config_params
테이블을 제외하고 ndbinfo
"테이블"이라는 것은 실제로는 MySQL 서버에서 일반적으로 보이지 않는 내부 NDB
테이블에서 생성되는 뷰입니다.
ndbinfo
테이블은 읽기 전용이며, 쿼리를 실행할 때 요구에 따라 생성됩니다. 이러한 많은 데이터 노드가 병렬로 생성되지만 나머지는 특정 SQL 노드에 고유이기 때문에 일관된 스냅 샷을 제공하는 보장은 없습니다.
또한 ndbinfo
테이블에서는 조인 푸시 다운이 지원되지 않습니다. 따라서 쿼리에 WHERE
절을 사용하는 경우에도 큰 ndbinfo
테이블의 결합은 요청자의 API 노드에 대량의 데이터를 전송해야 할 수 있습니다.
쿼리 캐시에 ndbinfo
테이블이 포함되어 있지 않습니다. (Bug # 59831)
다른 데이터베이스의 경우와 마찬가지로 USE
문 ndbinfo
데이터베이스를 선택하고, SHOW TABLES
문을 실행하면 다음과 같은 테이블의 목록을 얻을 수 있습니다.
mysql>USE ndbinfo;
Database changed mysql>SHOW TABLES;
+---------------------------------+ | Tables_in_ndbinfo | +---------------------------------+ | arbitrator_validity_detail | | arbitrator_validity_summary | | blocks | | cluster_operations | | cluster_transactions | | config_params | | counters | | dict_obj_types | | disk_write_speed_aggregate | | disk_write_speed_aggregate_node | | disk_write_speed_base | | diskpagebuffer | | logbuffers | | logspaces | | membership | | memory_per_fragment | | memoryusage | | nodes | | operations_per_fragment | | resources | | restart_info | | server_operations | | server_transactions | | threadblocks | | threadstat | | transporters | +---------------------------------+ 26 rows in set (0.00 sec)
일반적인 예상대로이 테이블에 대해 SELECT
문을 실행할 수 있습니다.
mysql> SELECT * FROM memoryusage;
+---------+---------------------+--------+------------+------------+-------------+
| node_id | memory_type | used | used_pages | total | total_pages |
+---------+---------------------+--------+------------+------------+-------------+
| 5 | Data memory | 753664 | 23 | 1073741824 | 32768 |
| 5 | Index memory | 163840 | 20 | 1074003968 | 131104 |
| 5 | Long message buffer | 2304 | 9 | 67108864 | 262144 |
| 6 | Data memory | 753664 | 23 | 1073741824 | 32768 |
| 6 | Index memory | 163840 | 20 | 1074003968 | 131104 |
| 6 | Long message buffer | 2304 | 9 | 67108864 | 262144 |
+---------+---------------------+--------+------------+------------+-------------+
6 rows in set (0.02 sec)
memoryusage
테이블을 사용하는 두 개의 SELECT
문 같은 더 복잡한 쿼리를 실행할 수 있습니다.
mysql>SELECT SUM(used) as 'Data Memory Used, All Nodes'
>FROM memoryusage
>WHERE memory_type = 'Data memory';
+-----------------------------+ | Data Memory Used, All Nodes | +-----------------------------+ | 6460 | +-----------------------------+ 1 row in set (0.37 sec) mysql>SELECT SUM(max) as 'Total IndexMemory Available'
>FROM memoryusage
>WHERE memory_type = 'Index memory';
+-----------------------------+ | Total IndexMemory Available | +-----------------------------+ | 25664 | +-----------------------------+ 1 row in set (0.33 sec)
ndbinfo
테이블 및 컬럼 이름은 ( ndbinfo
데이터베이스 자체의 이름과 마찬가지로) 대소 문자를 구분합니다. 이 식별자는 소문자입니다. 대소 문자를 잘못 사용하면 다음 예제와 같은 오류가 발생합니다.
mysql>SELECT * FROM nodes;
+---------+--------+---------+-------------+ | node_id | uptime | status | start_phase | +---------+--------+---------+-------------+ | 1 | 13602 | STARTED | 0 | | 2 | 16 | STARTED | 0 | +---------+--------+---------+-------------+ 2 rows in set (0.04 sec) mysql>SELECT * FROM Nodes;
ERROR 1146 (42S02): Table 'ndbinfo.Nodes' doesn't exist
mysqldump는 ndbinfo
데이터베이스를 완전히 무시하고 어떤 출력에서도 제외합니다. 이것은 --databases
또는 --all-databases
옵션을 사용하는 경우에도 마찬가지입니다.
MySQL Cluster는 INFORMATION_SCHEMA
정보 데이터베이스에 MySQL Cluster 디스크 데이터 저장 용으로 사용되는 파일에 대한 정보를 저장하는 FILES
테이블과 같은 테이블을 보유하고 있습니다. 자세한 내용은 섹션 21.30 "MySQL Cluster의 INFORMATION_SCHEMA 테이블" 을 참조하십시오.