---
title: "Importing Data into TiDB Using TiDB Lightning"
version: "v2"
status: "GA"
description: "In this hands-on lab, you will learn how to import data into TiDB using TiDB Lightning. Specifically, we will cover how to import CSV files into TiDB, importing data into TiDB in parallel,  This lab is a practical workshop that allows you to learn how to import data into TiDB using TiDB Lightning."
---

# Lab 6: Importing Data into TiDB Using TiDB Lightning

## Overview

>[!NOTE]
> This hands-on lab is also included in the [TiDB Certification Training: TiDB Administration Using TiUP](https://www.pingcap.com/education/course-tidb-database-administration-for-self-hosted-deployments/) course.

In this lab, you import the data into TiDB using `TiDB Lightning`. The following shows the deployment topology diagram of TiDB cluster.

   ![60%](https://lab-static.pingcap.com/quick-demo/TiDBClusterDeploymentTopologyExercisewithLighting_aa_003_20230301.png)


> [!TIP]
> Click **Start** to launch the lab environment.
> Once the environment is ready, select **Next** on the bottom toolbar to advance to **Module 1**.
> And, follow the step-by-step lab guide to connect to the hands-on environment and begin your tasks.

## Module 1: Importing CSV File into TiDB

### Step 1. Log into the remote Linux

+ Click here - [Terminal 1](ssh://monitor1-ssh#1) to open a new terminal connected to the virtual machine assigned for your hands-on lab.

+ The banner after you logged in:

    ```output
     ,     #_
    ~\_  ####_        Amazon Linux 2
    ~~  \_#####\
    ~~     \###|      
    ~~       \#/ ___
    ~~       V~' '->
    ~~~         /    A newer version of Amazon Linux is available!
     ~~._.   _/
        _/ _/       Amazon Linux 2023, GA and supported until 2028-03-15.
      _/m/'           https://aws.amazon.com/linux/amazon-linux-2023/
    ```

### Step 2. Create a user for Lightning task
   
  ```bash
  source hosts-env.sh
  ```

  ```bash
  mysql -h ${HOST_DB1_PRIVATE_IP} -uroot -P4000
  ```

  ```sql
  CREATE USER ltask@'%' IDENTIFIED BY 'q1w2e3R4_';
  ```
  ```output
  mysql> CREATE USER ltask@'%' IDENTIFIED BY 'q1w2e3R4_';
  Query OK, 0 rows affected (0.05 sec)
  ```

  ```sql
  GRANT ALL PRIVILEGES ON *.* TO ltask@'%';
  ```
  ```output
  mysql> GRANT ALL PRIVILEGES ON *.* TO ltask@'%';
  Query OK, 0 rows affected (0.05 sec)
  ```

  ```sql
  EXIT;
  ```
  ```output
  mysql> EXIT;
  ```

### Step 3. Install the `TiDB Lightning` on `monitor1`.

  ```bash
  tiup install tidb-lightning
  ```

### Step 4. Extract the data

  ```bash
  unzip -u stage/tidb-admin-dataset-v2.zip -d stage/
  ```
  ```output
  Archive:  tidb-admin-dataset-v2.zip
     creating: TiDB-Administration-exercise-data-v2/
     ...
  ```

### Step 5. List the contents of the CSV data directory

  ```bash
  ls ~/stage/TiDB-Administration-exercise-data-v2/exercise-lightning/Importing-CSV-File
  ```
  ```output
  emp.sal.000000000.csv  emp.sal.000000002.csv  emp.sal.000000004.csv  emp.sal.000000006.csv  emp.sal.000000008.csv  emp.sal.000000010.csv
  emp.sal.000000001.csv  emp.sal.000000003.csv  emp.sal.000000005.csv  emp.sal.000000007.csv  emp.sal.000000009.csv  metadata
  ```

### Step 6. View the `emp.sal.000000000.csv` file

  ```bash
  head -n 10 ~/stage/TiDB-Administration-exercise-data-v2/exercise-lightning/Importing-CSV-File/emp.sal.000000000.csv
  ```
  ```output
  "emp_no","salary","from_date","to_date"
  10001,60117,"1986-06-26","1987-06-26"
  10001,62102,"1987-06-26","1988-06-25"
  10001,66074,"1988-06-25","1989-06-25"
  10001,66596,"1989-06-25","1990-06-25"
  10001,66961,"1990-06-25","1991-06-25"
  10001,71046,"1991-06-25","1992-06-24"
  10001,74333,"1992-06-24","1993-06-24"
  10001,75286,"1993-06-24","1994-06-24"
  10001,75994,"1994-06-24","1995-06-24"
  ```

  ```bash
  wc -l ~/stage/TiDB-Administration-exercise-data-v2/exercise-lightning/Importing-CSV-File/emp.sal.000000000.csv
  ```
  ```output
  275696 /home/ec2-user/stage/TiDB-Administration-exercise-data-v2/exercise-lightning/Importing-CSV-File/emp.sal.000000000.csv
  ```

### Step 7. Check the configuration file for lightning

+ Read the `solution-lightning-csv.toml`. The IP addresses shown below will be different from yours.
  
  ```bash
  cd
  ```

  ```bash
  cat solution-lightning-csv.toml
  ```
  ```output
  [lightning]

  # The concurrency number of data. It is set to the number of logical CPU
  # cores by default. When deploying together with other components, you can
  # set it to 75% of the size of logical CPU cores to limit the CPU usage.
  # region-concurrency = 1

  # Logging
  level = "info"
  file = "tidb-lightning-csv.log"


  [tikv-importer]
  # Sets the backend to the "local" mode.
  backend = "local"
  # Sets the directory of temporary local storage.
  sorted-kv-dir = "/tmp/sorted-kv-dir"

  [mydumper]
  # Local source data directory
  data-source-dir = "/home/ec2-user/stage/TiDB-Administration-exercise-data-v2/exercise-lightning/Importing-CSV-File"
  # Configures the wildcard rule. By default, all tables in the mysql, sys, INFORMATION_SCHEMA, PERFORMANCE_SCHEMA, METRICS_SCHEMA, and INSPECTION_SCHEMA system databases are filtered.
  # If this item is not configured, the "cannot find schema" error occurs when system tables are imported.
  filter = ['*.*', '!mysql.*', '!sys.*', '!INFORMATION_SCHEMA.*', '!PERFORMANCE_SCHEMA.*', '!METRICS_SCHEMA.*', '!INSPECTION_SCHEMA.*']

  [[mydumper.files]]
  # Import only 00001~05000 data files and ignore other files
  pattern = '(?i)(?:[/]*/)*emp\.sal\.(00000000[0-1]|000000001)\.csv'
  schema = "emp"
  table = "sal"
  type = "csv"

  [mydumper.csv]
  # Separator between fields. Must not be empty.
  separator = ','
  # Quoting delimiter. Empty value means no quoting.
  delimiter = '"'
  # Line terminator. Empty value means both "\n" (LF) and "\r\n" (CRLF) are line terminators.
  terminator = ""
  # Whether the CSV files contain a header.
  # If `header` is true, the first line will be skipped.
  header = true
  # Whether the CSV contains any NULL value.
  # If `not-null` is true, all columns from CSV cannot be NULL.
  not-null = false
  # When `not-null` is false (that is, CSV can contain NULL),
  # fields equal to this value will be treated as NULL.
  null = '\N'
  # Whether to interpret backslash escapes inside fields.
  backslash-escape = true
  # If a line ends with a separator, remove it.
  trim-last-separator = false

  [tidb]
  # Configuration of any TiDB server from the cluster.
  host = "<HOST_DB1_PRIVATE_IP>"
  port = 4000
  user = "ltask"
  password = "q1w2e3R4_"
  # Table schema information is fetched from TiDB via this status-port.
  status-port = 10080
  # Address of any PD server from the cluster.
  pd-addr = "10.90.2.84:2379"
  ```

### Step 8. Connect to the TiDB

   ```bash
   mysql -h ${HOST_DB1_PRIVATE_IP} --port 4000 -u root
   ```

### Step 9. Prepare the schema

  ```sql
  DROP DATABASE IF EXISTS emp;
  ```
  ```output
  mysql> DROP DATABASE IF EXISTS emp;
  Query OK, 0 rows affected (0.21 sec)
  ```

  ```sql
  CREATE DATABASE emp;
  ```
  ```output
  mysql> CREATE DATABASE emp;
  Query OK, 0 rows affected (0.07 sec)
  ```

  ```sql
  USE emp;
  ```
  ```output
  mysql> USE emp;
  Database changed
  ```

  ```sql
  CREATE TABLE `sal` ( `emp_no` INT(11) NOT NULL, `salary` INT(11) NOT NULL, `from_date` DATE NOT NULL, `to_date` DATE NOT NULL, PRIMARY KEY (`emp_no`,`from_date`));
  ```
  ```output
  mysql> CREATE TABLE `sal` ( `emp_no` INT(11) NOT NULL, `salary` INT(11) NOT NULL, `from_date` DATE NOT NULL, `to_date` DATE NOT NULL, PRIMARY KEY (`emp_no`,`from_date`));
  Query OK, 0 rows affected (0.08 sec)
  ```

  ```sql
  SELECT COUNT(*) FROM emp.sal;
  ```
  ```output
  mysql> SELECT COUNT(*) FROM emp.sal;
  +----------+
  | COUNT(*) |
  +----------+
  |        0 |
  +----------+
  1 row in set (0.00 sec)
  ```

  ```sql
  EXIT;
  ```
  ```output
  mysql> EXIT;
  ```

### Step 10. Import the data using Lightning

+ Use a `nohup` command to start the `tidb-lightning` process.  (You can press <kbd>Enter</kbd> to make ` tidb-lighting` work in the background):

  ```bash
  nohup tiup tidb-lightning -config solution-lightning-csv.toml > nohup.out &
  ```
  ```output
  [1] 17481
  nohup: ignoring input and redirecting stderr to stdout
  ...
  [1]+  Done      nohup tiup tidb-lightning -config solution-tidb-lightning-csv.toml > nohup.out
  ```

### Step 11. View the output of lightning

+ View the contents of the `nohup.out` file to verify that `TiDB Lightning` is exited. :

  ```bash
  cat nohup.out
  ```
  ```output
  Verbose debug logs will be written to tidb-lightning-csv.log

     +----+-----------------------------------------------------------------------------------------------------------------------+-------------+--------+
     |  # | CHECK ITEM                                                                                                            | TYPE        | PASSED |
     +----+-----------------------------------------------------------------------------------------------------------------------+-------------+--------+
     |  1 | Source csv files size is proper                                                                                       | performance | true   |
     +----+-----------------------------------------------------------------------------------------------------------------------+-------------+--------+
     |  2 | checkpoints are valid                                                                                                 | critical    | true   |
     +----+-----------------------------------------------------------------------------------------------------------------------+-------------+--------+
     |  3 | table schemas are valid                                                                                               | critical    | true   |
     +----+-----------------------------------------------------------------------------------------------------------------------+-------------+--------+
     |  4 | Cluster is available                                                                                                  | critical    | true   |
     +----+-----------------------------------------------------------------------------------------------------------------------+-------------+--------+
     |  5 | Lightning has the correct storage permission                                                                          | critical    | true   |
     +----+-----------------------------------------------------------------------------------------------------------------------+-------------+--------+
     |  6 | sorted-kv-dir:/tmp/sorted-kv-dir and data-source-dir:/home/ec2-user/sample/csv are in the same disk, may slow down performance | performance | false  |
     +----+-----------------------------------------------------------------------------------------------------------------------+-------------+--------+
     |  7 | local disk resources are rich, estimate sorted data size 20.53MiB, local available is 5.15GiB                         | critical    | true   |
     +----+-----------------------------------------------------------------------------------------------------------------------+-------------+--------+
     |  8 | Cluster available is rich, available is 54.48GiB, we need 61.58MiB                                                    | critical    | true   |
     +----+-----------------------------------------------------------------------------------------------------------------------+-------------+--------+
     |  9 | Cluster doesn't have too many empty regions                                                                           | critical    | true   |
     +----+-----------------------------------------------------------------------------------------------------------------------+-------------+--------+
     | 10 | Cluster region distribution is balanced                                                                               | critical    | true   |
     +----+-----------------------------------------------------------------------------------------------------------------------+-------------+--------+

  tidb lightning exit successfully
  ```

+ If any error occurs, view the contents of the `tidb-lightning-csv.log` file to confirm the cause of the error:

  ```bash
  less tidb-lightning-csv.log
  ```

+ You might need to delete lightning checkpoint before importing the data again. The following command assumes that the checkpoint is stored in `/tmp/`.

  ```bash
  rm /tmp/tidb_lightning_checkpoint.pb
  ```

### Step 12. View the data in TiDB

  ```bash
  mysql -h ${HOST_DB1_PRIVATE_IP} --port 4000 -u root
  ```

  ```sql
  SELECT COUNT(*) FROM emp.sal;
  ```
  ```output
  mysql> SELECT COUNT(*) FROM emp.sal;
  +----------+
  | COUNT(*) |
  +----------+
  |   551395 |
  +----------+
  1 row in set (0.20 sec)
  ```

  ```sql
  EXIT
  ```
  ```output
  mysql> EXIT;
  Bye
  ```

## Module 2: Importing Data into TiDB in Parallel

+ In this exercise, you import multiple tables into TiDB using `TiDB Lightning` in parallel. The following diagram shows how to use `TiDB Lightning` to import sharded databases and tables into TiDB in parallel. In our example, `my_table_1` contains all the records with an odd ID number, and `my_table_2` has all the records with an even ID number.

  ![60%](https://lab-static.pingcap.com/quick-demo/TiDBLightningLabToplogy_aa_003_20220725.png)  

### Step 1. List the contents of the data files directory

  ```bash
  ls ~/stage/TiDB-Administration-exercise-data-v2/exercise-lightning/Importing-Data-into-TiDB-in-Parallel/my_table_1
  ```
  ```output
  metadata  my_db.my_table_1.000000000.sql  my_db.my_table_1-schema.sql  my_db-schema-create.sql
  ```

### Step 2. Check the data source files

+ View the `my_db-schema-create.sql`, `my_db.my_table_1-schema.sql` and `my_db.my_table_1.000000000.sql` files to learn about their structures.
  
  ```bash
  cat ~/stage/TiDB-Administration-exercise-data-v2/exercise-lightning/Importing-Data-into-TiDB-in-Parallel/my_table_1/my_db-schema-create.sql
  ```
  ```output
  /*!40101 SET NAMES binary*/;
  CREATE DATABASE `my_db` /*!40100 DEFAULT CHARACTER SET latin1 */;
  ```

  ```bash
  cat ~/stage/TiDB-Administration-exercise-data-v2/exercise-lightning/Importing-Data-into-TiDB-in-Parallel/my_table_1/my_db.my_table_1-schema.sql 
  ```
  ```output
  /*!40101 SET NAMES binary*/;
  CREATE TABLE `my_table_1` (
  `id` int(11) NOT NULL,
  `name` varchar(32) DEFAULT NULL,
  PRIMARY KEY (`id`)
  ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
  ```

  ```bash
  cat ~/stage/TiDB-Administration-exercise-data-v2/exercise-lightning/Importing-Data-into-TiDB-in-Parallel/my_table_1/my_db.my_table_1.000000000.sql
  ```
  ```output
  /*!40101 SET NAMES binary*/;
  > INSERT INTO `my_table_1` VALUES
  (1,'tom'),
  (3,'frank');
  ...
  ```

### Step 3. Open a new terminal (terminal 2)

+ Click here - [Terminal 2](ssh://monitor1-ssh#2) to open a new terminal connected to the virtual machine assigned for your hands-on lab.

+ The banner after you logged in:

    ```output
     ,     #_
    ~\_  ####_        Amazon Linux 2
    ~~  \_#####\
    ~~     \###|      
    ~~       \#/ ___
    ~~       V~' '->
    ~~~         /    A newer version of Amazon Linux is available!
     ~~._.   _/
        _/ _/       Amazon Linux 2023, GA and supported until 2028-03-15.
      _/m/'           https://aws.amazon.com/linux/amazon-linux-2023/
    ```

### Step 4. In terminal 2, login to `PD1`

  ```bash
  ./ssh-to-pd1.sh  
  ```
  ```output
  ...
     ,     #_
     ~\_  ####_        Amazon Linux 2
     ~~  \_#####\
     ~~     \###|       
     ~~       \#/ ___
     ~~       V~' '->
        ~~~         /    A newer version of Amazon Linux is available!
        ~~._.   _/
           _/ _/       Amazon Linux 2023, GA and supported until 2028-03-15.
           _/m/'           https://aws.amazon.com/linux/amazon-linux-2023/
  ...
  ```

### Step 5. In terminal 2, extract the data

  ```bash
  unzip -u stage/tidb-admin-dataset-v2.zip -d stage/
  ```
  ```bash
  ls ~/stage/TiDB-Administration-exercise-data-v2/exercise-lightning/Importing-Data-into-TiDB-in-Parallel/my_table_2
  ```
  ```output
  metadata
  my_db.my_table_2.000000000.sql
  my_db.my_table_2-schema.sql
  my_db-schema-create.sql
  ```

### Step 6. In terminal 2, check the data files

  ```bash
  cat ~/stage/TiDB-Administration-exercise-data-v2/exercise-lightning/Importing-Data-into-TiDB-in-Parallel/my_table_2/my_db-schema-create.sql
  ```
  ```output
  /*!40101 SET NAMES binary*/;
  CREATE DATABASE `my_db` /*!40100 DEFAULT CHARACTER SET latin1 */;
  ```

  ```bash
  cat ~/stage/TiDB-Administration-exercise-data-v2/exercise-lightning/Importing-Data-into-TiDB-in-Parallel/my_table_2/my_db.my_table_2-schema.sql
  ```
  ```output
  /*!40101 SET NAMES binary*/;
  CREATE TABLE `my_table_2` (
  `id` int(11) NOT NULL,
  `name` varchar(32) DEFAULT NULL,
  PRIMARY KEY (`id`)
  ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
  ```

  ```bash
  cat ~/stage/TiDB-Administration-exercise-data-v2/exercise-lightning/Importing-Data-into-TiDB-in-Parallel/my_table_2/my_db.my_table_2.000000000.sql
  ```
  ```output
  /*!40101 SET NAMES binary*/;
  INSERT INTO `my_table_2` VALUES
  (2,'jack'),
  (4,'tony');
  ...
  ```

### Step 7. In terminal 1, view `solution-lightning-p1.toml`. 

+ The IP addresses shown below will be different from yours.
  
  ```bash
  cat solution-lightning-p1.toml
  ```
  ```output
  [lightning]

  # The concurrency number of data. It is set to the number of logical CPU
  # cores by default. When deploying together with other components, you can
  # set it to 75% of the size of logical CPU cores to limit the CPU usage.
  # region-concurrency = 1

  # Logging
  level = "info"
  file = "tidb-lightning-p1.log"

  [tikv-importer]
  # Whether to allow importing data to tables with data. The default value is `false`.
  # When you use parallel import mode, you must set it to `true`, because multiple TiDB Lightning instances are importing the same table at the same time.
  incremental-import = true
  # Sets the backend to the "local" mode.
  backend = "local"
  # Sets the directory of temporary local storage.
  sorted-kv-dir = "/tmp/sorted-kv-dir"

  [mydumper]
  # Local source data directory
  data-source-dir = "/home/ec2-user/stage/TiDB-Administration-exercise-data-v2/exercise-lightning/Importing-Data-into-TiDB-in-Parallel/my_table_1"
  # Only import tables if these wildcard rules are matched. See the corresponding section for details.
  filter = ['*.*', '!mysql.*', '!sys.*', '!INFORMATION_SCHEMA.*', '!PERFORMANCE_SCHEMA.*', '!METRICS_SCHEMA.*', '!INSPECTION_SCHEMA.*']

  [[routes]]
  schema-pattern = "my_db"
  table-pattern = "my_table_*"
  target-schema = "my_db"
  target-table = "my_table"

  [tidb]
  # Configuration of any TiDB server from the cluster.
  host = "<HOST_DB1_PRIVATE_IP>"
  port = 4000
  user = "ltask"
  password = "q1w2e3R4_"
  # Table schema information is fetched from TiDB via this status-port.
  status-port = 10080
  # Address of any PD server from the cluster.
  pd-addr = "10.90.2.84:2379"                   
  ``` 
  
### Step 8. In terminal 2, install `TiUP` and `Lightning`

  ```bash
  ./01-install-tiup.sh
  ```
  ```bash
  source .bash_profile
  ```
  ```bash
  tiup mirror set tidb-community-server-7.5.1-linux-amd64
  tiup install tidb-lightning
  ```

### Step 9. In terminal 1, copy the file `solution-lightning-p2.toml` to `pd1`

  ```bash
  scp -i ~/.ssh/pe-class-key-oregon.pem solution-lightning-p2.toml ec2-user@${HOST_PD1_PRIVATE_IP}:/home/ec2-user/
  ```
  ```output
  solution-lightning-p2.toml                                                              100%  720   678.5KB/s   00:00
  ```

### Step 10. In terminal 1, connect to the TiDB and drop the `my_db` database

  ```bash
  mysql -h ${HOST_DB1_PRIVATE_IP} --port 4000 -u root
  ```

  ```bash
  DROP DATABASE IF EXISTS my_db;
  ```
  ```output
  mysql> DROP DATABASE IF EXISTS my_db;
  ```

  ```bash
  EXIT
  ```
  ```output
  mysql> EXIT;
  Bye
  ```

### Step 11. In terminal 1, import the data using Lightning

+ Use a `nohup` command to start the `tidb-lightning` process (Press <kbd>Enter</kbd> to make `tidb-lighting` work in the background). 
+ Please execute step 11 and step 12 at almost the same time
  
  ```bash
  nohup tiup tidb-lightning -config solution-lightning-p1.toml > nohup.out &
  ```
  ```output
  [1] 4256
  # nohup: ignoring input and redirecting stderr to stdout 
  ...

  [1]+  Done                    nohup tidb-lightning -config solution-lightning-p1.toml > nohup
  ```

### Step 12. In terminal 2, import the data using Lightning

  ```bash
  nohup .tiup/bin/tiup tidb-lightning -config solution-lightning-p2.toml > nohup.out &
  ```
  ```output
  [1] 4256
  # nohup: ignoring input and redirecting stderr to stdout
  ...

  [1]+  Done                    nohup tidb-lightning -config solution-lightning-p2.toml > nohup
  ```

### Step 13. In both terminals, view the Lightning output

+ In [Terminal 1](ssh://monitor1-ssh#1) , view the contents of the `nohup.out` file to verify that `TiDB Lightning` was exited successfully. , and type `:q!` to quit to the terminal: 
  
  ```bash
  cat nohup.out
  ```
  ```output
  +----+----------------------------------------------------------------------------------------------------------------------------------+-------------+--------+
  |  # | CHECK ITEM                                                                                                                       | TYPE        | PASSED |
  +----+----------------------------------------------------------------------------------------------------------------------------------+-------------+--------+
  |  1 | Source csv files size is proper                                                                                                  | performance | true   |
  +----+----------------------------------------------------------------------------------------------------------------------------------+-------------+--------+
  |  2 | checkpoints are valid                                                                                                            | critical    | true   |
  +----+----------------------------------------------------------------------------------------------------------------------------------+-------------+--------+
  |  3 | table schemas are valid                                                                                                          | critical    | true   |
  +----+----------------------------------------------------------------------------------------------------------------------------------+-------------+--------+
  |  4 | Cluster is available                                                                                                             | critical    | true   |
  +----+----------------------------------------------------------------------------------------------------------------------------------+-------------+--------+
  |  5 | Lightning has the correct storage permission                                                                                     | critical    | true   |
  +----+----------------------------------------------------------------------------------------------------------------------------------+-------------+--------+
  |  6 |sorted-kv-dir:/tmp/sorted-kv-dir and data-source-dir:/home/ec2-user/sample/sql/my_table_1 are in the same disk, may slow down performance  | performance | false  |
  +----+----------------------------------------------------------------------------------------------------------------------------------+-------------+--------+
  |  7 | local disk resources are rich, estimate sorted data size 85B, local available is 5.149GiB                                        | critical    | true   |
  +----+----------------------------------------------------------------------------------------------------------------------------------+-------------+--------+
  |  8 | Cluster available is rich, available is 54.46GiB, we need 255B                                                                   | critical    | true   |
  +----+----------------------------------------------------------------------------------------------------------------------------------+-------------+--------+
  |  9 | Cluster doesn't have too many empty regions                                                                                      | critical    | true   |
  +----+----------------------------------------------------------------------------------------------------------------------------------+-------------+--------+
  | 10 | Cluster region distribution is balanced                                                                                          | critical    | true   |
  +----+----------------------------------------------------------------------------------------------------------------------------------+-------------+--------+
  tidb lightning exit successfully
  ```

+ If any error occurs, view the contents of the `tidb-lightning-p1.log` file to confirm the cause of the error.

  ```bash
  cat tidb-lightning-p1.log
  ```

+ You might need to delete lightning checkpoint before importing the data again. The following command assumes that the checkpoint is stored in `/tmp/`.

  ```bash
  rm /tmp/tidb_lightning_checkpoint.pb
  ```

+ In [Terminal 2](ssh://monitor1-ssh#2) , view the contents of the `nohup.out` file to verify that `TiDB Lightning` is exited successfully.
  
  ```bash
  cat nohup.out
  ```
  ```output
  Verbose debug logs will be written to tidb-lightning-p2.log

  +----+----------------------------------------------------------------------------------------------------------------------------------+-------------+--------+
  |  # | CHECK ITEM                                                                                                                       | TYPE        | PASSED |
  +----+----------------------------------------------------------------------------------------------------------------------------------+-------------+--------+
  |  1 | Source csv files size is proper                                                                                                  | performance | true   |
  +----+----------------------------------------------------------------------------------------------------------------------------------+-------------+--------+
  |  2 | checkpoints are valid                                                                                                            | critical    | true   |
  +----+----------------------------------------------------------------------------------------------------------------------------------+-------------+--------+
  |  3 | table schemas are valid                                                                                                          | critical    | true   |
  +----+----------------------------------------------------------------------------------------------------------------------------------+-------------+--------+
  |  4 | Cluster is available                                                                                                             | critical    | true   |
  +----+----------------------------------------------------------------------------------------------------------------------------------+-------------+--------+
  |  5 | Lightning has the correct storage permission                                                                                     | critical    | true   |
  +----+----------------------------------------------------------------------------------------------------------------------------------+-------------+--------+
  |  6 |sorted-kv-dir:/tmp/sorted-kv-dir and data-source-dir:/home/ec2-user/sample/sql/my_table_2 are in the same disk, may slow down performance  | performance | false  |
  +----+----------------------------------------------------------------------------------------------------------------------------------+-------------+--------+
  |  7 | local disk resources are rich, estimate sorted data size 85B, local available is 7.173GiB                                        | critical    | true   |
  +----+----------------------------------------------------------------------------------------------------------------------------------+-------------+--------+
  |  8 | Cluster available is rich, available is 54.46GiB, we need 255B                                                                   | critical    | true   |
  +----+----------------------------------------------------------------------------------------------------------------------------------+-------------+--------+
  |  9 | Cluster doesn't have too many empty regions                                                                                      | critical    | true   |
  +----+----------------------------------------------------------------------------------------------------------------------------------+-------------+--------+
  | 10 | Cluster region distribution is balanced                                                                                          | critical    | true   |
  +----+----------------------------------------------------------------------------------------------------------------------------------+-------------+--------+

  tidb lightning exit successfully
  ```

### Step 14. In terminal 1, connect to the TiDB and query the `emp.sal` table

  ```bash
  mysql -h ${HOST_DB1_PRIVATE_IP} --port 4000 -u root
  ```
  ```bash
  SELECT COUNT(*) FROM my_db.my_table;
  ```
  ```output
  mysql> SELECT COUNT(*) FROM my_db.my_table;
  +----------+
  | COUNT(*) |
  +----------+
  |    40156 |
  +----------+
  1 row in set (0.01 sec)
  ```

## End of Exercises