MySQL 8.0 リファレンスマニュアル


18.2.1.5 グループのブートストラップ

グループを初めて起動するプロセスはブートストラップと呼ばれます。 グループをブートストラップするには、group_replication_bootstrap_group システム変数を使用します。 ブートストラップは、単一のサーバー (グループを起動するサーバー) によって一度のみ実行する必要があります。 このため、group_replication_bootstrap_group オプションの値がインスタンスオプションファイルに格納されませんでした。 オプションファイルに保存されている場合、サーバーの再起動時に同じ名前の別のグループが自動的にブートストラップされます。 これにより、同じ名前を持つ 2 つの異なるグループが作成されます。 このオプションを ON に設定してプラグインを停止および再起動する場合も、同じ推論が適用されます。 したがって、グループを安全にブートストラップするには、s1 に接続し、次のステートメントを発行します:

mysql> SET GLOBAL group_replication_bootstrap_group=ON;
mysql> START GROUP_REPLICATION;
mysql> SET GLOBAL group_replication_bootstrap_group=OFF;

または、START GROUP_REPLICATION ステートメント (MySQL 8.0.21 から実行可能) で分散リカバリ用のユーザー資格証明を指定する場合は、次のステートメントを発行します:

mysql> SET GLOBAL group_replication_bootstrap_group=ON;
mysql> START GROUP_REPLICATION USER='rpl_user', PASSWORD='password';
mysql> SET GLOBAL group_replication_bootstrap_group=OFF;

START GROUP_REPLICATION ステートメントが戻ると、グループは起動しています。 グループが作成され、その中に 1 つのメンバーが存在することを確認できます:

mysql> SELECT * FROM performance_schema.replication_group_members;
+---------------------------+--------------------------------------+-------------+-------------+---------------+
| CHANNEL_NAME              | MEMBER_ID                            | MEMBER_HOST | MEMBER_PORT | MEMBER_STATE  |
+---------------------------+--------------------------------------+-------------+-------------+---------------+
| group_replication_applier | ce9be252-2b71-11e6-b8f4-00212844f856 |   s1        |       3306  | ONLINE        |
+---------------------------+--------------------------------------+-------------+-------------+---------------+

このテーブルの情報は、一意の識別子 ce9be252-2b71-11e6-b8f4-00212844f856 を持つメンバーがグループに存在し、それが ONLINE であり、s1 がポート 3306 でクライアント接続をリスニングしていることを確認します。

サーバーが実際にはグループ内にあり、ロードを処理できることを示す目的で、テーブルを作成し、そのテーブルにコンテンツを追加します。

mysql> CREATE DATABASE test;
mysql> USE test;
mysql> CREATE TABLE t1 (c1 INT PRIMARY KEY, c2 TEXT NOT NULL);
mysql> INSERT INTO t1 VALUES (1, 'Luis');

テーブル t1 とバイナリログの内容を確認します。

mysql> SELECT * FROM t1;
+----+------+
| c1 | c2   |
+----+------+
|  1 | Luis |
+----+------+

mysql> SHOW BINLOG EVENTS;
+---------------+-----+----------------+-----------+-------------+--------------------------------------------------------------------+
| Log_name      | Pos | Event_type     | Server_id | End_log_pos | Info                                                               |
+---------------+-----+----------------+-----------+-------------+--------------------------------------------------------------------+
| binlog.000001 |   4 | Format_desc    |         1 |         123 | Server ver: 8.0.29-log, Binlog ver: 4                              |
| binlog.000001 | 123 | Previous_gtids |         1 |         150 |                                                                    |
| binlog.000001 | 150 | Gtid           |         1 |         211 | SET @@SESSION.GTID_NEXT= 'aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa:1'  |
| binlog.000001 | 211 | Query          |         1 |         270 | BEGIN                                                              |
| binlog.000001 | 270 | View_change    |         1 |         369 | view_id=14724817264259180:1                                        |
| binlog.000001 | 369 | Query          |         1 |         434 | COMMIT                                                             |
| binlog.000001 | 434 | Gtid           |         1 |         495 | SET @@SESSION.GTID_NEXT= 'aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa:2'  |
| binlog.000001 | 495 | Query          |         1 |         585 | CREATE DATABASE test                                               |
| binlog.000001 | 585 | Gtid           |         1 |         646 | SET @@SESSION.GTID_NEXT= 'aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa:3'  |
| binlog.000001 | 646 | Query          |         1 |         770 | use `test`; CREATE TABLE t1 (c1 INT PRIMARY KEY, c2 TEXT NOT NULL) |
| binlog.000001 | 770 | Gtid           |         1 |         831 | SET @@SESSION.GTID_NEXT= 'aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa:4'  |
| binlog.000001 | 831 | Query          |         1 |         899 | BEGIN                                                              |
| binlog.000001 | 899 | Table_map      |         1 |         942 | table_id: 108 (test.t1)                                            |
| binlog.000001 | 942 | Write_rows     |         1 |         984 | table_id: 108 flags: STMT_END_F                                    |
| binlog.000001 | 984 | Xid            |         1 |        1011 | COMMIT /* xid=38 */                                                |
+---------------+-----+----------------+-----------+-------------+--------------------------------------------------------------------+

前述のように、データベースとテーブルオブジェクトが作成され、対応する DDL ステートメントがバイナリログに書き込まれました。 また、データはテーブルに挿入されてバイナリログに書き込まれたため、ドナーのバイナリログからの状態転送によって分散回復に使用できます。


関連キーワード:  グループ, group, binlog, リカバリ, 分散, replication, テーブル, aaa, サーバー, ステートメント