## 模块 1：连接到 MySQL Server 并运行查询以验证数据源

### 步骤 1. 连接到远程 Linux - TiUP 控制机

+ 点击 [终端 1](ssh://monitor1-ssh#1) 打开一个新的终端，连接到为你的实践实验分配的虚拟机。

### 步骤 2. 连接到 MySQL server 实例

+ 连接到 MySQL server 节点。如果有提示，回答 `yes`。

   ```bash
   ssh -i /home/ec2-user/.ssh/pe-class-key-${LAB:REGION_NAME}.pem rocky@${HOST_MYSQL1_PRIVATE_IP}
   ```

   ```output
   Last login: Thu Aug  1 11:58:47 2024 from 10.90.4.90
   [rocky@ip-10-90-1-235 ~]$
   ```

+ 使用数据库用户 `root` 连接到 MySQL server。

   ```bash
   mysql -h localhost -P 3306 -u root -pq1w2e3R4_ --connect-expired-password
   ```

   ```output
   mysql>
   ```

### 步骤 3. 查看 MySQL 中的现有的表

+ 验证 `sbtest` 数据库中的表和数据已存在。

   ```sql
   SHOW DATABASES;
   ```

   ```output
   +--------------------+
   | Database           |
   +--------------------+
   | information_schema |
   | mysql              |
   | performance_schema |
   | sbtest             |
   | sys                |
   +--------------------+
   5 rows in set (0.01 sec)
   ```

   ```sql
   SHOW TABLES FROM sbtest;
   ```

   ```output
   +------------------+
   | Tables_in_sbtest |
   +------------------+
   | sbtest1          |
   | sbtest2          |
   | sbtest3          |
   | sbtest4          |
   | sbtest5          |
   | sbtest6          |
   +------------------+
   6 rows in set (0.00 sec)
   ```

+ 查看表 `sbtest.sbtest1` 的结构。

   ```sql
   DESC sbtest.sbtest1;
   ```

   ```output
   +-------+-----------+------+-----+---------+----------------+
   | Field | Type      | Null | Key | Default | Extra          |
   +-------+-----------+------+-----+---------+----------------+
   | id    | int       | NO   | PRI | NULL    | auto_increment |
   | k     | int       | NO   | MUL | 0       |                |
   | c     | char(120) | NO   |     |         |                |
   | pad   | char(60)  | NO   |     |         |                |
   +-------+-----------+------+-----+---------+----------------+
   4 rows in set (0.00 sec)
   ```

+ 查看表 `sbtest.sbtest1`的行数。这大约需要几秒钟。（请注意，你现在正在连接 MySQL）

   ```sql
   SELECT COUNT(id) FROM sbtest.sbtest1;
   ```

   ```output
   +-----------+
   | COUNT(id) |
   +-----------+
   |  10000000 |
   +-----------+
   1 row in set (29.75 sec)
   ```

### 步骤 4. 了解数据源 MySQL server 中的数据量

+ 在 `sbtest` 数据库上执行 `ANALYZE` 命令。该数据库中除了 `sbtest1`, 还包含 `sbtest2`, `sbtest3`, `sbtest4`, `sbtest5`, 和 `sbtest6`。

   ```sql
   ANALYZE TABLE sbtest.sbtest1, sbtest.sbtest2, sbtest.sbtest3, sbtest.sbtest4, sbtest.sbtest5, sbtest.sbtest6;
   ```

   ```output
   +----------------+---------+----------+----------+
   | Table          | Op      | Msg_type | Msg_text |
   +----------------+---------+----------+----------+
   | sbtest.sbtest1 | analyze | status   | OK       |
   | sbtest.sbtest2 | analyze | status   | OK       |
   | sbtest.sbtest3 | analyze | status   | OK       |
   | sbtest.sbtest4 | analyze | status   | OK       |
   | sbtest.sbtest5 | analyze | status   | OK       |
   | sbtest.sbtest6 | analyze | status   | OK       |
   +----------------+---------+----------+----------+
   6 rows in set (34.08 sec)
   ```

+ 获取 `sbtest` 数据库的数据大小，应该约为 `13.43GB`。

   ```sql
   SELECT CONCAT(ROUND(SUM((data_length + index_length)/1024/1024/1024),2), 'GB') AS data
   FROM information_schema.tables
   WHERE table_schema='sbtest';
   ```

   ```output
   +---------+
   | data    |
   +---------+
   | 13.43GB |
   +---------+
   1 row in set (0.00 sec)
   ```

+ 退出到操作系统提示符。

   ```sql
   EXIT
   ```

   ```output
   bye
   ```

+ 保持远程终端与 MySQL server 的连接（你看到的提示符应该以 `[rocky@` 开头），并继续进行下一个模块。
