Spec-Zone .ru
спецификации, руководства, описания, API

17.5.10. The ndbinfo MySQL Cluster Information Database

17.5.10.1. The ndbinfo arbitrator_validity_detail Table
17.5.10.2. The ndbinfo arbitrator_validity_summary Table
17.5.10.3. The ndbinfo blocks Table
17.5.10.4. The ndbinfo cluster_operations Table
17.5.10.5. The ndbinfo cluster_transactions Table
17.5.10.6. The ndbinfo config_params Table
17.5.10.7. The ndbinfo counters Table
17.5.10.8. The ndbinfo diskpagebuffer Table
17.5.10.9. The ndbinfo logbuffers Table
17.5.10.10. The ndbinfo logspaces Table
17.5.10.11. The ndbinfo membership Table
17.5.10.12. The ndbinfo memoryusage Table
17.5.10.13. The ndbinfo nodes Table
17.5.10.14. The ndbinfo resources Table
17.5.10.15. The ndbinfo server_operations Table
17.5.10.16. The ndbinfo server_transactions Table
17.5.10.17. The ndbinfo threadblocks Table
17.5.10.18. The ndbinfo threadstat Table
17.5.10.19. The ndbinfo transporters Table

ndbinfo is a database storing containing information specific to MySQL Cluster.

This database contains a number of tables, each providing a different sort of data about MySQL Cluster node status, resource usage, and operations. You can find more detailed information about each of these tables in the next several sections.

ndbinfo is included with MySQL Cluster support in the MySQL Server; no special compilation or configuration steps are required; the tables are created by the MySQL Server when it connects to the cluster. You can verify that ndbinfo support is active in a given MySQL Server instance using SHOW PLUGINS; if ndbinfo support is enabled, you should see a row containing ndbinfo in the Name column and ACTIVE in the Status column, as shown here (emphasized text):

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)

You can also do this by checking the output of SHOW ENGINES for a line including ndbinfo in the Engine column and YES in the Support column, as shown here (emphasized text):

mysql> SHOW ENGINES\G*************************** 1. row ***************************      Engine: ndbcluster     Support: YES     Comment: Clustered, fault-tolerant tablesTransactions: YES          XA: NO  Savepoints: NO*************************** 2. row ***************************      Engine: MRG_MYISAM     Support: YES     Comment: Collection of identical MyISAM tablesTransactions: NO          XA: NO  Savepoints: NO*************************** 3. row *************************** Engine: ndbinfo Support:
        YES Comment: MySQL Cluster system information storage engineTransactions: NO XA: NO Savepoints: NO*************************** 4. row ***************************      Engine: CSV     Support: YES     Comment: CSV storage engineTransactions: NO          XA: NO  Savepoints: NO*************************** 5. row ***************************      Engine: MEMORY     Support: YES     Comment: Hash based, stored in memory, useful for temporary tablesTransactions: NO          XA: NO  Savepoints: NO*************************** 6. row ***************************      Engine: FEDERATED     Support: NO     Comment: Federated MySQL storage engineTransactions: NULL          XA: NULL  Savepoints: NULL*************************** 7. row ***************************      Engine: ARCHIVE     Support: YES     Comment: Archive storage engineTransactions: NO          XA: NO  Savepoints: NO*************************** 8. row ***************************      Engine: InnoDB     Support: YES     Comment: Supports transactions, row-level locking, and foreign keysTransactions: YES          XA: YES  Savepoints: YES*************************** 9. row ***************************      Engine: MyISAM     Support: DEFAULT     Comment: Default engine as of MySQL 3.23 with great performanceTransactions: 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: NO10 rows in set (0.00 sec)

If ndbinfo support is enabled, then you can access ndbinfo using SQL statements in mysql or another MySQL client. For example, you can see ndbinfo listed in the output of SHOW DATABASES, as shown here:

mysql> SHOW DATABASES;+--------------------+| Database           |+--------------------+| information_schema || mysql              || ndbinfo            || test               |+--------------------+4 rows in set (0.00 sec)

If the mysqld process was not started with the --ndbcluster option, ndbinfo is not available and is not displayed by SHOW DATABASES. If mysqld was formerly connected to a MySQL Cluster but the cluster becomes unavailable (due to events such as cluster shutdown, loss of network connectivity, and so forth), ndbinfo and its tables remain visible, but an attempt to access any tables (other than blocks or config_params) fails with Got error 157 'Connection to NDB failed' from NDBINFO.

With the exception of the blocks and config_params tables, what we refer to as ndbinfo "tables" are actually views generated from internal NDB tables not normally visible to the MySQL Server.

All ndbinfo tables are read-only, and are generated on demand when queried. Because many of them are generated in parallel by the data nodes while other are specific to a given SQL node, they are not guaranteed to provide a consistent snapshot.

In addition, pushing down of joins is not supported on ndbinfo tables; so joining large ndbinfo tables can require transfer of a large amount of data to the requesting API node, even when the query makes use of a WHERE clause.

ndbinfo tables are not included in the query cache. (Bug #59831)

You can select the ndbinfo database with a USE statement, and then issue a SHOW TABLES statement to obtain a list of tables, just as for any other database, like this:

mysql> USE ndbinfo;Database changedmysql> SHOW TABLES;+----------------------+| Tables_in_ndbinfo    |+----------------------+| blocks               || cluster_operations   || cluster_transactions || config_params        || counters             || diskpagebuffer       || logbuffers           || logspaces            || memoryusage          || nodes                || resources            || server_operations    || server_transactions  || threadblocks         || threadstat           || transporters         |+----------------------+16 rows in set (0.04 sec)

You can execute SELECT statements against these tables, just as you would normally expect:

mysql> SELECT * FROM memoryusage;+---------+--------------+------+-------+| node_id | DATA_MEMORY  | used | max   |+---------+--------------+------+-------+|       1 | DATA_MEMORY  | 3230 |  6408 ||       2 | DATA_MEMORY  | 3230 |  6408 ||       1 | INDEX_MEMORY |   16 | 12832 ||       2 | INDEX_MEMORY |   16 | 12832 |+---------+--------------+------+-------+4 rows in set (0.37 sec)

More complex queries, such as the two following SELECT statements using the memoryusage table, are possible:

mysql> SELECT SUM(used) as 'Data Memory Used, All
        Nodes'      >     FROM memoryusage      >     WHERE DATA_MEMORY = '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 DATA_MEMORY = 'INDEX_MEMORY';+-----------------------------+| Total IndexMemory Available |+-----------------------------+|                       25664 |+-----------------------------+1 row in set (0.33 sec)

ndbinfo table and column names are case sensitive (as is the name of the ndbinfo database itself). These identifiers are in lowercase. Trying to use the wrong lettercase results in an error, as shown in this example:

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 ignores the ndbinfo database entirely, and excludes it from any output. This is true even when using the --databases or --all-databases option.

MySQL Cluster also maintains tables in the INFORMATION_SCHEMA information database, including the FILES table which contains information about files used for MySQL Cluster Disk Data storage. For more information, see INFORMATION_SCHEMA Tables for MySQL Cluster.