大規模システムを支えるMySQLのレプリケーション機能このところ楽天をはじめとして,MySQLを活用した大規模な事例が増えている(関連記事)。このような大規模,かつサービス停止の許されないシステムを支えているのが,MySQLのレプリケーション機能である。「レプリケーション」とは,対象物とまったく同じ物を製作する処理だ。同じような意味に「ミラー」があるが,意味するところは物理的なコピーである。「レプリケーション」は,論理的な複製であり,対象物の全体や一部といった範囲を限定できる点が異なる。このような機能は,大がかりな準備と高度な技術が必要と考えている方も多いだろう。MySQLのレプリケーション機能は,非常に簡単に利用することができる。今回は,現行バージョンでも利用可能なレプリケーション機能を解説する。図3●デモ環境MySQLのレプリケーション機能は,MasterとSlaveに役割が分かれる(図1[拡大表示])。Masterとなっているデータベースの内容が,Slaveのデータベースに反映される。そのため,更新できるのは,Masterのみである。参照だけであれば,Slaveも通常どおりアクセスできるので,参照専用として割り切る利用方法もある。データベースのバックアップ,更新系と参照系の分離による高速化,リアル系とバッチ系の分離など様々な利用方法が考えられる。2台以上の構成や1台のマシンにMasterとSlaveを同時稼働させるなど,複雑な構成も可能だ。MasterとSlaveの同期には,MasterのBinaryLog(binlog)が重要な役割を果たす(図2[拡大表示])。Masterのデータベース更新内容は,BinaryLogに保存される。BinaryLogは,更新処理内容,クエリーの実行時間などの情報がバイナリ形式で格納されている。Slaveは,定期的にMasterのBinaryLogを参照して,更新内容を把握し反映する。Slaveが同期のために行った更新は,RelayLogに記録が残る。レプリケーションの設定は簡単MySQLのレプリケーションの設定は非常に簡単である。2000,SlaveにLinuxである。MySQLは異なるOSの間でもレプリケーションが可能だ(図3[拡大表示])。IPアドレスは,Masterが「192.168.1.101」,Slaveが「192.168.1.100」とする。Masterのデータベース「databank」の中にテーブル「member」を作成した。データベース「databank」をSalveに複製する。Slaveがアクセスするためのレプリケーションユーザーを作成し権限を設定する。SQLコマンドで,ユーザー「satou」に権限「file」を与える。slave」を与え,パスワード「pass」とする。環境設定ファイル「C:¥WINNT¥my.ini」(Windows2000の場合)に以下の3行を追加する。MySQLを再起動する。環境設定ファイル「/etc/my.cnf」(Linux環境の場合)に以下の5行を追加する。Masterのデータベース「databank」の内容をSlaveに複写する。MySQLを再起動する。Slaveの設定の補足とレプリケーションに関するSQLコマンドSlaveの環境設定ファイルの記述内容は,Masterへの接続情報や対象範囲を指定する項目である(表1)。対象外となるテーブル名レプリケーションに関する代表的なSQLコマンドを表2にまとめる。Slaveの参照先であるMasterの情報を変更する。’123’;レプリケーションの動作を確認するMaster環境設定ファイルを変更しMySQLを再起動すれば,BinaryLogが有効となり,Slaveのアクセスを受けられる状態になる。status」にて確認できる。File欄に現在のBinaryLogファイル名と位置が表示される。sec)Slave環境設定ファイルを変更しMySQLを再起動すれば,Masterにアクセスが始まり,同期が有効となる。status\G」にて確認できる。status」の内容と同じなら同期している。sec)エラーが発生した場合の対処法レプリケーションが動作しない場合には,以下の点を確認する。Masterのレプリケーションユーザーの権限設定とSlaveの環境設定ファイルの内容が噛み合わずエラーとなることが多い。Administratorのレプリケーション状況表示画面レプリケーションの動作をテーブルの作成で試してみよう。今回のデモでは,データベース「databank」全体をレプリケーションしている。そのため,Masterで,テーブル「member」を基にテーブル「member2」を作成すると,ほぼ同時にSlaveにテーブル「member2」が出現する。図4[拡大表示]は,MasterとSlaveで実施した際の処理結果を時系列に表した。Start」によって,レプリケーションを一次停止できる。停止中のMasterの更新は,レプリケーション再開後にSlaveに反映される(図5[拡大表示])。Administratorには,レプリケーションを確認する機能もある。Administratorを実行すると状態を見ることができる(写真1[拡大表示])。少々駆け足となったが,レプリケーションの設定と動作をご理解いただけただろうか。このようにMySQLのレプリケーション機能は手軽に導入することができる。クラスタリング機能も2004年第3四半期にリリースレプリケーションより一歩進んだ冗長化の方法としてクラスタリングがある。あるサーバーに障害が発生した際,残りのサーバーが処理を継続するフェールオーバーを自動的に実行する機能である。Cluster」が発表された(関連記事)。MySQL本体と同様,GPLと商用ライセンスのデュアル・ライセンスで提供される。2004年第3四半期にリリースされる予定だが,MySQL社が買収したAlzato社の有償製品がベースとなっているので,早い段階から高い完成度が得られると思う(関連記事)。現在は,ソースコード・レベルの公開となっているが,もう少し具体的な段階になったら,ぜひこのコーナーで紹介したい。ゼンド・オープンソースシステムズは,オープンソースによるシステム構築を提案し,情報化投資削減の実現を目指して平成14年12月に設立。Technologiesと提携関係にあり,Zend製品の販売,サポートおよびLAMPおよびLAPPによるシステム構築を推進している。ABのリセーラとしてライセンス,サポート,コンサルティングの提供を行っている。農家が実感した自動飛行ドローンのすごさクラウド現場の負担軽減を!医療界でのAWS活用法SaaSを加速するソリューションとは?クラウドの新形態「aPaaS」のメリットDXを阻むコミュニケーションの壁とは?AWSとSAPの連携強化がもたらす利点は500万社が導入。価値創造型の社内コミュニケーションとは発想を豊かにする有機的な会議ツールとは働き方が変わる。Reserved.このページに掲載されている記事・写真・図表などの無断転載を禁じます。掲載している情報は、記事執筆時点のものです。