気になる技術的なことについて少しずつ書いていけたらと思っております。復習】レプリケーションどうも、先日人生初めてのスノーボードに行って全身筋肉痛になりながら東京に行きました。動作が億劫になり、痛みを伴うようになった。GROUPインターンシップ「Sunrise」の後日勉強会である「Sunrise2nd」というMySQLの勉強会に参加するため、東京に来ています。実機もない状態で記事を書くのも疑問に思ったことを手元で動かしながら確認出来ないので、せっかくですから復習ついでに今まで習ったことを今回から数回に分けて記事を書いていこうと思います。参考書は上記の本を使用している。内容を書きすぎると色々と問題にもなるので、もっと内容を深く知りたい方は上の広告をわざわざクリックして飛ばなくてもいいので、買って読んでみることをオススメします。現在まで4回の講義が行われているが、最初の講義には参加出来なかったので二回目から。レプリケーション2回目の講義はSunriseでも頻繁に出てきた技術単語、レプリケーションをどのようにオペレーションで準備し、どのような問題があるか、という点を触れていった。IT用語辞典を見てみよう。上記の2つでもある程度分かると思うが、一台の「マスター」に対して変更を加えると、1台、もしくは複数台の「スレーブ」にその変更が反映される。いった動作が提供される仕組みだ。以下の様な効果が期待されている。片方向マスターからスレーブに対して変更は通知されるが、スレーブへの変更はマスターへ通知されない。そのため、スレーブに対して更新を行うとマスターとスレーブ間での整合性が崩れることになる。双方向(マルチマスター)片方向に対し、スレーブへの更新もマスターに反映される。MySQLでは、1つのインスタンスがマスターとスレーブを兼用できるので、それを活かして双方向にすることが出来る。非同期レプリケーションマスターからスレーブへの情報の更新が非同期で行われる。そのため、常にスレーブの情報が最新であるという保証はない。同期レプリケーション非同期に対して、更新が即座にスレーブへ反映され、スレーブの更新の途中はロックされるため、常に最新のデータをスレーブに対して取得する事が出来る。MySQLのレプリケーションの仕組みMySQLでは単純に説明すると以下の手順でマスターからスレーブへの情報を反映させる仕組みを作っている。初期化パラメータファイルの設定[master]/etc/my.cnfに以下の記述を追記。status;以下の様な情報が表示される。得られたXXX.XXX.XXX.XXXにmasterのIPアドレスmysql-bin.XXXXXXをmaster_log_filemaster_log_pos=YYYを取得したPositionを設定する。processlist;2個のsystemuserが存在すること。processlist;1個のreplicatorが存在すれば大丈夫。slaveエラーが出なければレプリケーションの設定を再確認。status\GSlave_IO_Runnning,Slave_SQL_RunningがYesとなっていること。ちなみに以下のように表示される。事前に空のtestデータベースが作成されている前提で話を進める。tables;|お互いテーブルがないことを確認。test;マスターとスレーブの結果が一致することを確認。tableをしてないのにも関わらずtableが作成されていることを確認。test;マスターに挿入したデータがスレーブに反映されていることを確認。最初の用語説明で記述したように非同期レプリケーションの場合は遅延が発生してしまう。ここで詳細なオペレーションは省くが、ネットワークの状況やトランザクションが大きい場合ではレプリケーションの更新が反映されるのが遅くなり、Select句で古い情報を取得してしまう可能性があります。最後に最後まで読んで頂きありがとうございました。1回の内容でも講義が1~2時間あったので大分ボリュームが出ましたね。次回は「トランザクション」についてです。React・Reduxの導入からサーバーサイドレンダリングによるUXの向上まで【書評】現場で役立つシステム設計の原則~変更を楽で安全にするオブジェクト指向の実践技法isucon9予選で赤い彗星になれず予選落ちしました月別アーカイブ参加グループ焼き肉ブログはてなブログをはじめよう!dorivenさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。