{"id":22169,"date":"2024-10-20T21:02:49","date_gmt":"2024-10-21T04:02:49","guid":{"rendered":"https:\/\/www.pingcap.com\/?p=22169"},"modified":"2024-10-30T19:26:41","modified_gmt":"2024-10-31T02:26:41","slug":"a-comprehensive-guide-to-tidbs-backup-and-recovery-technology","status":"publish","type":"post","link":"https:\/\/www.pingcap.com\/ko\/blog\/a-comprehensive-guide-to-tidbs-backup-and-recovery-technology\/","title":{"rendered":"A Comprehensive Guide to TiDB&#8217;s Backup and Recovery Technology"},"content":{"rendered":"\n<p>Data loss can occur while using a database for various reasons, such as operator error, malicious hacker attacks, and server hardware failures. Backup and recovery technology is the final line of defense to ensure data can still be restored and used after such losses.&nbsp;<\/p>\n\n\n\n<p><a href=\"https:\/\/www.pingcap.com\/tidb-self-managed\/\">TiDB<\/a>, as a native distributed database, fully supports various backup and recovery capabilities. However, due to its unique architecture, the principles of its backup and recovery processes differ from those of traditional databases.\u00a0<\/p>\n\n\n\n<p>This article gives a comprehensive overview of TiDB&#8217;s backup and recovery capabilities.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"TiDBs_Backup_Capabilities\"><\/span>TiDB\u2019s Backup Capabilities<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>TiDB offers two types of backups: physical backups and logical backups.&nbsp;<\/p>\n\n\n\n<p>Physical backups involve directly backing up physical files (.SST) and can be divided into full and incremental backups. Logical backups export data to binary or text files. Physical backups are typically used for cluster-level or database-level backups involving large amounts of data to ensure the consistency of the backed-up data.&nbsp;<\/p>\n\n\n\n<p>Logical backups are primarily used for full backups of smaller data sets or fewer tables and do not guarantee data consistency during ongoing operations.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Physical Backups<\/h3>\n\n\n\n<p>Physical backups are divided into full backups and incremental backups. Full backups, also known as &#8220;snapshot backups,&#8221; ensure data consistency through snapshots. Incremental backups, referred to as &#8220;log backups&#8221; in the current TiDB version, back up the KV change logs over a recent period.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Snapshot Backups<\/h4>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"777\" src=\"https:\/\/static.pingcap.com\/files\/2024\/10\/20201944\/1-2-1024x777.jpeg\" alt=\"\" class=\"wp-image-22170\" srcset=\"https:\/\/static.pingcap.com\/files\/2024\/10\/20201944\/1-2-1024x777.jpeg 1024w, https:\/\/static.pingcap.com\/files\/2024\/10\/20201944\/1-2-300x228.jpeg 300w, https:\/\/static.pingcap.com\/files\/2024\/10\/20201944\/1-2-768x583.jpeg 768w, https:\/\/static.pingcap.com\/files\/2024\/10\/20201944\/1-2.jpeg 1368w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p><strong>Full Process of Snapshot Backup<\/strong><\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>BR Receives Backup Command:\n<ul class=\"wp-block-list\">\n<li>BR receives the <code>br backup full<\/code> command and obtains the backup snapshot point and backup storage address.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>BR Schedules Backup Data:\n<ul class=\"wp-block-list\">\n<li>Specific steps include:\n<ol class=\"wp-block-list\">\n<li>Pausing GC to prevent the backed-up data from being collected as garbage.<\/li>\n\n\n\n<li>Accessing PD to get information about the distribution of the Regions to be backed up and the <a href=\"https:\/\/docs.pingcap.com\/tidb\/stable\/tikv-overview\">TiKV<\/a> node information.<\/li>\n\n\n\n<li>Creating a backup request and sending it to the TiKV nodes, including <code>backup ts<\/code>, the regions to be backed up, and the backup storage address.<\/li>\n<\/ol>\n<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>TiKV Accepts Backup Request and Initializes Backup Worker:\n<ul class=\"wp-block-list\">\n<li>TiKV nodes receive the backup request and initialize a backup worker.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>TiKV Backs Up Data:\n<ul class=\"wp-block-list\">\n<li>Specific steps include:\n<ol class=\"wp-block-list\">\n<li>Reading data: The backup worker reads data corresponding to <code>backup ts<\/code> from the Region Leader.<\/li>\n\n\n\n<li>Saving to SST files: The data is stored in memory as SST files.<\/li>\n\n\n\n<li>Uploading SST files to backup storage.<\/li>\n<\/ol>\n<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>BR Retrieves Backup Results from Each TiKV:\n<ul class=\"wp-block-list\">\n<li>BR collects the backup results from each TiKV node. If there are changes in Regions, the process retries. If it is not possible to retry, the backup fails.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>BR Backs Up Metadata:\n<ul class=\"wp-block-list\">\n<li>BR backs up the table schema, calculates the table data checksum, generates backup metadata, and uploads it to the backup storage.<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n\n\n\n<p>The recommended method is to use the <code>br<\/code> command-line tool provided by TiDB to perform a snapshot backup.\u00a0 You can install it using <code>tiup install br<\/code>. After installing br, you can use the related commands to perform a snapshot backup. Currently, snapshot backups support cluster-level, database-level, and table-level backups. Here is an example of using br for a cluster snapshot backup.\u00a0<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&#91;tidb@tidb53 ~]$ tiup br backup full --pd \"172.20.12.52:2679\" --storage \"local:\/\/\/data1\/backups\" --ratelimit 128 --log-file backupfull.log\ntiup is checking updates for component br ...\nStarting component `br`: \/home\/tidb\/.tiup\/components\/br\/v7.6.0\/br backup full --pd 172.20.12.52:2679 --storage local:\/\/\/data1\/backups --ratelimit 128 --log-file backupfull.log\nDetail BR log in backupfull.log\n&#91;2024\/03\/05 10:19:27.437 +08:00] &#91;WARN] &#91;backup.go:311] &#91;\"setting `--ratelimit` and `--concurrency` at the same time, ignoring `--concurrency`: `--ratelimit` forces sequential (i.e. concurrency = 1) backup\"] &#91;ratelimit=134.2MB\/s] &#91;concurrency-specified=4]\nFull Backup &lt;----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------> 100.00%\nChecksum &lt;-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------> 100.00%\n&#91;2024\/03\/05 10:20:29.456 +08:00] &#91;INFO] &#91;collector.go:77] &#91;\"Full Backup success summary\"] &#91;total-ranges=207] &#91;ranges-succeed=207] &#91;ranges-failed=0] &#91;backup-checksum=1.422780807s] &#91;backup-fast-checksum=17.004817ms] &#91;backup-total-ranges=161] &#91;total-take=1m2.023929601s] &#91;BackupTS=448162737288380420] &#91;total-kv=25879266] &#91;total-kv-size=3.587GB] &#91;average-speed=57.82MB\/s] &#91;backup-data-size(after-compressed)=1.868GB] &#91;Size=1867508767]\n&#91;tidb@tidb53 ~]$ ll \/data1\/backups\/\n\u603b\u7528\u91cf 468\ndrwxr-xr-x. 2 nfsnobody nfsnobody  20480 3\u6708   5 10:20 1\ndrwxr-xr-x. 2 tidb      tidb       12288 3\u6708   5 10:20 4\ndrwxr-xr-x. 2 nfsnobody nfsnobody  12288 3\u6708   5 10:20 5\n-rw-r--r--. 1 nfsnobody nfsnobody     78 3\u6708   5 10:19 backup.lock\n-rw-r--r--. 1 nfsnobody nfsnobody    395 3\u6708   5 10:20 backupmeta\n-rw-r--r--. 1 nfsnobody nfsnobody  50848 3\u6708   5 10:20 backupmeta.datafile.000000001\n-rw-r--r--. 1 nfsnobody nfsnobody 365393 3\u6708   5 10:20 backupmeta.schema.000000002\ndrwxrwxrwx. 3 nfsnobody nfsnobody   4096 3\u6708   5 10:19 checkpoints<\/code><\/pre>\n\n\n\n<p>The <code>--ratelimit<\/code> parameter indicates the maximum speed at which each TiKV can execute backup tasks, set to 128MB\/s. The <code>--log-file<\/code> parameter specifies the target file to write the backup logs. The <code>--pd<\/code> parameter specifies the PD nodes. Additionally, the <code>br<\/code> command supports the <code>--backupts<\/code> parameter, which indicates the physical time point corresponding to the backup snapshot. If this parameter is not specified, the current time point is used as the snapshot time point.<\/p>\n\n\n\n<p>If we want to determine when a completed snapshot backup was taken from a backup set, <code>br<\/code> also provides the corresponding command <code>br validate decode<\/code>. This command&#8217;s output is a TSO (Timestamp Oracle). We can use <code>tidb_parse_tso<\/code> to parse it into the physical time, as shown below.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&#91;tidb@tidb53 ~]$ tiup br validate decode --field=\"end-version\" --storage \"local:\/\/\/data1\/backups\" | tail -n1\ntiup is checking updates for component br ...\nStarting component `br`: \/home\/tidb\/.tiup\/components\/br\/v7.6.0\/br validate decode --field=end-version --storage local:\/\/\/data1\/backups\nDetail BR log in \/tmp\/br.log.2024-03-05T10.24.25+0800\n448162737288380420\nmysql> select tidb_parse_tso(448162737288380420);\n+------------------------------------+\n| tidb_parse_tso(448162737288380420) |\n+------------------------------------+\n| 2024-03-05 10:19:28.489000         |\n+------------------------------------+\n1 row in set (0.01 sec)<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">Log Backup<\/h4>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"723\" src=\"https:\/\/static.pingcap.com\/files\/2024\/10\/20203028\/2-1-1024x723.jpeg\" alt=\"\" class=\"wp-image-22171\" style=\"width:840px;height:auto\" srcset=\"https:\/\/static.pingcap.com\/files\/2024\/10\/20203028\/2-1-1024x723.jpeg 1024w, https:\/\/static.pingcap.com\/files\/2024\/10\/20203028\/2-1-300x212.jpeg 300w, https:\/\/static.pingcap.com\/files\/2024\/10\/20203028\/2-1-768x542.jpeg 768w, https:\/\/static.pingcap.com\/files\/2024\/10\/20203028\/2-1.jpeg 1362w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p><strong>Full Process of Log Backup<\/strong><\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>BR Receives Backup Command:<\/strong>\n<ul class=\"wp-block-list\">\n<li>BR receives the <code>br log start<\/code> command. It parses and obtains the checkpoint timestamp and backup storage address for the log backup task and registers it in PD.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>TiKV Monitors Log Backup Task Creation and Updates:<\/strong>\n<ul class=\"wp-block-list\">\n<li>Each TiKV node&#8217;s log backup observer listens for the creation and updates of log backup tasks in PD and backs up the data within the backup range on that node.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>TiKV Log Backup Observer Continuously Backs Up KV Change Logs:<\/strong>\n<ul class=\"wp-block-list\">\n<li>Specific steps include:\n<ol class=\"wp-block-list\">\n<li>Reading KV data changes and saving them to a custom format backup file.<\/li>\n\n\n\n<li>Periodically querying the global checkpoint timestamp from PD.<\/li>\n\n\n\n<li>Periodically generating local metadata.<\/li>\n\n\n\n<li>Periodically uploading log backup data and local metadata to the backup storage.<\/li>\n\n\n\n<li>Requesting PD to prevent unbacked data from being garbage collected.<\/li>\n<\/ol>\n<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>TiDB Coordinator Monitors Log Backup Progress:<\/strong>\n<ul class=\"wp-block-list\">\n<li>It polls all TiKV nodes to get the backup progress for each region. Based on the region checkpoint timestamps, the overall progress of the log backup task is calculated and uploaded to PD.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>PD Persists Log Backup Task Status:<\/strong>\n<ul class=\"wp-block-list\">\n<li>The status of the log backup task can be queried using <code>br log status<\/code>.<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n\n\n\n<p>Log Backup Method:&nbsp;<\/p>\n\n\n\n<p>Snapshot backup commands start with <code>br backup ...<\/code>, while log backup commands start with <code>br log ....<\/code> To start a log backup, use the command <code>br log start<\/code>. After initiating a log backup task, use <code>br log status<\/code> to check the status of the log backup task.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&#91;tidb@tidb53 ~]$ tiup br validate decode --field=\"end-version\" --storage \"local:\/\/\/data1\/backups\" | tail -n1\ntiup is checking updates for component br ...\nStarting component `br`: \/home\/tidb\/.tiup\/components\/br\/v7.6.0\/br validate decode --field=end-version --storage local:\/\/\/data1\/backups\nDetail BR log in \/tmp\/br.log.2024-03-05T10.24.25+0800\n448162737288380420\nmysql> select tidb_parse_tso(448162737288380420);\n+------------------------------------+\n| tidb_parse_tso(448162737288380420) |\n+------------------------------------+\n| 2024-03-05 10:19:28.489000         |\n+------------------------------------+\n1 row in set (0.01 sec)<\/code><\/pre>\n\n\n\n<p>In the above commands, the <code>--task-name<\/code> parameter specifies the name of the log backup task, the <code>--pd<\/code> parameter specifies the PD nodes, and the <code>--storage<\/code> parameter specifies the log backup storage address. The <code>br log<\/code> command also supports the <code>--start-ts<\/code> parameter, specifying the log backup&#8217;s start time. If not specified, the current time is used as the <code>start-ts<\/code>.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&#91;tidb@tidb53 ~]$ tiup br log status --task-name=pitr --pd \"172.20.12.52:2679\"\ntiup is checking updates for component br ...\nStarting component `br`: \/home\/tidb\/.tiup\/components\/br\/v7.6.0\/br log status --task-name=pitr --pd 172.20.12.52:2679\nDetail BR log in \/tmp\/br.log.2024-03-05T10.56.28+0800\n\u25cf Total 1 Tasks.\n> #1 &lt;\n              name: pitr\n            status: \u25cf NORMAL\n             start: 2024-03-05 10:50:52.939 +0800\n               end: 2090-11-18 22:07:45.624 +0800\n           storage: local:\/\/\/data1\/backups\/pitr\n       speed(est.): 0.00 ops\/s\ncheckpoint&#91;global]: 2024-03-05 10:55:42.69 +0800; gap=47s\n&#91;tidb@tidb53 ~]$ tiup br log status --task-name=pitr --pd \"172.20.12.52:2679\"\ntiup is checking updates for component br ...\nStarting component `br`: \/home\/tidb\/.tiup\/components\/br\/v7.6.0\/br log status --task-name=pitr --pd 172.20.12.52:2679\nDetail BR log in \/tmp\/br.log.2024-03-05T10.58.57+0800\n\u25cf Total 1 Tasks.\n> #1 &lt;\n              name: pitr\n            status: \u25cf NORMAL\n             start: 2024-03-05 10:50:52.939 +0800\n               end: 2090-11-18 22:07:45.624 +0800\n           storage: local:\/\/\/data1\/backups\/pitr\n       speed(est.): 0.00 ops\/s\ncheckpoint&#91;global]: 2024-03-05 10:58:07.74 +0800; gap=51s<\/code><\/pre>\n\n\n\n<p>The above output shows that the log backup status is normal. Comparing the outputs at different times reveals that the log backup task is indeed being executed periodically in the background. The checkpoint[global] indicates that all data in the cluster has been saved in the backup storage earlier than this checkpoint time. It represents the most recent time from which the backup data can be restored.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Logical_Backup\"><\/span>Logical Backup<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Logical backup can be used to extract the data from TiDB&#8217;s SQL statements or export tools. In addition to commonly used export statements, TiDB provides a tool called Dumpling, which can export data stored in TiDB or MySQL to SQL or CSV formats. For detailed documentation on Dumpling, please refer to<a href=\"https:\/\/docs.pingcap.com\/tidb\/stable\/dumpling-overview\"> Export Data Using Dumpling | PingCAP Documentation Center<\/a>. A typical example of Dumpling is as follows, which exports all non-system table data from the target database in SQL file format, with 8 concurrent threads for exporting, an output directory of \/tmp\/test, intra-table concurrency to speed up the export starting at 200K records, and a maximum single file size of 256MB.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>dumpling -u root -P 4000 -h 127.0.0.1 --filetype sql -t 8 -o \/tmp\/test -r 200000 -F256MiB<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"TiDBs_Recovery_Capabilities\"><\/span>TiDB\u2019s Recovery Capabilities<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>TiDB recovery can be divided into physical backup-based recovery and logical backup-based recovery. Physical backup-based recovery refers to using the <code>br restore<\/code> command line to restore data, typically for large-scale complete data restoration. Logical backup-based recovery involves importing data, such as files exported by Dumpling, into the cluster, usually for small data sets or a few tables.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Physical Recovery<\/h3>\n\n\n\n<p>Physical recovery can be categorized into direct snapshot backup recovery and Point-in-Time Recovery (PITR). Snapshot backup recovery only requires specifying the backup storage path of the snapshot backup. PITR requires specifying the backup storage path (including snapshot and log backup data) and the time you want to restore.<\/p>\n\n\n\n<p><strong>Snapshot Backup Recovery<\/strong> The complete process of snapshot recovery is as follows (already included in the snapshot backup example above):<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>BR Receives Restore Command:<\/strong>\n<ul class=\"wp-block-list\">\n<li>BR receives the <code>br restore<\/code> command, obtains the snapshot backup storage address and the objects to be restored, and checks whether the objects to be restored exist and meet the requirements.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>BR Schedules Data Restoration:<\/strong>\n<ul class=\"wp-block-list\">\n<li>Specific steps include:\n<ol class=\"wp-block-list\">\n<li>Requesting PD to disable automatic Region scheduling.<\/li>\n\n\n\n<li>Reading and restoring the schema of the backup data.<\/li>\n\n\n\n<li>Requesting PD to allocate Regions based on the backup data information and distribute the Regions to TiKV.<\/li>\n\n\n\n<li>Sending restoration requests to TiKV based on the Regions allocated by PD.<\/li>\n<\/ol>\n<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>TiKV Accepts Restore Request and Initializes Restore Worker:<\/strong>\n<ul class=\"wp-block-list\">\n<li>TiKV nodes receive the restore request and initialize a restore worker.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>TiKV Restores Data:<\/strong>\n<ul class=\"wp-block-list\">\n<li>Specific steps include:\n<ol class=\"wp-block-list\">\n<li>Downloading data from backup storage to the local machine.<\/li>\n\n\n\n<li>Restore workers rewrite the backup data kv (replacing table id and index id).<\/li>\n\n\n\n<li>Injecting the processed SST files into RocksDB.<\/li>\n\n\n\n<li>Returning the restoration result to BR.<\/li>\n<\/ol>\n<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>BR Retrieves Restoration Results from Each TiKV:<\/strong><\/li>\n<\/ol>\n\n\n\n<p><strong>Method of Snapshot Backup Recovery<\/strong> Snapshot backup recovery can be performed at the cluster, database, and table levels. It is recommended to restore to an empty cluster; if the objects to be restored already exist in the cluster, it will cause a restoration error (except for system tables). Below is an example of a cluster restoration:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&#91;tidb@tidb53 ~]$ tiup br restore full --pd \"172.20.12.52:2679\" --storage \"local:\/\/\/data1\/backups\"\ntiup is checking updates for component br ...\nStarting component `br`: \/home\/tidb\/.tiup\/components\/br\/v7.6.0\/br restore full --pd 172.20.12.52:2679 --storage local:\/\/\/data1\/backups\nDetail BR log in \/tmp\/br.log.2024-03-05T13.08.08+0800\nFull Restore &lt;---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------> 100.00%\n&#91;2024\/03\/05 13:08:27.918 +08:00] &#91;INFO] &#91;collector.go:77] &#91;\"Full Restore success summary\"] &#91;total-ranges=197] &#91;ranges-succeed=197] &#91;ranges-failed=0] &#91;split-region=786.659\u00b5s] &#91;restore-ranges=160] &#91;total-take=19.347776543s] &#91;RestoreTS=448165390238351361] &#91;total-kv=25811349] &#91;total-kv-size=3.561GB] &#91;average-speed=184MB\/s] &#91;restore-data-size(after-compressed)=1.847GB] &#91;Size=1846609490] &#91;BackupTS=448162737288380420]<\/code><\/pre>\n\n\n\n<p>If you want to restore a single database, you just need to add the <code>--db<\/code> parameter to the restore command. To restore a single table, you must add both the <code>--db<\/code> and <code>--table<\/code> parameters to the restore command.<\/p>\n\n\n\n<p>PITR (Point-in-Time Recovery) The command for PITR is <code>br restore point ...<\/code>. For initializing the restoration cluster, you must specify the snapshot backup using the <code>--full-backup-storage<\/code> parameter to indicate the storage address of the snapshot backup. The <code>--restored-ts<\/code> parameter specifies the point in time you want to restore. If this parameter is not specified, the restoration will be done at the latest recoverable time point. Additionally, if you only want to restore log backup data, you need to use the <code>--start-ts<\/code> parameter to specify the starting time point for the log backup restoration.<\/p>\n\n\n\n<p>Here is an example of a point-in-time recovery that includes snapshot recovery:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&#91;tidb@tidb53 ~]$ tiup br restore point --pd \"172.20.12.52:2679\" --full-backup-storage \"local:\/\/\/data1\/backups\/fullbk\" --storage \"local:\/\/\/data1\/backups\/pitr\" --restored-ts \"2024-03-05 13:38:28+0800\"\ntiup is checking updates for component br ...\nStarting component `br`: \/home\/tidb\/.tiup\/components\/br\/v7.6.0\/br restore point --pd 172.20.12.52:2679 --full-backup-storage local:\/\/\/data1\/backups\/fullbk --storage local:\/\/\/data1\/backups\/pitr --restored-ts 2024-03-05 13:38:28+0800\nDetail BR log in \/tmp\/br.log.2024-03-05T13.45.02+0800\nFull Restore &lt;---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------> 100.00%\n&#91;2024\/03\/05 13:45:24.620 +08:00] &#91;INFO] &#91;collector.go:77] &#91;\"Full Restore success summary\"] &#91;total-ranges=111] &#91;ranges-succeed=111] &#91;ranges-failed=0] &#91;split-region=644.837\u00b5s] &#91;restore-ranges=75] &#91;total-take=21.653726346s] &#91;BackupTS=448165866711285765] &#91;RestoreTS=448165971332694017] &#91;total-kv=25811349] &#91;total-kv-size=3.561GB] &#91;average-speed=164.4MB\/s] &#91;restore-data-size(after-compressed)=1.846GB] &#91;Size=1846489912]\nRestore Meta Files &lt;......................................................................................................................................................................................> 100%\nRestore KV Files &lt;........................................................................................................................................................................................> 100%\n&#91;2024\/03\/05 13:45:26.944 +08:00] &#91;INFO] &#91;collector.go:77] &#91;\"restore log success summary\"] &#91;total-take=2.323796546s] &#91;restore-from=448165866711285765] &#91;restore-to=448165867159552000] &#91;restore-from=\"2024-03-05 13:38:26.29 +0800\"] &#91;restore-to=\"2024-03-05 13:38:28 +0800\"] &#91;total-kv-count=0] &#91;skipped-kv-count-by-checkpoint=0] &#91;total-size=0B] &#91;skipped-size-by-checkpoint=0B] &#91;average-speed=0B\/s]<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Logical Recovery<\/h3>\n\n\n\n<p>Logical recovery can also be understood as data import. Besides general SQL import, TiDB supports importing data using the Lightning tool. Lightning is a tool for importing data from static files into the TiDB cluster, commonly used for initial data import.&nbsp;<\/p>\n\n\n\n<p>For more details, please refer to the official<a href=\"https:\/\/docs.pingcap.com\/tidb\/stable\/tidb-lightning-overview\"> TiDB Lightning Overview | PingCAP Documentation Center<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Conclusion\"><\/span><strong>Conclusion<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>This article provides a detailed summary of TiDB&#8217;s backup and restoration capabilities and basic usage methods. TiDB&#8217;s backup and restoration mechanisms ensure data security and consistency and meet data protection needs at various scales and scenarios through flexible strategies and tool support. For more in-depth technical details and operational guidance, please refer to the PingCAP official documentation center.<\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Data loss can occur while using a database for various reasons, such as operator error, malicious hacker attacks, and server hardware failures. Backup and recovery technology is the final line of defense to ensure data can still be restored and used after such losses.&nbsp; TiDB, as a native distributed database, fully supports various backup and [&hellip;]<\/p>\n","protected":false},"author":8,"featured_media":22173,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"ub_ctt_via":"","footnotes":""},"categories":[13],"tags":[37,14,111,22],"class_list":["post-22169","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-product","tag-backup-and-restore","tag-mysql","tag-tidb","tag-tikv"],"acf":[],"featured_image_src":"https:\/\/static.pingcap.com\/files\/2024\/10\/20205735\/%E6%9C%AA%E5%91%BD%E5%90%8D%E7%9A%84%E8%AE%BE%E8%AE%A1-2.png","author_info":{"display_name":"TiDB Team","author_link":"https:\/\/www.pingcap.com\/ko\/blog\/author\/pingcap\/"},"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.9 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>TiDB&#039;s Backup and Recovery Technology<\/title>\n<meta name=\"description\" content=\"This article provides a comprehensive and detailed overview of TiDB&#039;s various backup and recovery capabilities.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.pingcap.com\/ko\/blog\/a-comprehensive-guide-to-tidbs-backup-and-recovery-technology\/\" \/>\n<meta property=\"og:locale\" content=\"ko_KR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"TiDB&#039;s Backup and Recovery Technology\" \/>\n<meta property=\"og:description\" content=\"This article provides a comprehensive and detailed overview of TiDB&#039;s various backup and recovery capabilities.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.pingcap.com\/ko\/blog\/a-comprehensive-guide-to-tidbs-backup-and-recovery-technology\/\" \/>\n<meta property=\"og:site_name\" content=\"TiDB\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/facebook.com\/pingcap2015\" \/>\n<meta property=\"article:published_time\" content=\"2024-10-21T04:02:49+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-10-31T02:26:41+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/static.pingcap.com\/files\/2024\/10\/20205715\/TiDBs-Backup-and-Recovery-Technology-1200-x-600-%E5%83%8F%E7%B4%A0.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"600\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"TiDB Team\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@PingCAP\" \/>\n<meta name=\"twitter:site\" content=\"@PingCAP\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"TiDB Team\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"12\ubd84\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.pingcap.com\/blog\/a-comprehensive-guide-to-tidbs-backup-and-recovery-technology\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.pingcap.com\/blog\/a-comprehensive-guide-to-tidbs-backup-and-recovery-technology\/\"},\"author\":{\"name\":\"TiDB Team\",\"@id\":\"https:\/\/www.pingcap.com\/#\/schema\/person\/b17c1fde961eebd318de8729d595df74\"},\"headline\":\"A Comprehensive Guide to TiDB&#8217;s Backup and Recovery Technology\",\"datePublished\":\"2024-10-21T04:02:49+00:00\",\"dateModified\":\"2024-10-31T02:26:41+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.pingcap.com\/blog\/a-comprehensive-guide-to-tidbs-backup-and-recovery-technology\/\"},\"wordCount\":1663,\"publisher\":{\"@id\":\"https:\/\/www.pingcap.com\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.pingcap.com\/blog\/a-comprehensive-guide-to-tidbs-backup-and-recovery-technology\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/static.pingcap.com\/files\/2024\/10\/20205735\/%E6%9C%AA%E5%91%BD%E5%90%8D%E7%9A%84%E8%AE%BE%E8%AE%A1-2.png\",\"keywords\":[\"Backup and Restore\",\"MySQL\",\"TiDB\",\"TiKV\"],\"articleSection\":[\"Product\"],\"inLanguage\":\"ko-KR\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.pingcap.com\/blog\/a-comprehensive-guide-to-tidbs-backup-and-recovery-technology\/\",\"url\":\"https:\/\/www.pingcap.com\/blog\/a-comprehensive-guide-to-tidbs-backup-and-recovery-technology\/\",\"name\":\"TiDB's Backup and Recovery Technology\",\"isPartOf\":{\"@id\":\"https:\/\/www.pingcap.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.pingcap.com\/blog\/a-comprehensive-guide-to-tidbs-backup-and-recovery-technology\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.pingcap.com\/blog\/a-comprehensive-guide-to-tidbs-backup-and-recovery-technology\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/static.pingcap.com\/files\/2024\/10\/20205735\/%E6%9C%AA%E5%91%BD%E5%90%8D%E7%9A%84%E8%AE%BE%E8%AE%A1-2.png\",\"datePublished\":\"2024-10-21T04:02:49+00:00\",\"dateModified\":\"2024-10-31T02:26:41+00:00\",\"description\":\"This article provides a comprehensive and detailed overview of TiDB's various backup and recovery capabilities.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.pingcap.com\/blog\/a-comprehensive-guide-to-tidbs-backup-and-recovery-technology\/#breadcrumb\"},\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.pingcap.com\/blog\/a-comprehensive-guide-to-tidbs-backup-and-recovery-technology\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\/\/www.pingcap.com\/blog\/a-comprehensive-guide-to-tidbs-backup-and-recovery-technology\/#primaryimage\",\"url\":\"https:\/\/static.pingcap.com\/files\/2024\/10\/20205735\/%E6%9C%AA%E5%91%BD%E5%90%8D%E7%9A%84%E8%AE%BE%E8%AE%A1-2.png\",\"contentUrl\":\"https:\/\/static.pingcap.com\/files\/2024\/10\/20205735\/%E6%9C%AA%E5%91%BD%E5%90%8D%E7%9A%84%E8%AE%BE%E8%AE%A1-2.png\",\"width\":1800,\"height\":600},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.pingcap.com\/blog\/a-comprehensive-guide-to-tidbs-backup-and-recovery-technology\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.pingcap.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"A Comprehensive Guide to TiDB&#8217;s Backup and Recovery Technology\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.pingcap.com\/#website\",\"url\":\"https:\/\/www.pingcap.com\/\",\"name\":\"TiDB\",\"description\":\"TiDB | SQL at Scale\",\"publisher\":{\"@id\":\"https:\/\/www.pingcap.com\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.pingcap.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"ko-KR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.pingcap.com\/#organization\",\"name\":\"PingCAP\",\"url\":\"https:\/\/www.pingcap.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\/\/www.pingcap.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/static.pingcap.com\/files\/2021\/11\/pingcap-logo.png\",\"contentUrl\":\"https:\/\/static.pingcap.com\/files\/2021\/11\/pingcap-logo.png\",\"width\":811,\"height\":232,\"caption\":\"PingCAP\"},\"image\":{\"@id\":\"https:\/\/www.pingcap.com\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/facebook.com\/pingcap2015\",\"https:\/\/x.com\/PingCAP\",\"https:\/\/linkedin.com\/company\/pingcap\",\"https:\/\/youtube.com\/channel\/UCuq4puT32DzHKT5rU1IZpIA\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.pingcap.com\/#\/schema\/person\/b17c1fde961eebd318de8729d595df74\",\"name\":\"TiDB Team\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\/\/www.pingcap.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/static.pingcap.com\/files\/2022\/10\/17234942\/avatar.jpg\",\"contentUrl\":\"https:\/\/static.pingcap.com\/files\/2022\/10\/17234942\/avatar.jpg\",\"caption\":\"TiDB Team\"},\"url\":\"https:\/\/www.pingcap.com\/ko\/blog\/author\/pingcap\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"TiDB's Backup and Recovery Technology","description":"This article provides a comprehensive and detailed overview of TiDB's various backup and recovery capabilities.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.pingcap.com\/ko\/blog\/a-comprehensive-guide-to-tidbs-backup-and-recovery-technology\/","og_locale":"ko_KR","og_type":"article","og_title":"TiDB's Backup and Recovery Technology","og_description":"This article provides a comprehensive and detailed overview of TiDB's various backup and recovery capabilities.","og_url":"https:\/\/www.pingcap.com\/ko\/blog\/a-comprehensive-guide-to-tidbs-backup-and-recovery-technology\/","og_site_name":"TiDB","article_publisher":"https:\/\/facebook.com\/pingcap2015","article_published_time":"2024-10-21T04:02:49+00:00","article_modified_time":"2024-10-31T02:26:41+00:00","og_image":[{"width":1200,"height":600,"url":"https:\/\/static.pingcap.com\/files\/2024\/10\/20205715\/TiDBs-Backup-and-Recovery-Technology-1200-x-600-%E5%83%8F%E7%B4%A0.png","type":"image\/png"}],"author":"TiDB Team","twitter_card":"summary_large_image","twitter_creator":"@PingCAP","twitter_site":"@PingCAP","twitter_misc":{"Written by":"TiDB Team","Est. reading time":"12\ubd84"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.pingcap.com\/blog\/a-comprehensive-guide-to-tidbs-backup-and-recovery-technology\/#article","isPartOf":{"@id":"https:\/\/www.pingcap.com\/blog\/a-comprehensive-guide-to-tidbs-backup-and-recovery-technology\/"},"author":{"name":"TiDB Team","@id":"https:\/\/www.pingcap.com\/#\/schema\/person\/b17c1fde961eebd318de8729d595df74"},"headline":"A Comprehensive Guide to TiDB&#8217;s Backup and Recovery Technology","datePublished":"2024-10-21T04:02:49+00:00","dateModified":"2024-10-31T02:26:41+00:00","mainEntityOfPage":{"@id":"https:\/\/www.pingcap.com\/blog\/a-comprehensive-guide-to-tidbs-backup-and-recovery-technology\/"},"wordCount":1663,"publisher":{"@id":"https:\/\/www.pingcap.com\/#organization"},"image":{"@id":"https:\/\/www.pingcap.com\/blog\/a-comprehensive-guide-to-tidbs-backup-and-recovery-technology\/#primaryimage"},"thumbnailUrl":"https:\/\/static.pingcap.com\/files\/2024\/10\/20205735\/%E6%9C%AA%E5%91%BD%E5%90%8D%E7%9A%84%E8%AE%BE%E8%AE%A1-2.png","keywords":["Backup and Restore","MySQL","TiDB","TiKV"],"articleSection":["Product"],"inLanguage":"ko-KR"},{"@type":"WebPage","@id":"https:\/\/www.pingcap.com\/blog\/a-comprehensive-guide-to-tidbs-backup-and-recovery-technology\/","url":"https:\/\/www.pingcap.com\/blog\/a-comprehensive-guide-to-tidbs-backup-and-recovery-technology\/","name":"TiDB's Backup and Recovery Technology","isPartOf":{"@id":"https:\/\/www.pingcap.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.pingcap.com\/blog\/a-comprehensive-guide-to-tidbs-backup-and-recovery-technology\/#primaryimage"},"image":{"@id":"https:\/\/www.pingcap.com\/blog\/a-comprehensive-guide-to-tidbs-backup-and-recovery-technology\/#primaryimage"},"thumbnailUrl":"https:\/\/static.pingcap.com\/files\/2024\/10\/20205735\/%E6%9C%AA%E5%91%BD%E5%90%8D%E7%9A%84%E8%AE%BE%E8%AE%A1-2.png","datePublished":"2024-10-21T04:02:49+00:00","dateModified":"2024-10-31T02:26:41+00:00","description":"This article provides a comprehensive and detailed overview of TiDB's various backup and recovery capabilities.","breadcrumb":{"@id":"https:\/\/www.pingcap.com\/blog\/a-comprehensive-guide-to-tidbs-backup-and-recovery-technology\/#breadcrumb"},"inLanguage":"ko-KR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.pingcap.com\/blog\/a-comprehensive-guide-to-tidbs-backup-and-recovery-technology\/"]}]},{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/www.pingcap.com\/blog\/a-comprehensive-guide-to-tidbs-backup-and-recovery-technology\/#primaryimage","url":"https:\/\/static.pingcap.com\/files\/2024\/10\/20205735\/%E6%9C%AA%E5%91%BD%E5%90%8D%E7%9A%84%E8%AE%BE%E8%AE%A1-2.png","contentUrl":"https:\/\/static.pingcap.com\/files\/2024\/10\/20205735\/%E6%9C%AA%E5%91%BD%E5%90%8D%E7%9A%84%E8%AE%BE%E8%AE%A1-2.png","width":1800,"height":600},{"@type":"BreadcrumbList","@id":"https:\/\/www.pingcap.com\/blog\/a-comprehensive-guide-to-tidbs-backup-and-recovery-technology\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.pingcap.com\/"},{"@type":"ListItem","position":2,"name":"A Comprehensive Guide to TiDB&#8217;s Backup and Recovery Technology"}]},{"@type":"WebSite","@id":"https:\/\/www.pingcap.com\/#website","url":"https:\/\/www.pingcap.com\/","name":"\ud2f0DB","description":"TiDB | SQL at Scale","publisher":{"@id":"https:\/\/www.pingcap.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.pingcap.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"ko-KR"},{"@type":"Organization","@id":"https:\/\/www.pingcap.com\/#organization","name":"PingCAP","url":"https:\/\/www.pingcap.com\/","logo":{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/www.pingcap.com\/#\/schema\/logo\/image\/","url":"https:\/\/static.pingcap.com\/files\/2021\/11\/pingcap-logo.png","contentUrl":"https:\/\/static.pingcap.com\/files\/2021\/11\/pingcap-logo.png","width":811,"height":232,"caption":"PingCAP"},"image":{"@id":"https:\/\/www.pingcap.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/facebook.com\/pingcap2015","https:\/\/x.com\/PingCAP","https:\/\/linkedin.com\/company\/pingcap","https:\/\/youtube.com\/channel\/UCuq4puT32DzHKT5rU1IZpIA"]},{"@type":"Person","@id":"https:\/\/www.pingcap.com\/#\/schema\/person\/b17c1fde961eebd318de8729d595df74","name":"TiDB Team","image":{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/www.pingcap.com\/#\/schema\/person\/image\/","url":"https:\/\/static.pingcap.com\/files\/2022\/10\/17234942\/avatar.jpg","contentUrl":"https:\/\/static.pingcap.com\/files\/2022\/10\/17234942\/avatar.jpg","caption":"TiDB Team"},"url":"https:\/\/www.pingcap.com\/ko\/blog\/author\/pingcap\/"}]}},"grav_blocks":[{"acf_fc_layout":"resources","block_title":"Related Resources","block_title_desc":"","view_all_enabled":true,"view_all_text":"View All","view_all_link_type":"","relationship_source":"","num_results":"3","custom_tag":false,"custom_category":false,"custom_resource_ids":null,"fill_remaining_resources":true,"block_background":"block-bg-none","block_background_video_type":"url","block_background_video_url":"","block_background_video_file":false,"block_background_image":false,"block_background_overlay":false,"unique_id":"","block_option_custom_class":"","block_option_padding":[],"block_option_hide":[],"block_add_top_arc":false,"block_increase_bottom_padding":false}],"card_markup":"<a class=\"card-resource bg-white\" href=\"https:\/\/www.pingcap.com\/ko\/blog\/a-comprehensive-guide-to-tidbs-backup-and-recovery-technology\/\"><div class=\"card-resource__image-container\"><img class=\"card-resource__image\" alt=\"\u672a\u547d\u540d\u7684\u8bbe\u8ba1\" src=\"https:\/\/static.pingcap.com\/files\/2024\/10\/20205735\/%E6%9C%AA%E5%91%BD%E5%90%8D%E7%9A%84%E8%AE%BE%E8%AE%A1-2.png\" loading=\"lazy\" width=1800 height=600 \/><\/div><div class=\"card-resource__content-container\"><div class=\"card-resource__content-head\"><div class=\"card-resource__category\">Product<\/div><\/div><h5 class=\"card-resource__title\">A Comprehensive Guide to TiDB&#8217;s Backup and Recovery Technology<\/h5><\/div><\/a>","_links":{"self":[{"href":"https:\/\/www.pingcap.com\/ko\/wp-json\/wp\/v2\/posts\/22169","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.pingcap.com\/ko\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.pingcap.com\/ko\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.pingcap.com\/ko\/wp-json\/wp\/v2\/users\/8"}],"replies":[{"embeddable":true,"href":"https:\/\/www.pingcap.com\/ko\/wp-json\/wp\/v2\/comments?post=22169"}],"version-history":[{"count":5,"href":"https:\/\/www.pingcap.com\/ko\/wp-json\/wp\/v2\/posts\/22169\/revisions"}],"predecessor-version":[{"id":22585,"href":"https:\/\/www.pingcap.com\/ko\/wp-json\/wp\/v2\/posts\/22169\/revisions\/22585"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.pingcap.com\/ko\/wp-json\/wp\/v2\/media\/22173"}],"wp:attachment":[{"href":"https:\/\/www.pingcap.com\/ko\/wp-json\/wp\/v2\/media?parent=22169"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.pingcap.com\/ko\/wp-json\/wp\/v2\/categories?post=22169"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.pingcap.com\/ko\/wp-json\/wp\/v2\/tags?post=22169"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}