IBD2SDI(1) MySQL Database System IBD2SDI(1)

ibd2sdi - ابزار InnoDB برای استخراج اطلاعات دیکشنری سریالی‌شده (SDI) از فضای جدول InnoDB

ibd2sdi [options] file_name1 [file_name2 file_name3 ...]

دستور ibd2sdi ابزاری برای استخراج اطلاعات دیکشنری سریالی‌شده[1] (SDI) از پرونده‌های فضای جدول InnoDB است. داده‌های SDI در تمامی پرونده‌های پایدار فضای جدول InnoDB حضور دارند.

دستور ibd2sdi می‌تواند روی پرونده‌های فضای جدول file-per-table (پرونده‌های *.ibd)، پرونده‌های فضای جدول عمومی (پرونده‌های *.ibd)، پرونده‌های فضای جدول سیستم[2] (پرونده‌های *ibdata) و فضای جدول دیکشنری داده (mysql.ibd) اجرا شود. استفاده از آن برای فضاهای جدول موقت یا فضاهای جدول undo پشتیبانی نمی‌شود.

دستور ibd2sdi می‌تواند در زمان اجرا یا در حالی که سرور آفلاین است استفاده شود. هنگام عملیات DDL، عملیات ROLLBACK و عملیات پاکسازی (purge) لاگ undo مرتبط با SDI، ممکن است بازه زمانی کوتاهی وجود داشته باشد که در آن ibd2sdi در خواندن داده‌های SDI ذخیره‌شده در فضای جدول با شکست مواجه شود.

دستور ibd2sdi یک خواندن ثبت‌نشده (uncommitted read) از SDI را از فضای جدول مشخص‌شده انجام می‌دهد. به لاگ‌های redo و لاگ‌های undo دسترسی پیدا نمی‌کند.

ابزار ibd2sdi را به این صورت فراخوانی کنید:

ibd2sdi [options] file_name1 [file_name2 file_name3 ...]

دستور ibd2sdi از فضاهای جدول چندپرونده‌ای مانند فضای جدول سیستم InnoDB پشتیبانی می‌کند، اما نمی‌تواند هم‌زمان روی بیش از یک فضای جدول اجرا شود. برای فضاهای جدول چندپرونده‌ای، هر پرونده را مشخص کنید:

ibd2sdi ibdata1 ibdata2

پرونده‌های یک فضای جدول چندپرونده‌ای باید به ترتیب صعودی شماره صفحه مشخص شوند. اگر دو پرونده متوالی دارای شناسه فضای یکسان باشند، پرونده بعدی باید با شماره آخرین صفحه پرونده قبلی + ۱ آغاز شود.

دستور ibd2sdi خروجی SDI (شامل فیلدهای id ،type و data) را در قالب JSON تولید می‌کند. گزینه‌های ibd2sdi

دستور ibd2sdi از گزینه‌های زیر پشتیبانی می‌کند:

•--help, -h
قالب خط فرمان --help
نوع Boolean
مقدار پیش‌فرض false

یک پیام راهنما نمایش داده و خارج می‌شود. به عنوان مثال:

Usage: ./ibd2sdi [-v] [-c <strict-check>] [-d <dump file name>] [-n] filename1 [filenames]
See http://dev.mysql.com/doc/refman/9.7/en/ibd2sdi.html for usage hints.
  -h, --help          Display this help and exit.
  -v, --version       Display version information and exit.
  -#, --debug[=name]  Output debug log. See
                      http://dev.mysql.com/doc/refman/9.7/en/dbug-package.html
  -d, --dump-file=name
                      Dump the tablespace SDI into the file passed by user.
                      Without the filename, it will default to stdout
  -s, --skip-data     Skip retrieving data from SDI records. Retrieve only id
                      and type.
  -i, --id=#          Retrieve the SDI record matching the id passed by user.
  -t, --type=#        Retrieve the SDI records matching the type passed by
                      user.
  -c, --strict-check=name
                      Specify the strict checksum algorithm by the user.
                      Allowed values are innodb, crc32, none.
  -n, --no-check      Ignore the checksum verification.
  -p, --pretty        Pretty format the SDI output.If false, SDI would be not
                      human readable but it will be of less size
                      (Defaults to on; use --skip-pretty to disable.)
Variables (--variable-name=value)
and boolean options {FALSE|TRUE}  Value (after reading options)
-------------------------------- -------------------------------------- -
debug                             (No default value)
dump-file                         (No default value)
skip-data                         FALSE
id                                0
type                              0
strict-check                      crc32
no-check                          FALSE
pretty                            TRUE
•--version, -v
قالب خط فرمان --version
نوع Boolean
مقدار پیش‌فرض false

اطلاعات نسخه را نمایش داده و خارج می‌شود. به عنوان مثال:

ibd2sdi  Ver 9.7.0 for Linux on x86_64 (Source distribution)
•--debug[=debug_options], -# [debug_options]
قالب خط فرمان --debug=options
نوع String
مقدار پیش‌فرض [none]

یک گزارش اشکال‌زدایی چاپ می‌کند. برای گزینه‌های اشکال‌زدایی، به بخش 7.9.4، “بسته DBUG” مراجعه کنید.

ibd2sdi --debug=d:t /tmp/ibd2sdi.trace

این گزینه تنها زمانی در دسترس است که MySQL با استفاده از WITH_DEBUG ساخته شده باشد. باینری‌های رسمی منتشر شده MySQL ارائه‌شده توسط Oracle با این گزینه ساخته نشده‌اند.

•--dump-file=, -d
قالب خط فرمان --dump-file=file
نوع File name
مقدار پیش‌فرض [none]

اطلاعات دیکشنری سریالی‌شده (SDI) را در پرونده دامپ مشخص‌شده می‌ریزد. اگر پرونده دامپ مشخص نشود، SDI فضای جدول در stdout نوشته می‌شود.

ibd2sdi --dump-file=file_name ../data/test/t1.ibd
•--skip-data, -s
قالب خط فرمان --skip-data
نوع Boolean
مقدار پیش‌فرض false

از بازیابی مقادیر فیلد data از اطلاعات دیکشنری سریالی‌شده (SDI) صرف‌نظر کرده و تنها مقادیر فیلدهای id و type را که کلیدهای اصلی رکوردهای SDI هستند، بازیابی می‌کند.

$> ibd2sdi --skip-data ../data/test/t1.ibd
["ibd2sdi"
,
{
	"type": 1,
	"id": 330
}
,
{
	"type": 2,
	"id": 7
}
]
•--id=#, -i #
قالب خط فرمان --id=#
نوع Integer
مقدار پیش‌فرض 0

اطلاعات دیکشنری سریالی‌شده (SDI) منطبق با شناسه شیء (object id) جدول یا فضای جدول مشخص‌شده را بازیابی می‌کند. شناسه شیء برای هر نوع شیء منحصربه‌فرد است. شناسه‌های شیء جدول و فضای جدول همچنین در ستون id جدول‌های دیکشنری داده mysql.tables و mysql.tablespace یافت می‌شوند. برای اطلاعات بیشتر درباره جدول‌های دیکشنری داده، به بخش 16.1، “طرحواره دیکشنری داده (Data Dictionary Schema)” مراجعه کنید.

$> ibd2sdi --id=7 ../data/test/t1.ibd
["ibd2sdi"
,
{
	"type": 2,
	"id": 7,
	"object":
		{
    "mysqld_version_id": 80003,
    "dd_version": 80003,
    "sdi_version": 1,
    "dd_object_type": "Tablespace",
    "dd_object": {
        "name": "test/t1",
        "comment": "",
        "options": "",
        "se_private_data": "flags=16417;id=2;server_version=80003;space_version=1;",
        "engine": "InnoDB",
        "files": [
            {
                "ordinal_position": 1,
                "filename": "./test/t1.ibd",
                "se_private_data": "id=2;"
            }
        ]
    }
}
}
]
•--type=#, -t #
قالب خط فرمان --type=#
نوع Enumeration
مقدار پیش‌فرض 0
مقادیر معتبر 1 2

اطلاعات دیکشنری سریالی‌شده (SDI) منطبق با نوع شیء مشخص‌شده را بازیابی می‌کند. اطلاعات SDI برای اشیاء جدول (type=1) و فضای جدول (type=2) ارائه می‌شود.

این مثال خروجی مربوط به یک فضای جدول ts1 در پایگاه داده test را نشان می‌دهد:

$> ibd2sdi --type=2 ../data/test/ts1.ibd
["ibd2sdi"
,
{
	"type": 2,
	"id": 7,
	"object":
		{
    "mysqld_version_id": 80003,
    "dd_version": 80003,
    "sdi_version": 1,
    "dd_object_type": "Tablespace",
    "dd_object": {
        "name": "test/ts1",
        "comment": "",
        "options": "",
        "se_private_data": "flags=16417;id=2;server_version=80003;space_version=1;",
        "engine": "InnoDB",
        "files": [
            {
                "ordinal_position": 1,
                "filename": "./test/ts1.ibd",
                "se_private_data": "id=2;"
            }
        ]
    }
}
}
]

به دلیل شیوه مدیریت فراداده‌های مقادیر پیش‌فرض توسط InnoDB، ممکن است در خروجی ibd2sdi برای یک ستون جدول معین، حتی اگر با استفاده از DEFAULT تعریف نشده باشد، مقدار پیش‌فرض وجود داشته و غیرخالی باشد. دو جدول ایجادشده با دستورهای زیر را در پایگاه داده‌ای به نام i در نظر بگیرید:

CREATE TABLE t1 (c VARCHAR(16) NOT NULL);
CREATE TABLE t2 (c VARCHAR(16) NOT NULL DEFAULT "Sakila");

با استفاده از ibd2sdi، می‌توان مشاهده کرد که default_value برای ستون c غیرخالی است و در واقع در هر دو جدول با بایت‌های خالی تا طول مشخص پر (pad) شده است، مانند این:

$> ibd2sdi ../data/i/t1.ibd  | grep -m1 '\"default_value\"' | cut -b34- | sed -e s/,//
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAA="
$> ibd2sdi ../data/i/t2.ibd  | grep -m1 '\"default_value\"' | cut -b34- | sed -e s/,//
"BlNha2lsYQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAA="

بررسی خروجی ibd2sdi با استفاده از یک ابزار آگاه از JSON مانند jq[3]، همان‌طور که در اینجا نشان داده شده است، ممکن است آسان‌تر باشد:

$> ibd2sdi ../data/i/t1.ibd  | jq '.[1]["object"]["dd_object"]["columns"][0]["default_value"]'
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAA="
$> ibd2sdi ../data/i/t2.ibd  | jq '.[1]["object"]["dd_object"]["columns"][0]["default_value"]'
"BlNha2lsYQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAA="

برای اطلاعات بیشتر، به مستندات ساختار داخلی MySQL[4] مراجعه کنید.

•--strict-check, -c
قالب خط فرمان --strict-check=algorithm
نوع Enumeration
مقدار پیش‌فرض crc32
مقادیر معتبر crc32 innodb none

یک الگوریتم بررسی مجموع مقابله‌ای سخت‌گیرانه (strict checksum) را برای اعتبارسنجی چکسام صفحاتی که خوانده می‌شوند، مشخص می‌کند. گزینه‌ها شامل innodb، crc32 و none هستند.

در این مثال، نسخه سخت‌گیرانه الگوریتم چکسام innodb مشخص شده است:

ibd2sdi --strict-check=innodb ../data/test/t1.ibd

در این مثال، نسخه سخت‌گیرانه الگوریتم چکسام crc32 مشخص شده است:

ibd2sdi -c crc32 ../data/test/t1.ibd

اگر گزینه --strict-check را مشخص نکنید، اعتبارسنجی در برابر چکسام‌های غیر سخت‌گیرانه innodb، crc32 و none انجام می‌شود.

•--no-check, -n
قالب خط فرمان --no-check
نوع Boolean
مقدار پیش‌فرض false

از اعتبارسنجی چکسام برای صفحاتی که خوانده می‌شوند صرف‌نظر می‌کند.

ibd2sdi --no-check ../data/test/t1.ibd
•--pretty, -p
قالب خط فرمان --pretty
نوع Boolean
مقدار پیش‌فرض false

داده‌های SDI را در قالب ساختاریافته و خوانای JSON (pretty print) خروجی می‌دهد. به‌طور پیش‌فرض فعال است. اگر غیرفعال شود، SDI برای انسان خوانا نخواهد بود اما حجم کمتری خواهد داشت. برای غیرفعال کردن از --skip-pretty استفاده کنید.

ibd2sdi --skip-pretty ../data/test/t1.ibd

حق نشر © 1997, 2026, Oracle و/یا شرکت‌های وابسته به آن.

این مستندات یک نرم‌افزار آزاد است؛ شما می‌توانید آن را تحت شرایط مجوز عمومی همگانی گنو (GNU General Public License) همان‌طور که توسط بنیاد نرم‌افزارهای آزاد منتشر شده است؛ نسخه ۲ مجوز، بازتوزیع کرده و/یا تغییر دهید.

این مستندات به این امید توزیع شده است که مفید واقع شود، اما بدون هرگونه ضمانت؛ حتی بدون ضمانت ضمنی قابلیت فروش یا مناسب بودن برای یک هدف خاص. برای جزئیات بیشتر به مجوز عمومی همگانی گنو مراجعه کنید.

شما باید همراه با این برنامه یک نسخه از مجوز عمومی همگانی گنو را دریافت کرده باشید؛ در غیر این صورت، به بنیاد نرم‌افزارهای آزاد با نشانی Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA بنویسید یا به http://www.gnu.org/licenses مراجعه کنید.

1.
اطلاعات دیکشنری سریالی‌شده (serialized dictionary information)
2.
فضای جدول سیستم (system tablespace)
3.
jq
4.
مستندات ساختار داخلی MySQL (MySQL Internals documentation)

برای اطلاعات بیشتر، لطفاً به راهنمای مرجع MySQL مراجعه کنید، که ممکن است قبلاً به صورت محلی نصب شده باشد و همچنین به صورت برخط در http://dev.mysql.com/doc در دسترس است.

شرکت Oracle (http://dev.mysql.com).

03/24/2026 MySQL 9.7