這是一個Perl腳本,可用於估算如果將MySQL資料庫轉換為使用 NDBCLUSTER
儲存引擎所需要的空間量。與本節中討論的其他工具不同,它不需要存取NDB叢集(事實上,它沒有理由這樣做)。但是,它確實需要存取要測試的資料庫所在的MySQL伺服器。
ndb_size.pl 在 NDB 8.4.3 及更新版本中已棄用且不再支援。您應該預期它會從 NDB 叢集發行版的未來版本中移除,並相應地修改任何相依的應用程式。
需求
正在執行的 MySQL 伺服器。伺服器實例不需要提供 NDB 叢集支援。
Perl 的可用安裝。
DBI
模組,如果它還不是您 Perl 安裝的一部分,可以從 CPAN 取得。(許多 Linux 和其他作業系統發行版都為此程式庫提供自己的套件。)擁有必要權限的 MySQL 使用者帳戶。如果您不想使用現有的帳戶,則使用
GRANT USAGE ON
建立一個帳戶(其中db_name
.*db_name
是要檢查的資料庫的名稱)就足以達到此目的。
ndb_size.pl
也可以在 MySQL 原始碼中的 storage/ndb/tools
中找到。
與 ndb_size.pl 一起使用的選項如下表所示。其他說明在表格之後。
用法
perl ndb_size.pl [--database={db_name|ALL}] [--hostname=host[:port]] [--socket=socket] \
[--user=user] [--password=password] \
[--help|-h] [--format={html|text}] \
[--loadqueries=file_name] [--savequeries=file_name]
預設情況下,此工具會嘗試分析伺服器上的所有資料庫。您可以使用 --database
選項指定單一資料庫;可以使用 ALL
作為資料庫名稱來明確預設行為。您也可以使用 --excludedbs
選項,後面接著要跳過的資料庫名稱的逗號分隔清單,來排除一個或多個資料庫。同樣地,您可以使用選用的 --excludetables
選項,後面接著以逗號分隔的表格名稱清單,來跳過特定的表格。可以使用 --hostname
指定主機名稱;預設值為 localhost
。您可以使用 host
:port
格式的 --hostname
值來指定除了主機之外的連接埠。預設連接埠號碼為 3306。如有必要,您也可以指定一個 Socket;預設值為 /var/lib/mysql.sock
。可以使用顯示的對應選項指定 MySQL 使用者名稱和密碼。也可以使用 --format
選項來控制輸出的格式;它可以採用 html
或 text
的值,預設值為 text
。文字輸出的範例顯示在此
$> ndb_size.pl --database=test --socket=/tmp/mysql.sock
ndb_size.pl report for database: 'test' (1 tables)
--------------------------------------------------
Connected to: DBI:mysql:host=localhost;mysql_socket=/tmp/mysql.sock
Including information for versions: 4.1, 5.0, 5.1
test.t1
-------
DataMemory for Columns (* means varsized DataMemory):
Column Name Type Varsized Key 4.1 5.0 5.1
HIDDEN_NDB_PKEY bigint PRI 8 8 8
c2 varchar(50) Y 52 52 4*
c1 int(11) 4 4 4
-- -- --
Fixed Size Columns DM/Row 64 64 12
Varsize Columns DM/Row 0 0 4
DataMemory for Indexes:
Index Name Type 4.1 5.0 5.1
PRIMARY BTREE 16 16 16
-- -- --
Total Index DM/Row 16 16 16
IndexMemory for Indexes:
Index Name 4.1 5.0 5.1
PRIMARY 33 16 16
-- -- --
Indexes IM/Row 33 16 16
Summary (for THIS table):
4.1 5.0 5.1
Fixed Overhead DM/Row 12 12 16
NULL Bytes/Row 4 4 4
DataMemory/Row 96 96 48
(Includes overhead, bitmap and indexes)
Varsize Overhead DM/Row 0 0 8
Varsize NULL Bytes/Row 0 0 4
Avg Varside DM/Row 0 0 16
No. Rows 0 0 0
Rows/32kb DM Page 340 340 680
Fixedsize DataMemory (KB) 0 0 0
Rows/32kb Varsize DM Page 0 0 2040
Varsize DataMemory (KB) 0 0 0
Rows/8kb IM Page 248 512 512
IndexMemory (KB) 0 0 0
Parameter Minimum Requirements
------------------------------
* indicates greater than default
Parameter Default 4.1 5.0 5.1
DataMemory (KB) 81920 0 0 0
NoOfOrderedIndexes 128 1 1 1
NoOfTables 128 1 1 1
IndexMemory (KB) 18432 0 0 0
NoOfUniqueHashIndexes 64 0 0 0
NoOfAttributes 1000 3 3 3
NoOfTriggers 768 5 5 5
為了偵錯目的,可以使用 --savequeries
將此腳本執行的查詢所包含的 Perl 陣列儲存到檔案中;可以使用 --loadqueries
指定在腳本執行期間要讀取的包含此類陣列的檔案。這些選項都沒有預設值。
若要產生 HTML 格式的輸出,請使用 --format
選項並將輸出重新導向到檔案,如下所示
$> ndb_size.pl --database=test --socket=/tmp/mysql.sock --format=html > ndb_size.html
(若沒有重新導向,則輸出會傳送到 stdout
。)
此腳本的輸出包含以下資訊
為了容納分析的表格,
DataMemory
、IndexMemory
、MaxNoOfTables
、MaxNoOfAttributes
、MaxNoOfOrderedIndexes
和MaxNoOfTriggers
組態參數所需的最小值。資料庫中定義的所有表格、屬性、排序索引和唯一雜湊索引的記憶體需求。
每個表格和表格列所需的
IndexMemory
和DataMemory
。