## モジュール 3: ソース MySQL からのいくつかの変更を行う

### 手順 1. TiUP 制御マシンに接続し、次に MySQL サーバーに接続する

+ 新しいローカルターミナル [ターミナル 2](ssh://monitor1-ssh#2)を開き、その後MySQLサーバーに接続します。

   ```output
   Last login: Thu Aug  1 11:58:37 2024 from xxxxxxxxxx
   ```

+ MySQLサーバーノードに接続します。

   ```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 ~]$
   ```

  + データベースセッションを持つMySQLサーバーに接続します。

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

   ```output
   mysql>
   ```

### 手順 2. MySQL から UPDATE を実行する

+ [ターミナル 2](ssh://monitor1-ssh#2)（MySQL側）で、特定の行に対するカラム`c`を`Changed on MySQL`に設定します。

   ```sql
   SELECT * FROM sbtest.sbtest1 WHERE id=1;
   UPDATE sbtest.sbtest1 SET c='Changed on MySQL' WHERE id=1;
   SELECT * FROM sbtest.sbtest1 WHERE id=1;
   ```

   ```output
   mysql> SELECT * FROM sbtest.sbtest1 WHERE id=1;
   +---+---------+-----------------------------------------------------------------------------------------------+-------------------------------------------------------------+
   | id | k       | c                                                                                             | pad                                                         |
   +---+---------+-----------------------------------------------------------------------------------------------+-------------------------------------------------------------+
   |  1 | 5014614 | 68487932199-96439406143-93774651418-41631865787-96406072701-20604855487-25459966574-28203206787-41238978918-19503783441 | 22195207048-70116052123-74140395089-76317954521-98694025897 |
   +---+---------+-----------------------------------------------------------------------------------------------+-------------------------------------------------------------+
   1 row in set (0.00 sec)

   mysql> UPDATE sbtest.sbtest1 SET c='Changed on MySQL' WHERE id=1;
   Query OK, 1 row affected (0.00 sec)
   Rows matched: 1  Changed: 1  Warnings: 0

   mysql> SELECT * FROM sbtest.sbtest1 WHERE id=1;
   +---+---------+------------------+-------------------------------------------------------------+
   | id | k       | c                | pad                                                         |
   +---+---------+------------------+-------------------------------------------------------------+
   |  1 | 5014614 | Changed on MySQL | 22195207048-70116052123-74140395089-76317954521-98694025897 |
   +---+---------+------------------+-------------------------------------------------------------+
   1 row in set (0.00 sec)
   ```

### 手順 3: TiUP 制御マシンに接続し、次に TiDB インスタンスに接続する

+ 新しいターミナル、[ターミナル 3](ssh://monitor1-ssh#3)を開き、その後TiDBクラスタに接続します。

   ```output
   Last login: Thu Aug  1 11:58:37 2024 from xxxxxxxxxx
   ```

+ TiDBクラスタに接続します。

   ```bash
   export MYSQL_PS1="tidb:db1> "
   mysql -h ${HOST_DB1_PRIVATE_IP} -P 4000 -u root
   ```

   ```output
   tidb:db1>
   ```

### 手順 4. TiDB からの UPDATE操作の結果を観察する

+ [ターミナル 3](ssh://monitor1-ssh#3)（TiDB側）で、MySQLから同期された変更をTiDB側から確認します。

   ```sql
   SELECT * FROM sbtest.sbtest1 WHERE id=1;
   ```

   ```output
   tidb:db1> SELECT * FROM sbtest.sbtest1 WHERE id=1;
   +---+---------+------------------+-------------------------------------------------------------+
   | id | k       | c                | pad                                                         |
   +---+---------+------------------+-------------------------------------------------------------+
   |  1 | 5014614 | Changed on MySQL | 22195207048-70116052123-74140395089-76317954521-98694025897 |
   +---+---------+------------------+-------------------------------------------------------------+
   1 row in set (0.01 sec)
   ```

### 手順 5. MySQL で INSERT 操作を実行する

+ [ターミナル 2](ssh://monitor1-ssh#2)（MySQL側）で、新しい行を挿入します。

   ```sql
   INSERT INTO sbtest.sbtest1 (k, c, pad) VALUES (102, 'Insert on MySQL', 'Insert on MySQL');
   SELECT * FROM sbtest.sbtest1 WHERE k=102;
   ```

   ```output
   mysql> INSERT INTO sbtest.sbtest1 (k, c, pad) VALUES (102, 'Insert on MySQL', 'Insert on MySQL');
   Query OK, 1 row affected (0.00 sec)

   mysql> SELECT * FROM sbtest.sbtest1 WHERE k=102;
   +----------+---+-----------------+-----------------+
   | id       | k   | c               | pad             |
   +----------+---+-----------------+-----------------+
   | 10000002 | 102 | Insert on MySQL | Insert on MySQL |
   +----------+---+-----------------+-----------------+
   1 row in set (0.00 sec)
   ```

### 手順 6. TiDB からの INSERT 操作の結果を観察する

+ [ターミナル 3](ssh://monitor1-ssh#3)（TiDB側）で、MySQLから同期された変更をTiDB側から確認します。

   ```sql
   SELECT * FROM sbtest.sbtest1 WHERE k=102;
   ```

   ```output
   tidb:db1> SELECT * from sbtest.sbtest1 where k=102;
   +----------+---+-----------------+-----------------+
   | id       | k   | c               | pad             |
   +----------+---+-----------------+-----------------+
   | 10000002 | 102 | Insert on MySQL | Insert on MySQL |
   +----------+---+-----------------+-----------------+
   1 row in set (0.00 sec)
   ```

+ 時間が許すなら、MySQL側からさらに変更を試し、TiDB側から結果を観察します。
