MySQLのレプリケーション機能
MySQLのレプリケーションは最初の実装から20年以上が経過した「枯れた」機能ですが、現在も継続的に機能の改良や強化が行われています。レプリケーションの主な用途は以下の通りです。
- 参照処理の負荷分散
- 高可用性の確保
- 移行時のデータ連係
MySQL HeatWaveの「リード・レプリカ」による参照処理の負荷分散
レプリケーションの用途として多いのが参照処理の負荷分散です。更新処理をソースと呼ばれる1台のMySQLサーバーで行い、トランザクションをレプリカと呼ばれる別のサーバに転送して複製し、トランザクション外の参照処理はレプリカで実行することでソースサーバーの負荷を抑える構成が取られるケースが多く見られました。このレプリカサーバーを複数台用意することで参照処理の負荷分散が可能となります。
MySQL HeatWaveにも2022年12月に「リード・レプリカ」という名称でこの参照処理の負荷分散のための構成が可能となりました。OCIコンソール上では「読取りレプリカ」という表記になっています。
図 2台の「リード・レプリカ」作成後にソースサーバーでレプリカを確認した結果
> SHOW REPLICAS; +------------+------+------+------------+--------------------------------------+ | Server_Id | Host | Port | Source_Id | Replica_UUID | +------------+------+------+------------+--------------------------------------+ | 1820811686 | | 3306 | 4161128541 | f282c387-8f14-11ed-abcd-02001701b71e | | 495187489 | | 3306 | 4161128541 | 53214267-8f11-11ed-abcd-020017022801 | +------------+------+------+------------+--------------------------------------+
MySQL HeatWaveの「リード・レプリカ」は非同期型のレプリケーションとなっています。最大18台までの「リード・レプリカ」のノードが利用できます。ノードを追加することで構成全体での参照処理のスループットが向上することがMySQLの公式ブログにも掲載されています。