GTID(グローバルトランザクション識別子)は、各トランザクションに世界で唯一のIDをつける機能です。使ったレプリケーションではこの問題を根本的に解決してくれます。使ったレプリケーションを設定方法をメモしておきました。サーバ構成ごく単純な、マスター1台、スレーブ1台の構成です。以下に変更しています。MySQLを再起動して、設定を反映します。かぶらないように設定します。一意に設定することは変わらず必要なようです。設定する必要があることは変わりません。引用gtid_mode=ONGTIDを有効にします。enforce_gtid_consistencyGTIDと併用できないSQL文を禁止にします。禁止されるSQL文は以下の通りです。稼働しているシステムでGTIDを有効にする場合は、アプリケーション側でこのようなSQL文が使われていないか検証が必要ですね。ステートメント・トランザクションおよび非トランザクションテーブルの両方を更新するトランザクションまたはステートメント。引用log_bin=mysql-bin従来のレプリケーション設定と同様に、バイナリログを有効にします。バイナリログには、実行したSQLなど、DBの更新情報が含まれています。このバイナリログを、スレーブサーバに転送することによって、データ同期を実現しています。引数でバイナリログ名を指定できます。指定しない場合は、ホスト名がバイナリログ名の一部に使われます。sync_binlog=1「sync_binlog=1」にすると、バイナリログの整合性、すなわちマスター/スレーブ間の整合性を高めることができます。以前のバージョンではこの設定はサーバへの負荷が大きかったのですが、最近のバージョンで改良されたためかMySQL5.7.7からはデフォルトで「sync_binlog=1」が設定されるようになりました。(なのでこの設定は書かなくてもかまいません)レプリケーション用ユーザの作成スレーブサーバ(172.16.1.117)からのみ接続を許可します。ユーザ名は、慣習的に「repl」を指定していますが、なんでもかまいません。'';「repl」ユーザが作成されたことを確認します。|マスターDBのダンプレプリケーションの開始時のみ、手動でマスターのDB全体を、スレーブにコピーする必要がありますので、マスターのDBをダンプします。master_db.sqlダンプしたファイルをスレーブサーバにコピーしておきます。ポートを開いておきます。--reloadマスターサーバでの作業は以上です。続いてスレーブサーバの設定です。設定スレーブサーバ特有の設定以外は、マスターサーバの設定と同じにしておくことをオススメします。GTIDの有効化gtid_mode=ON:MySQLを再起動して、設定を反映します。設定するとレプリケーションによる更新以外を禁止することができます。SUPER権限を持ったユーザ(rootなど)の更新は許可されます。合わせて、MySQL5.7.8で導入された「super_read_only」を設定すれば、SUPER権限を持ったユーザの更新さえも禁止することができます。これを設定してしまうと、ダンプしたデータの読み込みができなくなるなど設定作業に弊害があるので、正常にレプリケーションが稼働してから設定するのがよいかと思います。log_slave_updatesスレーブSQLスレッドによって実行される更新をバイナリログに書き込みます。スレーブ」のようにスレーブサーバを多段構成する場合に必要になります。多段構成に設定しない場合でも、スレーブがマスターに昇格する場面に備えて設定しておくのが良いと思います。relay_log=mysql-relay-binリレーログ名を指定します。デフォルトではホスト名がリレーログ名の一部に使われるため、サーバの移行などでホスト名が変わるとリレーログを見つけられなくなります。そのためリレーログ名を指定することが推奨されています。relay_log_info_repository=TABLErelay_log_recovery=ONrelay_log_purge=ONクラッシュセーフスレーブの設定です。マスター/スレーブサーバの障害発生時に、復旧作業の手間を大幅に軽減できます。「OFF」にしてはいけないため、念のため「relay_log_purge=ON」を明示的に書いています。コマンドを実行します。MASTER;マスターサーバでダンプしたデータを、スレーブに読み込みます。master_db.sqlちなみに「gtid_executed」をクリアしないで、ダンプしたデータを読み込もうとすると以下のようなエラーが発生します。empty.レプリケーションの設定GTIDを使用したレプリケーションでは、マスターのバイナリログファイル名(MASTER_LOG_FILE)や開始位置(MASTER_LOG_POS)を設定する必要はありません。GTIDベース自動ポジショニング(MASTER_AUTO_POSITION=1)を使用するように指定するだけでOKです。TOMASTER_HOST='172.16.1.116',MASTER_PORT=3306,MASTER_USER='repl',MASTER_PASSWORD='<パスワード>',MASTER_AUTO_POSITION=1;MASTER_HOSTマスターサーバのIPアドレスを指定します。待受ポート番号を指定します。ポート番号を変更していなければ「3306」です。MASTER_USER先ほど作成した、レプリケーション用ユーザ名を指定します。MASTER_PASSWORDレプリケーション用ユーザのパスワードを指定します。MASTER_AUTO_POSITION上にも書きましたが、GTIDベース自動ポジショニングを使用するように「1」を指定します。従来のファイルと位置に基づくレプリケーションに戻す場合は「0」を指定するとともに、バイナリログファイル名(MASTER_LOG_FILE)と開始位置(MASTER_LOG_POS)を指定します。設定が終わったら、以下のコマンドでレプリケーションを開始します。TO」で「MASTER_USER」や「MASTER_PASSWORD」を指定すると、MySQL5.6からは警告されるようになりました。これは『スレーブサーバの「master.info」にユーザ名やパスワードがそのまま保存されるよ!』と注意してくれています。information.CentOS7.3の場合「master.info」のアクセス権は、以下のように設定されているため、一般ユーザにユーザ名やパスワードが見られてしまうことはありませんが、セキュリティ的にはちょっと不安なところです。SLAVE」と合わせて指定します。なく「PASSWORD」オプションで指定します。した場合、スレーブサーバを再起動するたびにユーザ名とパスワードを入力しなければならないので、セキュリティと運用のバランスを見て、検討する必要があるかと思います。どちらも「Yes」になっていれば、レプリケーションが正常に動作しています。Yes(略)よくあるエラーの原因と対策(UUIDの重複)レプリケーションが開始しない原因としてよくあるのが、UUID(server-uuid)の重複です。STATUS」で確認すると以下ようなエラーメッセージが表示されます。work.UUIDは「/var/lib/mysql/auto.cnf」などに保存されているのですが、例えばAWSなどのクラウドサービスで、MySQL設定済のテンプレートから複数のサーバを作成すると、「/var/lib/mysql/auto.cnf」がどのサーバも同じものになるため、当然ですがUUIDが重複します。このエラーが発生した場合は、以下の手順でUUIDを新たに生成してから、レプリケーションを開始します。MySQLを一度停止します。mysqldUUIDが保存されている「/var/lib/mysql/auto.cnf」を削除します。/var/lib/mysql/auto.cnfMySQLを起動します。このとき新たに「/var/lib/mysql/auto.cnf」作成され、重複のないUUIDが生成してくれます。mysqld一度スレーブをリセットしてから、レプリケーションを開始します。SLAVE;GTIDを使う本当のメリット単純なレプリケーション構成の場合、GTIDを使うメリットが無いように思えますが、GTIDを使用したレプリケーションは「データを正しく同期する」というレプリケーション本来の目的を、とてもシンプルな方法で解決しようとしています。GTIDを使う本当のメリットはここにあると私は思います。ONE)」を参考にさせて頂きました。この書籍では、GTID以外にもMySQL5.7で追加/変更された、175もの新機能や変更点が詳細に解説されています。これからMySQL5.7を使おうかなと思っている方や、既にMySQL5.7を使っている方にも、ぜひオススメの一冊です。スポンサーリンクスポンサーリンクこの記事をシェアするTwitterFacebook0はてブ3Pocket10LINEコピーあぱーブログをフォローするあぱーブログあぱーブログ関連記事LinuxVirtualBoxのネットワーク設定とCentOS6.5のインストールVirtualBoxの仮想マシンに、CentOS6.5をインストールしてみました。標準のネットワーク設定でインストールした場合、ホストマシンと通信ができないのですが、これを少し設定するだけで、ホストマシンと通信ができるようになります。MySQLスレーブサーバ(レプリケーション)の監視設定メモMySQLを、マスター/スレーブ構成で運用している時に、監視しておきたいのが、レプリケーションが正常に動作していることです。7.1(1503)がリリースされました。初のマイナーバージョンアップになりますね。インストールメモ(CentOS7.1.1503)Redis(レディス)は、メモリ上でデータの高速な読み書きを可能にする、キーバリューストアを構築するためのソフトウェアです。半年ぶりのバージョンアップです。コメントをキャンセルメールアドレスが公開されることはありません。再起動なしで重要なセキュリティパッチなどを適用できるようになりました。標準でインストールできるようになっています。サポートが終了します。移行できない場合もあります。いった場合の最終手段としてマイクロソフトは拡張セキュリティ更新(ESU)プログラムを用意しています。アプリを試してみたと思います。再起動なしで重要なセキュリティパッチなどを適用できるようになりました。標準でインストールできるようになっています。サポートが終了します。移行できない場合もあります。いった場合の最終手段としてマイクロソフトは拡張セキュリティ更新(ESU)プログラムを用意しています。アプリを試してみたと思います。29スポンサーリンクタイトルとURLをコピーしました。