Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

第20回 中国地方DB勉強会 in 岡山 MySQLレプリケーション

532 views

Published on

2017/4/8(土) 第20回 中国地方DB勉強会 in 岡山でのMySQLのレプリケーションに関するプレゼンテーションです。レプリケーションの基本からグループレプリケーション、InnoDB Clusterについてご紹介しています。

Published in: Technology
  • Be the first to comment

第20回 中国地方DB勉強会 in 岡山 MySQLレプリケーション

  1. 1. @RKajiyama
  2. 2. MySQL グ ループ レプリケーション
  3. 3. GR
  4. 4. レプリケーション
  5. 5. 【名】 写し,模写,複写,複製 出典:ランダムハウス英和大辞典
  6. 6. MySQL レプリケーション
  7. 7. マスター スレーブ
  8. 8. 参照処理 負荷分散
  9. 9. 高可用性
  10. 10. ディザスタ リカバリ
  11. 11. アプリケーション マスター 接続スレッド データ バイナ リ ログ スレーブ データ リレー ログ コミッ ト データ 変更 バイナリロ グ 変更 レプリケーショ ン レスポン ス データ変更 トランザク ション履歴 トランザク ション履歴
  12. 12. 3.23
  13. 13. 非同期
  14. 14. 5.5
  15. 15. 準同期
  16. 16. 5.6
  17. 17. マルチ スレッド
  18. 18. 5.7
  19. 19. マルチ ソース
  20. 20. 5.7.17
  21. 21. マルチ マスター
  22. 22. GR
  23. 23. 非同期レプリケーション execute binlog relay log commit apply binlog commit relay log apply binlog commit
  24. 24. 準同期レプリケーション execute binlog relay log commit apply binlog commit relay log apply binlog commit
  25. 25. グループレプリケーション execute binlog relay log commit apply binlog commit relay log apply binlog commit certify certify certify
  26. 26. マスター → スレーブ マルチソース マルチマスター マスター → 複数スレーブ マルチマスター 多段構成
  27. 27. MySQL グループ・レプリケー ション • MySQL 側でのフェイルオーバー処理が不 要 32 M M M M M レプリケーション グループ クライアント
  28. 28. 障害検知 • サーバーがグループから外れると、 他のサーバーは自動的に検知 M M M M M メンテナンスや システムクラッシュが発生
  29. 29. 自動復旧 • サーバーが再びグループに参加すると、 自動的に他のサーバーと同期 M M M M M グループに参加
  30. 30. 自動復旧 • サーバーが再びグループに参加すると、 自動的に他のサーバーと同期 M M M M M リカバリー → オンライン
  31. 31. 自動復旧 • サーバーが再びグループに参加すると、 自動的に他のサーバーと同期 M M M M M リカバリー → オンライン
  32. 32. 読み取り専用モード • メンバー参加時の分散リカバリ中は、 自動的に読み取り専用モードに M M M M M 読み取り専用モード
  33. 33. モード
  34. 34. シングルプライマリー マルチマスター
  35. 35. シングルプライマリモード • デフォルトではシングルプライマリモー ド • 1 ノードが書き込み可能なマスター (PRIMARY) • 他はホットスタンバイ (SECONDARY) +---------------------------------------+-------+ | Variable_name | Value | +---------------------------------------+-------+ | group_replication_single_primary_mode | ON | +---------------------------------------+-------+ +----------------------------------------------------+-------+ | Variable_name | Value | +----------------------------------------------------+-------+ | group_replication_enforce_update_everywhere_checks | OFF | +----------------------------------------------------+-------+ ※ シングルプライマリモードの設定
  36. 36. シングルプライマリモード • Secondary ノードは参照のみ可能 – 書き込んだ場合は、 ERROR 1290 が発生する S S S S P S Primary ERROR 1290 (HY000): The MySQL server is running with the --super-read-only option so it cannot execute this statementERROR 1290 (HY000): The MySQL server is running with the --super-read-only option so it cannot execute this statement
  37. 37. [1]: http://mysqlhighavailability.com/mysql-group-replication-for-mysql-5-7-15/ シングルプライマリモード • プライマリサーバーのメンバー ID の確認 mysql> SELECT * FROM performance_schema.replication_group_members; +-------------------------+------------------------------------+-------------+-----------+------------+ |CHANNEL_NAME |MEMBER_ID |MEMBER_HOST |MEMBER_PORT|MEMBER_STATE| +-------------------------+------------------------------------+-------------+-----------+------------+ |group_replication_applier|919a7d77-9ff3-11e6-acb8-080027d65c57|replications | 3310|ONLINE | |group_replication_applier|9c8e6f77-9ff3-11e6-b1d1-080027d65c57|replications | 3320|ONLINE | |group_replication_applier|ac0ec52b-9ff3-11e6-b801-080027d65c57|replications | 3330|ONLINE | +-------------------------+------------------------------------+-------------+-----------+------------+ mysql> SELECT * FROM performance_schema.global_status WHERE VARIABLE_NAME='group_replication_primary_member'; +----------------------------------+--------------------------------------+ | VARIABLE_NAME | VARIABLE_VALUE | +----------------------------------+--------------------------------------+ | group_replication_primary_member | 919a7d77-9ff3-11e6-acb8-080027d65c57 | +----------------------------------+--------------------------------------+ mysql> SELECT * FROM performance_schema.replication_group_members; +-------------------------+------------------------------------+-------------+-----------+------------+ |CHANNEL_NAME |MEMBER_ID |MEMBER_HOST |MEMBER_PORT|MEMBER_STATE| +-------------------------+------------------------------------+-------------+-----------+------------+ |group_replication_applier|919a7d77-9ff3-11e6-acb8-080027d65c57|replications | 3310|ONLINE | |group_replication_applier|9c8e6f77-9ff3-11e6-b1d1-080027d65c57|replications | 3320|ONLINE | |group_replication_applier|ac0ec52b-9ff3-11e6-b801-080027d65c57|replications | 3330|ONLINE | +-------------------------+------------------------------------+-------------+-----------+------------+ mysql> SELECT * FROM performance_schema.global_status WHERE VARIABLE_NAME='group_replication_primary_member'; +----------------------------------+--------------------------------------+ | VARIABLE_NAME | VARIABLE_VALUE | +----------------------------------+--------------------------------------+ | group_replication_primary_member | 919a7d77-9ff3-11e6-acb8-080027d65c57 | +----------------------------------+--------------------------------------+
  38. 38. マルチマスターモード • 全てのノードでデータ更新可能 M M M M M UPDATE t1 SET a=4 WHERE a=2UPDATE t1 SET a=3 WHERE a=1
  39. 39. マルチマスターモード • 異なるサーバー上で同じデータを更新し た場合、先にコミットしたトランザク ションが優先 44 M M M M M UPDATE t1 SET a=4 WHERE a=2UPDATE t1 SET a=3 WHERE a=1 OKOK
  40. 40. マルチマスターモード • 後からコミットしたトランザクションは ロールバックされる 45 M M M M M UPDATE t1 SET a=4 WHERE a=1UPDATE t1 SET a=3 WHERE a=1
  41. 41. マルチマスターモード • 後からコミットしたトランザクションは ロールバックされる 46 M M M M M UPDATE t1 SET a=4 WHERE a=1UPDATE t1 SET a=3 WHERE a=1 OKERROR 1180 (HY000): Got error 149 during COMMIT ERROR 1180 (HY000): Got error 149 during COMMIT
  42. 42. アーキテクチャ概要 M M M M M Com. API Replication Plugin API MySQL Server Group Comm. System (Corosync) Group Com. Engine
  43. 43. API Replication Plugin API MySQL Server Performance Schema Tables: Monitoring MySQL APIs: Lifecycle / Capture / Applier InnoDB Replication Protocol Group Com. API Group Com. Engine Network Plugin Capture Applier Conflicts Handler Group Comm. System (Corosync) Group Com. Engine Group Com. Binding Recovery
  44. 44. MySQL Router: 2.1 • グループレプリケーション対 応ソフトウェアルータ – GR 構成を自動判別 – 各メンバーのメタデータを利 用 • 起動時の GR の設定を取得 • アプリケーションから接続 – バックエンド構成の考慮不要 App Servers with MySQL Router MySQL Group Replication MySQL Shell Setup, Manage, Orchestrate
  45. 45. MySQL Shell 開発と運用管理の作業と統合した新クライアントプログラム App Servers with MySQL Router MySQL Group Replication MySQL Shell Setup, Manage, Orchestrate •複数の言語利用可能 : JavaScript, Python, SQL •ドキュメントと リレーショナルモデル両対応 •開発用 API と管理用 API
  46. 46. MySQL Shell: Admin API • mysql-js> dba.help() • MySQL AdminAPI アクセス用 グローバル変数 'dba' • DBA 管理作業 – GR の構成作成および確認 – インスタンスの起動停止 データベース管理用 API App Servers with MySQL Router MySQL Group Replication MySQL Shell Setup, Manage, Orchestrate
  47. 47. InnoDB Cluster
  48. 48. MySQL Router + Group Replication + MySQL Shell
  49. 49. = InnoDB Cluster
  50. 50. @RKajiyama

×