Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
Submit search
EN
Uploaded by
Mikiya Okuno
PDF, PPTX
11,184 views
What's New in MySQL 5.7 Replication
MySQL 5.7のレプリケーションの新機能についての解説です。MySQL 5.7新機能攻略徹底講座で使用した資料です。
Software
◦
Read more
8
Save
Share
Embed
Embed presentation
Download
Download as PDF, PPTX
1
/ 59
2
/ 59
3
/ 59
4
/ 59
5
/ 59
6
/ 59
7
/ 59
8
/ 59
9
/ 59
10
/ 59
11
/ 59
12
/ 59
13
/ 59
14
/ 59
15
/ 59
16
/ 59
17
/ 59
18
/ 59
19
/ 59
20
/ 59
21
/ 59
22
/ 59
23
/ 59
24
/ 59
25
/ 59
26
/ 59
27
/ 59
28
/ 59
29
/ 59
30
/ 59
31
/ 59
32
/ 59
33
/ 59
34
/ 59
35
/ 59
36
/ 59
37
/ 59
38
/ 59
39
/ 59
40
/ 59
41
/ 59
42
/ 59
43
/ 59
44
/ 59
45
/ 59
46
/ 59
47
/ 59
48
/ 59
49
/ 59
50
/ 59
51
/ 59
52
/ 59
53
/ 59
54
/ 59
55
/ 59
56
/ 59
57
/ 59
58
/ 59
59
/ 59
More Related Content
PDF
MySQLトラブル解析入門
by
Mikiya Okuno
PDF
What's New in MySQL 5.7 InnoDB
by
Mikiya Okuno
PDF
サーバーが完膚なきまでに死んでもMySQLのデータを失わないための表技
by
yoku0825
PDF
さいきんの InnoDB Adaptive Flushing (仮)
by
Takanori Sejima
PDF
MySQLレプリケーションあれやこれや
by
yoku0825
PDF
MySQL 8.0で憶えておいてほしいこと
by
yoku0825
PDF
イルカさんチームからゾウさんチームに教えたいMySQLレプリケーション
by
yoku0825
PDF
DockerとPodmanの比較
by
Akihiro Suda
MySQLトラブル解析入門
by
Mikiya Okuno
What's New in MySQL 5.7 InnoDB
by
Mikiya Okuno
サーバーが完膚なきまでに死んでもMySQLのデータを失わないための表技
by
yoku0825
さいきんの InnoDB Adaptive Flushing (仮)
by
Takanori Sejima
MySQLレプリケーションあれやこれや
by
yoku0825
MySQL 8.0で憶えておいてほしいこと
by
yoku0825
イルカさんチームからゾウさんチームに教えたいMySQLレプリケーション
by
yoku0825
DockerとPodmanの比較
by
Akihiro Suda
What's hot
PDF
binary log と 2PC と Group Commit
by
Takanori Sejima
PDF
ヤフー社内でやってるMySQLチューニングセミナー大公開
by
Yahoo!デベロッパーネットワーク
PDF
MySQL 5.7 トラブルシューティング 性能解析入門編
by
Mikiya Okuno
PDF
MySQLチューニング
by
yoku0825
PDF
AWS Black Belt Online Seminar 2016 AWS CloudFormation
by
Amazon Web Services Japan
PPTX
PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...
by
NTT DATA Technology & Innovation
PPTX
最近のKeycloakのご紹介 ~クライアントポリシーとFAPI~
by
Hitachi, Ltd. OSS Solution Center.
PDF
新入社員のための大規模ゲーム開発入門 サーバサイド編
by
infinite_loop
PPTX
MongoDBが遅いときの切り分け方法
by
Tetsutaro Watanabe
PDF
MySQLアンチパターン
by
yoku0825
PDF
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
by
Yahoo!デベロッパーネットワーク
PDF
nginx入門
by
Takashi Takizawa
PDF
ビッグデータ処理データベースの全体像と使い分け
by
Recruit Technologies
PPTX
OpenStackを使用したGPU仮想化IaaS環境 事例紹介
by
VirtualTech Japan Inc.
PDF
AWS Redshift Analyzeの必要性とvacuumの落とし穴
by
Moto Fukao
PDF
MySQL Performance Tuning. Part 1: MySQL Configuration (includes MySQL 5.7)
by
Aurimas Mikalauskas
PPTX
コンテナネットワーキング(CNI)最前線
by
Motonori Shindo
PDF
Innodb Deep Talk #2 でお話したスライド
by
Yasufumi Kinoshita
PDF
MySQL InnoDB Cluster - A complete High Availability solution for MySQL
by
Olivier DASINI
PDF
The Complete MariaDB Server tutorial
by
Colin Charles
binary log と 2PC と Group Commit
by
Takanori Sejima
ヤフー社内でやってるMySQLチューニングセミナー大公開
by
Yahoo!デベロッパーネットワーク
MySQL 5.7 トラブルシューティング 性能解析入門編
by
Mikiya Okuno
MySQLチューニング
by
yoku0825
AWS Black Belt Online Seminar 2016 AWS CloudFormation
by
Amazon Web Services Japan
PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...
by
NTT DATA Technology & Innovation
最近のKeycloakのご紹介 ~クライアントポリシーとFAPI~
by
Hitachi, Ltd. OSS Solution Center.
新入社員のための大規模ゲーム開発入門 サーバサイド編
by
infinite_loop
MongoDBが遅いときの切り分け方法
by
Tetsutaro Watanabe
MySQLアンチパターン
by
yoku0825
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
by
Yahoo!デベロッパーネットワーク
nginx入門
by
Takashi Takizawa
ビッグデータ処理データベースの全体像と使い分け
by
Recruit Technologies
OpenStackを使用したGPU仮想化IaaS環境 事例紹介
by
VirtualTech Japan Inc.
AWS Redshift Analyzeの必要性とvacuumの落とし穴
by
Moto Fukao
MySQL Performance Tuning. Part 1: MySQL Configuration (includes MySQL 5.7)
by
Aurimas Mikalauskas
コンテナネットワーキング(CNI)最前線
by
Motonori Shindo
Innodb Deep Talk #2 でお話したスライド
by
Yasufumi Kinoshita
MySQL InnoDB Cluster - A complete High Availability solution for MySQL
by
Olivier DASINI
The Complete MariaDB Server tutorial
by
Colin Charles
Similar to What's New in MySQL 5.7 Replication
PDF
MHA for MySQLとDeNAのオープンソースの話
by
Yoshinori Matsunobu
PDF
MySQL5.7 GA の Multi-threaded slave
by
Takanori Sejima
PDF
MySQL 5.7とレプリケーションにおける改良
by
Shinya Sugiyama
PDF
Yahoo! JAPANのプライベートRDBクラウドとマルチライター型 MySQL #dbts2017 #dbtsOSS
by
Yahoo!デベロッパーネットワーク
PDF
Art of MySQL Replication.
by
Mikiya Okuno
PDF
さいきんのMySQLに関する取り組み(仮)
by
Takanori Sejima
PDF
Mysql toranomaki
by
Mikiya Okuno
PDF
MySQL 5.6新機能解説@dbtechshowcase2012
by
Mikiya Okuno
PDF
MySQL Cluster 新機能解説 7.5 and beyond
by
Mikiya Okuno
ODP
MySQl 5.6新機能解説@第一回 中国地方DB勉強会
by
Mikiya Okuno
PDF
[D37]MySQLの真のイノベーションはこれだ!MySQL 5.7と「実験室」 by Ryusuke Kajiyama
by
Insight Technology, Inc.
PPTX
MySQL clients
by
yoku0825
PPTX
Rakuten New MySQL Backup System With Xtrabackup
by
Rakuten Group, Inc.
PDF
20170622_MySQL最新情報 ~MySQL 8.0 開発状況、MySQL InnoDB Cluster、などのご紹介~ by 日本オラクル株式会社...
by
Insight Technology, Inc.
PDF
MySQL5.6関連情報まとめ
by
Yu Komiya
PDF
Enter the-dolphine
by
Mikiya Okuno
PDF
20150920 中国地方db勉強会
by
yoyamasaki
PDF
20190530 osc hokkaido_public
by
DAISUKE INAGAKI
PPTX
[中国地方DB勉強会] 第22回 Webアプリ開発をデータベース側から変革していく - MySQL 8.0新機能
by
Ryusuke Kajiyama
PPT
第20回 中国地方DB勉強会 in 岡山 MySQLレプリケーション
by
Ryusuke Kajiyama
MHA for MySQLとDeNAのオープンソースの話
by
Yoshinori Matsunobu
MySQL5.7 GA の Multi-threaded slave
by
Takanori Sejima
MySQL 5.7とレプリケーションにおける改良
by
Shinya Sugiyama
Yahoo! JAPANのプライベートRDBクラウドとマルチライター型 MySQL #dbts2017 #dbtsOSS
by
Yahoo!デベロッパーネットワーク
Art of MySQL Replication.
by
Mikiya Okuno
さいきんのMySQLに関する取り組み(仮)
by
Takanori Sejima
Mysql toranomaki
by
Mikiya Okuno
MySQL 5.6新機能解説@dbtechshowcase2012
by
Mikiya Okuno
MySQL Cluster 新機能解説 7.5 and beyond
by
Mikiya Okuno
MySQl 5.6新機能解説@第一回 中国地方DB勉強会
by
Mikiya Okuno
[D37]MySQLの真のイノベーションはこれだ!MySQL 5.7と「実験室」 by Ryusuke Kajiyama
by
Insight Technology, Inc.
MySQL clients
by
yoku0825
Rakuten New MySQL Backup System With Xtrabackup
by
Rakuten Group, Inc.
20170622_MySQL最新情報 ~MySQL 8.0 開発状況、MySQL InnoDB Cluster、などのご紹介~ by 日本オラクル株式会社...
by
Insight Technology, Inc.
MySQL5.6関連情報まとめ
by
Yu Komiya
Enter the-dolphine
by
Mikiya Okuno
20150920 中国地方db勉強会
by
yoyamasaki
20190530 osc hokkaido_public
by
DAISUKE INAGAKI
[中国地方DB勉強会] 第22回 Webアプリ開発をデータベース側から変革していく - MySQL 8.0新機能
by
Ryusuke Kajiyama
第20回 中国地方DB勉強会 in 岡山 MySQLレプリケーション
by
Ryusuke Kajiyama
More from Mikiya Okuno
PDF
なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)
by
Mikiya Okuno
PDF
What's New in MySQL 5.7 Optimizer @MySQL User Conference Tokyo 2015
by
Mikiya Okuno
PDF
MySQLアーキテクチャ図解講座
by
Mikiya Okuno
PDF
あなたが知らない リレーショナルモデル
by
Mikiya Okuno
PDF
データベース設計徹底指南
by
Mikiya Okuno
PDF
リレーショナルな正しいデータベース設計
by
Mikiya Okuno
PDF
RDBにおけるバリデーションをリレーショナルモデルから考える
by
Mikiya Okuno
PDF
MySQL Cluster 7.4で楽しむスケールアウト @DB Tech Showcase 2015/06
by
Mikiya Okuno
PDF
私は如何にして詳解 MySQL 5.7を執筆するに至ったか
by
Mikiya Okuno
PDF
リレーショナルデータベースとの上手な付き合い方
by
Mikiya Okuno
PDF
リレーショナルデータベースとの上手な付き合い方 long version
by
Mikiya Okuno
PDF
サポート一筋24+年のエンジニア、サポートのイロハは E4500に教わった。 Sun Microsystems 勉強会〜1994年頃から2000年頃の思い...
by
Mikiya Okuno
PDF
とあるギークのキーボード遍歴
by
Mikiya Okuno
PDF
カジュアルにMySQL Clusterを使ってみよう@MySQL Cluster Casual Talks 2013.09
by
Mikiya Okuno
PDF
What's New in MySQL 5.7 Security
by
Mikiya Okuno
PDF
Database qpstudy-okuno
by
Mikiya Okuno
PDF
データモデルについて知っておくべき7つのこと 〜NoSQLに手を出す前に〜
by
Mikiya Okuno
PDF
人類は如何にして大切な データベースを守るべきか
by
Mikiya Okuno
PDF
なぜ、いまリレーショナルモデルなのか
by
Mikiya Okuno
PDF
Rdbms qpstudy-okuno
by
Mikiya Okuno
なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)
by
Mikiya Okuno
What's New in MySQL 5.7 Optimizer @MySQL User Conference Tokyo 2015
by
Mikiya Okuno
MySQLアーキテクチャ図解講座
by
Mikiya Okuno
あなたが知らない リレーショナルモデル
by
Mikiya Okuno
データベース設計徹底指南
by
Mikiya Okuno
リレーショナルな正しいデータベース設計
by
Mikiya Okuno
RDBにおけるバリデーションをリレーショナルモデルから考える
by
Mikiya Okuno
MySQL Cluster 7.4で楽しむスケールアウト @DB Tech Showcase 2015/06
by
Mikiya Okuno
私は如何にして詳解 MySQL 5.7を執筆するに至ったか
by
Mikiya Okuno
リレーショナルデータベースとの上手な付き合い方
by
Mikiya Okuno
リレーショナルデータベースとの上手な付き合い方 long version
by
Mikiya Okuno
サポート一筋24+年のエンジニア、サポートのイロハは E4500に教わった。 Sun Microsystems 勉強会〜1994年頃から2000年頃の思い...
by
Mikiya Okuno
とあるギークのキーボード遍歴
by
Mikiya Okuno
カジュアルにMySQL Clusterを使ってみよう@MySQL Cluster Casual Talks 2013.09
by
Mikiya Okuno
What's New in MySQL 5.7 Security
by
Mikiya Okuno
Database qpstudy-okuno
by
Mikiya Okuno
データモデルについて知っておくべき7つのこと 〜NoSQLに手を出す前に〜
by
Mikiya Okuno
人類は如何にして大切な データベースを守るべきか
by
Mikiya Okuno
なぜ、いまリレーショナルモデルなのか
by
Mikiya Okuno
Rdbms qpstudy-okuno
by
Mikiya Okuno
What's New in MySQL 5.7 Replication
1.
What's New inWhat's
New in MySQL 5.7 ReplicationMySQL 5.7 Replication 奥野 幹也 Twitter: @nippondanji mikiya (dot) okuno (at) gmail (dot) com @MySQL 5.7 新機能徹底攻略講座
2.
免責事項 本プレゼンテーションにおいて示されている見解は、私 自身の見解であって、オラクル・コーポレーションの見 解を必ずしも反映したものではありません。ご了承くだ さい。
3.
自己紹介 ● MySQL サポートエンジニア – 日々のしごと ●
トラブルシューティング全般 ● Q&A 回答 ● パフォーマンスチューニング など ● ライフワーク – 自由なソフトウェアの普及 ● オープンソースではない ● GPL 万歳!! – 最近はまってる趣味はリカンベント(自転車) ● ブログ – 漢のコンピュータ道 – http://nippondanji.blogspot.com/
4.
おかげさまで 新書籍発売と 相成りました。 ありがとうございます!
5.
詳解 MySQL 5.7 止まらぬ進化に乗り遅れないためのテクニカルガイド ●
MySQL 5.7 の新機能を網羅的に解説 – 175 の新機能 – WorkLog/Bug Id つき – コンセプト、仕組み、使い方 ● 新機能の理解に必要な前提知識 – 古いバージョンでも適用可能 – アーキテクチャを理解することで 本物の理解を
6.
MySQL 5.7 の 新機能概要
7.
MySQL 5.7 の数多くの新機能 ● 実に
150 以上もの新機能が追加された!! – MySQL 5.7 の新機能完全リスト https://yakst.com/ja/posts/3037 – yoku0825++ ● レプリケーション関連 ● InnoDB 関連 ● オプティマイザー関連 ● セキュリティ関連 ● パフォーマンススキーマ関連 ● GIS 関連 ● JSON 関連 etc etc...
8.
レプリケーションの新機能 ● マルチスレッドスレーブの改良 ● マルチソースレプリケーション ● 準同期レプリケーションの改良 –
ロスレスレプリケーション – パフォーマンスの改善 – ACK を返すスレーブ数の指定 ● GTID の改良 – スレーブでの管理が効率化 – 再起動時の GTID 計算方法が効率化 ● オンライン操作の拡充 – GTID 有効化 – CHAMGE MASTER の一部 – レプリケーションフィルター
9.
オプティマイザの新機能 ● EXPLAIN for
CONNECTION ● JSON EXPLAIN ● コストモデル – JOIN の順序選択 – 統計情報の正確性 – コストの係数のユーザーによる設定 ● GROUP BY ● FROM 句のサブクエリ ● IN サブクエリ ● UNION ALL ● ソート ● テンポラリテーブル
10.
InnoDB の新機能 ● 一般テーブルスペース ● テンポラリテーブルの
InnoDB 化 ● バッファプールのオンラインリサイズ ● UNDO ログの自動トランケート ● 32/64KB ページのサポート ● REDO ログフォーマットの改善 ● バッファプールをダンプする割合の指定 ● ページ統合におけるページ充填率の指定 ● コピーしない ALTER TABLE 操作の増加
11.
InnoDB の新機能 つづき ●
全文検索用プラガブルパーサーのサポート – ngram あるいは MeCab による日本語の全文検索 ● 全文検索の最適化 ● 空間インデックスのサポート ● 透過的テーブル圧縮 ● 透過的テーブルスペース暗号化 ● ダブルライトが不要なとき自動的に無効化 ● NUMA サポートの追加 ● InnoDB モニターの有効化方法変更 ● 情報スキーマの改良 ● デフォルト行フォーマットの指定
12.
InnoDB の新機能 性能改善系 ● テンポラリテーブルのための最適化 ● RO
トランザクションの性能改善 ● RW トランザクションの性能改善 – index->lock の競合改善( SX ロック) ● リードビュー作成の性能改善 ● trx_t のキャッシュ効率改善 ● AHI のミューテックス競合改善 ● ページクリーナーのマルチスレッド化 ● フラッシュアルゴリズムの改善 ● クラッシュリカバリの性能改善 ● ログファイル書き込みの性能改善 ● インデックス作成の高速化 etc
13.
セキュリティ関係の新機能 ● パスワード期限の設定 ● ユーザーのロック、アンロック ● SET
PASSWORD コマンドの仕様変更 ● CREATE USER … IF NOT EXISTS ● ログイン不可能なユーザーアカウント ● SSL のセットアップが容易に – キーファイルの自動生成 – mysql_ssl_rsa_setup ● 透過的テーブルスペース暗号化 ● デフォルトの状態がセキュアに – test データベースの廃止 – 匿名ユーザーの廃止 – localhost 以外の root の廃止
14.
レプリケーションの概要 バイナリログ リレーログストレージ エンジン ストレージ エンジン マスター スレッド スレーブ I/O スレッド スレーブ SQL
スレッド 5. バイナリログ送信 接続スレッド クライアント 1. COMMIT 2.PREPARE 3.バ イナ リログ 更 新 6. 記録 7. 更新を適用 4.COMMIT
15.
マスタースレッドの 改良
16.
バイナリログに対する グループコミットの調整 ● binlog_group_commit_sync_delay – バイナリログへの同期をする前に待つ時間(マイクロ秒) –
溜めがあるほうが1回の同期に多くのトランザクションが含 まれる – レスポンスをわずかに犠牲にすることで、スループットを 向上 ● binlog_group_commit_sync_no_delay_count – 1回の COMMIT に含まれる最大のトランザクション数
17.
グループコミットなし Tx1 PREPARE binlog write COMMIT binlog fsync 時間 Tx2 PREPARE binlog write COMMIT binlog fsync Tx3 PREPARE binlog write COMMIT binlog fsync
18.
グループコミットあり Tx1 PREPARE binlog write COMMIT 時間 Tx2 PREPARE binlog write COMMIT binlog fsync Tx3 PREPARE binlog write COMMIT
19.
メモリ使用効率の改善 ● MySQL 5.6
では、マスタースレッドがバイナリログからイベント を読み取る度にメモリを malloc していた。 – イベントの送信が完了すると free – 効率が悪い ● MySQL 5.7 ではバッファが十分な場合は使い回す – バッファが足りない場合は realloc – 定期的にサイズの見直しをすることでバッファの肥大化を 防止
20.
Mutex 競合の改善 ● MySQL
5.6 でバイナリログへのグループコミットが導入された 当初、マスターのクラッシュによってスレーブとの不整合が 起きるバグがあった – MySQL 5.6.17 で改善 – バイナリログへの R/W が LOCK_log によって守られていた – write だけでなく fsync についても LOCK_log で保護 ● バイナリログへの書き込みとマスタースレッドが LOCK_log を奪い合う ● 更新処理性能ダウン ● マスタースレッドのスループットダウン
21.
GC 導入当初に生じた データ整合性の問題 Tx1 マスター Tx2 Tx3 Tx4 バイナリログ Tx5 : スレーブ Tx1 Tx2 Tx3 リレーログ :
22.
バイナリログとクラッシュリカバリ ● 2相コミットが行われる条件 – sync_binlog=1 –
innodb_support_xa = 1 – ionndb_flush_log_at_trx_commit =1 ● 2相コミットの場合のリカバリ処理 – バイナリログの fsync が成功したかどうかでリカバリするか どうかが決まる ● バイナリログにトランザクションがあれば永続化 ● バイナリログに無ければロールバック
23.
MySQL 5.7 における LOCK_log
競合の解消 ● MySQL 5.6 ではデータ不整合を避けるため LOCK_log で守ら れた処理が多くなっていた – R/W, fsync ● MySQL 5.7 では Mutex を分割した – マスタースレッドが参照するカウンタを追加 ● fsync によって更新 ● マスタースレッドが参照 ● LOCK_binlog_end_pos で保護 ● マスタースレッドが LOCK_log を取らなくなった – LOCK_log はバイナリログへの write/fsync を保護
24.
マルチスレッド スレーブの改良
25.
マルチスレッドスレーブ ( MTS )とは ●
読んで字のごとく、スレーブ側で複数のスレッドを使ってス レーブのスループットを高める機能 – マスターが複数のスレッドで更新されるのに対し、スレー ブは単一のスレッドによる更新では、更新性能に差が生じ てしまう。 – 特に CPU コア数が多く、 IOPS の高いディスクを使ってい る、 CPU バウンドな環境で顕著。 ● MySQL 5.6 から実装
26.
MySQL 5.6 における MTS
の制限 ● 並列化の単位はデータベース – 同じデータベース上の更新は並列化されない – SQL スレッドが実行中のトランザクションと異なるデータ ベースを更新するトランザクションは並列化可能 – 複数のデータベースにまたがったトランザクションは不整 合の原因に – 効果は限定的
27.
MySQL 5.7 の改良 LOGICAL_CLOCK
方式 ● マスターで同じグループでコミットされたトランザクションを スレーブで並列化する方式 ● 同一データベースに対する更新を並列化 ● スレーブで sync_binlog=1 のとき必須
28.
オーバーラップした トランザクション ● バイナリログと InnoDB
は2相コミット ● PREPARE → COMMIT の間に若干のタイムラグ ● 同時に PREPARE まで到達したトランザクションはロックの競 合がない – 並列実行可能 ● バイナリログに追加情報 – last_committed と sequence_number Tx1 Tx2 PREPARE:l1 PREPARE:l2 COMMIT:s1 オーバーラップ COMMIT:s2
29.
MTS の設定 [mysqld] slave_parallel_workers =
64 slave_parallel_type = LOGICAL_CLOCK slave_preserve_commit_order = 1 log_bin = mysql-bin log_slave_updates = 1
30.
マルチソース レプリケーション
31.
MySQL 5.6 ではスレーブが もてるマスターはひとつだけ マスター スレーブ スレーブ マスター マスター スレーブ OK NG
32.
MySQL 5.7 ではスレーブが 複数のマスターを参照可能 マスター スレーブ スレーブ マスター マスター スレーブ OK OK!!
33.
FOR CHANNEL 句の導入 ●
CHANNEL = スレーブが参照するマスター – デフォルトの CHANNEL は空文字列 ● CHANGE MASTER TO … FOR CHANNEL 'name' ● START SLAVE FOR CHANNEL 'name' ● STOP SLAVE FOR CHANNEL 'name' ● SHOW SLAVE STATTUS … FOR CHANNEL 'name' ● RESET SLAVE FOR CHANNEL 'name'
34.
マルチソースレプリケーションの 注意事項 ● マスター同士で競合する更新をしないようにすること – 同じテーブルを更新しなければ問題なし –
同じテーブルを更新する場合 ● シャーディングのおまとめ ● 少なくとも SBR は使わない ● 同じ行を異なるマスターで挿入、更新、削除しない ● あくまでもレプリケーションは非同期 – スレーブのデータはそれぞれのマスターと時差がある – 同期したデータが参照できることは期待できない
35.
準同期 レプリケーションの 改良
36.
準同期レプリケーションの概要 バイナリログ リレーログストレージ エンジン ストレージ エンジン マスター スレッド スレーブ I/O スレッド スレーブ SQL
スレッド 5. バイナリログ送信 6. 記録 7-1. 更新を適用 接続スレッド クライアント 1. COMMIT 3.バ イナ リログ 更 新 7-2a. ACK 7-2b. ACK 8. OK パケット 2.PREPARE 4.COMMIT
37.
準同期がロスレスになった!! ● マスタークラッシュ時にスレーブを昇格すると、マスターから 参照可能だったデータが全てスレーブ上に存在する ● MySQL 5.6
では、マスターから参照できたデータが、昇格後 のスレーブに存在しないケースがある – rpl_semi_sync_master_wait_point = AFTER_SYNC
38.
ロスのある更新処理のシナリオ 1. tx1 がデータ
x を書き込む 2. データ x がバイナリログに書き込まれる 3. バイナリログがディスクへ同期される 4. データ x がストレージエンジンに COMMIT される 5. この時点でデータ x に対するロックが解除され、他のトラン ザクションはデータ x を参照できるようになる • tx2 がデータ x を参照した。 6. クライアントへの応答が停止され、 ACK 待ちの状態になる 7. データ x がスレーブへ転送される前にマスターがクラッシュ する 8. スレーブのひとつを昇格 • 新たなマスターへ接続してもデータ x は見つからない
39.
ACK を待つタイミングを変更 ● ストレージエンジンへ
COMMIT する前に ACK を待つ ● rpl_semi_sync_master_wait_point = AFTER_SYNC – MySQL 5.6 と同じ動作は AFTER_COMMIT
40.
MySQL 5.6 の準同期マスター Tx1 PREPARE binlog write COMMIT 時間 Tx2 PREPARE binlog write COMMIT binlog fsync Tx3 PREPARE binlog write COMMIT ACK
を待つ
41.
MySQL 5.7 の準同期マスター Tx1 PREPARE binlog write COMMIT 時間 Tx2 PREPARE binlog write COMMIT binlog fsync Tx3 PREPARE binlog write COMMIT ACK
を待つ
42.
準同期レプリケーションの パフォーマンスの改良 ● MySQL 5.6
では、マスタースレッドがスレーブへのバイナリロ グの送信と、 ACK の受信の両方を担っていた。 – ACK を受信するまで、次のイベントを送信することが出来 ない。 ● MySQL 5.7 では、 ACK の送受信を行う専用のスレッドが作成 されるようになった。 – ACK スレッド – performance_schema.threads テーブルで確認 – 並列化により、マスターの更新処理性能が改善
43.
ACK を返すスレーブ数の指定 ● rpl_semi_sync_master_wait_for_slave_count –
マスターが ACK を待つスレーブ数 – デフォルトは 1 ● rpl_semi_sync_master_wait_no_slave – スレーブ数が rpl_semi_sync_master_wait_for_slave_count より少 なくなった場合の挙動 – ON → スレーブが復活するのを待つ(デフォルト) – OFF → 即座に非同期モードに移行する ● 複数のスレーブがデータを持つことで冗長性を向上
44.
GTID の改良
45.
GTID とは ● Global
Transaction Identifier の略 ● トランザクションに世界で固有の ID をつける仕組み – UUID+ 連番 ● UUID はサーバー初回起動時に自動生成 ● auto.cnf に格納 – バイナリログに記録される ● サンプル – 00018785-1111-1111-1111-111111111111:1-100
46.
オンラインで GTID を有効化 •
MySQL 5.6 ではオンラインで有効化できなかった 1. マスターへの更新を停止し、スレーブが追いつくのを待つ 2. マスターとスレーブを停止する 3. GTID 関係のオプションをマスターとスレーブ双方で有効 化する 4. マスターとスレーブを起動する。ただし、スレーブは -- skip-slave-start オプションをつける 5. スレーブ側で MASTER_AUTO_POSITION = 1 を指定し て、 CHANGE MASTER コマンドを実行する 6. レプリケーションを開始する
47.
オンラインで GTID を有効化 つづき •
MySQL 5.7 ではオンラインで有効化できるようになった 1. すべての SQL 文を GTID 互換にする ● SET GLOBAL enforce_gtid_consistency = WARN; 2. マスターとスレーブで GTID が生成されるようにする • gtid_mode を変更 • OFF→OFF_PERMISSIVE→ON_PERMISSIVE→ON ● SHOW GLOBAL STATUS LIKE 'Ongoing_anonymous_transaction_count'; 3. フルバックアップを取得する 4. GTID レプリケーションに切り替える • STOP SLAVE; ● CHANGE MASTER TO MASTER_AUTO_POSITION = 1; ● START SLAVE; 無効化もオンラインで可能
48.
昇格しないスレーブ上で GTID の管理が効率化 ● GTID
はバイナリログに格納される – スレーブ上では log_slave_updates = 1 – 昇格後には他のスレーブへバイナリログが転送される – データサイズ大 ● MySQL 5.7 では GTID だけを格納するテーブルが追加 – mysql.gtid_executed
49.
OK パケットに GTID ●
OK パケット(処理が成功したときの応答パケット)に GTID を 含めることができるようになった。 – @@global.gtid_executed を参照する必要がなくなった – 自分が COMMIT したトランザクションの GTID を確実に知るこ とができる ● マスターで更新をして、続く参照処理をスレーブで実行した い – レプリケーションは非同期なので、マスターの更新が伝搬 している保証はない – スレーブ上で、マスター更新時の GTID を待てば良い
50.
WAIT_UNTIL_SQL_THREAD _AFTER_GTIDS ● SQL_THREAD_WAIT_AFTER_GTIDS – SQL
スレッドが停止している場合は NULL – MySQL 5.6 から実装 ● WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS – SQL スレッドの状態によらず特定の GTID が実行されるのを 待つ – MySQL 5.7 で追加
51.
再起動時の GTID 計算方法の変更 ●
MySQL サーバーは再起動時にバイナリログの GTID を調べ て、 gtid_executed と gtid_purged を再計算する ● MySQL 5.6 の計算方法 – gtid_executed ● 新しいほうからバイナリログをスキャン ● Previous_gtids_log_event +そのバイナリログに含まれる GTID – gtid_purged ● 古い方からバイナリログをスキャン ● Previous_gtids_log_event あるいは最も古い GTID から削除 されたバイナリログに含まれる GTID を推定 – GTID が ON のときと OFF のときのバイナリログが混在してい ると、スキャンするべきバイナリログの数が多くなるケース がある
52.
MySQL 5.7 では最新と最古の バイナリログだけをスキャン ●
gtid_executed – 最新のバイナリログに Previous_gtids_log_event や GTID が無 ければ、 GTID は記録されていないと判断 ● gtid_purged – 最古のバイナリログに Previous_gtids_log_event や GTID が無 ければ、 GTID は削除されていないと判断
53.
オンライン レプリケーション フィルター
54.
レプリケーションフィルターの 変更をオンラインで実行可能に ● オプション – --replicate-ignore-db ● オンラインで変更 –
CHANGE REPLICATION FILTER REPLICATE_IGNORE_DB = (test, admin); ● 注意点 – フィルターは追加ではなく上書き – 永続化はされないので、必要なら my.cnf も変更する必要 がある
55.
レプリケーション用 パフォーマンス スキーマ
56.
パフォーマンススキーマから ステータスの取得が可能に テーブル名 説明 replication_applier_configuration SQL
スレッドの設定を表示する replication_applier_status SQL スレッドのステータスを表示する replication_applier_status_by_coordinator コーディネータースレッドのステータスを表示 する replication_applier_status_by_worker ワーカースレッドのステータスを表示する replication_connection_configuration IO スレッドの設定を表示する replication_connection_status IO スレッドのステータスを表示する
57.
まとめ
58.
MySQL 5.7 のレプリケーションは 超絶進化!! ●
機能性向上 – 既存のトポロジーの殻を打ち破ったマルチソース – ロスレスになった準同期レプリケーション ● 性能向上 – LOGICAL_CLOCK モードのマルチスレッドスレーブ – マスタースレッドの Mutex 競合解消 – 準同期レプリケーションの ACK スレッド ● 利便性向上 – フィルターの動的変更 – GTID の動的有効化 – パフォーマンススキーマ による情報取得 もうこれは 使うしかない!!
59.
Q&Aご静聴ありがとうございました。
Download