注 :Rackspace Supportは、構成が複雑でエラーが発生する可能性があるため、ソースとソースのレプリケーションのセットアップを支援できません。 MySQLのソースとソースのレプリケーションを指示する代わりに、データベースインスタンス間のデータレプリケーションの信頼性を高めるために、クラウドデータベースサービスまたはTungstenなどのレプリケーションエンジンのいずれかを検討してください。
MySQLソース-ソースレプリケーション
この記事では、クラスターレプリケーションを設定する方法を示します。2つのクラウドサーバー間での双方向レプリケーションと循環レプリケーションです。ソース-ソースデータの複製により、複数のコンピューターに保存されている複製データを、グループの承認された貢献メンバーが更新できるようになります。これにより、グループメンバーによって識別された必要な変更をノードの指定されたソースに送信する必要があるソースレプリカレプリケーションよりもオープンなコラボレーションが可能になります。
このチュートリアルでは、RackspaceCloudベースイメージから構築されたDebian 5(Lenny)オペレーティングシステムを使用します。
debian501
という2つのクラウドサーバーがあります およびdebian502
、この演習では、両方のサーバーに2つのIPアドレス(1つはパブリック、もう1つはプライベート)があります。この演習では、プライベートIPインターフェースを介してレプリケーションが実行されるように構成しているため、帯域幅の料金は発生しません。
Debian 5ベースイメージを使用して、2つのLinuxクラウドサーバーを作成する必要があります。次の手順を使用して、各サーバーを個別に作成します。
- クラウドコントロールパネルにログインします。
- 上部のナビゲーションバーで、製品の選択> Rackspace Cloudをクリックします 。
- サーバー>クラウドサーバーを選択します 。
- [サーバーの作成]をクリックします 。
- セットアップ中にサーバーを簡単に識別できるように、サーバーに名前を付けます。この演習では、debian501およびdebian502という名前が付けられています。
- Debianイメージを選択します。
- データベースの要件を満たすRAM構成(フレーバー)を選択します。
- [サーバーの作成]をクリックします 。
次のサーバーコマンドは、特権(root、sudoグループ)ユーザーとして実行する必要があります。
まず、両方のDebianクラウドサーバーにMySQLをインストールする必要があります。いつものように、パッケージをインストールする前に、パッケージリストが最新であり、ロケール/言語設定が適切に構成されていることを確認する必要があります。
-
パッケージデータベースを更新します:
# aptitude update
-
ロケールのインストール:
# aptitude install locales # dpkg-reconfigure locales
-
dpkg-reconfigure locales
コマンドを実行すると、国と地域に応じてシステムのロケールを選択できるロケール設定ウィンドウが表示されます。この場合、en\_GB.UTF-8
を選択します 。 -
次に、次のコマンドを実行してMySQLをインストールします。
# aptitude install mysql-server mysql-client libmysqlclient15-dev
mysql-server パッケージが正常にインストールされました。ノード間のレプリケーションを有効にするために、各MySQLノードの構成を開始します。
複製されるデータベースと、それとともに使用される複製のユーザー名とパスワードを作成する必要があります。以下に概説するコマンドを使用して設定できます。特定の構成に適用するために、すべての文字列/値の括弧内を変更することを忘れないでください。
-
まず、debian501で、mysqlコンソールにログインします。 (MySQLのインストール中に設定したmysqlルートパスワードを使用します。)
# mysql -u root -p mysql>
-
次に、変更を同期するために使用されるレプリケーションユーザーを作成します。
mysql> grant replication slave on \*.\* to replicauser@'[private IP of debian502]' identified by '[some password]'; mysql> flush privileges; mysql> exit
-
debian502についても同じようにします。
mysql> grant replication slave on \*.\* to replicauser@'[private IP of debian501]' identified by '[some password]'; mysql> flush privileges; mysql> exit
-
debian501に戻り、 /etc/mysql/my.cnfを編集します。 次のエントリを挿入、更新、またはコメント解除します。
bind-address = 0.0.0.0 server-id = 1 log-bin = /var/log/mysql/var/bin.log log-slave-updates log-bin-index = /var/log/mysql/log-bin.index log-error = /var/log/mysql/error.log relay-log = /var/log/mysql/relay.log relay-log-info-file = /var/log/mysql/relay-log.info relay-log-index = /var/log/mysql/relay-log.index auto_increment_increment = 10 auto_increment_offset = 1 master-host = [private IP address of debian502] master-user = [replication username] master-password = [replication password] replicate-do-db = <database name to be replicated>
-
debian502サーバーで手順を繰り返します。
bind-address = 0.0.0.0 server-id = 2 log-bin = /var/log/mysql/bin.log log-slave-updates log-bin-index = /var/log/mysql/log-bin.index log-error = /var/log/mysql/error.log relay-log = /var/log/mysql/relay.log relay-log-info-file = /var/log/mysql/relay-log.info relay-log-index = /var/log/mysql/relay-log.index auto_increment_increment = 10 auto_increment_offset = 2 master-host = [private IP address of debian501] master-user = [replication username] master-password = [replication user password] replicate-do-db = [database name to be replicated]
-
ここで、両方のデータベースを再起動します。いずれかのサーバーでサービスの再起動に失敗した場合は、/var/log/mysql/error.logを確認してください。 エラーのファイル。構成を更新し、タイプミスなどがないか確認します。
レプリケーション設定をテストするために、前の構成セクションで指定されたデータベースを作成します。また、ノードの1つにテストテーブルを作成し、 / var / log / mysqlのログファイルを監視します。 ディレクトリ。すべてのデータベースの変更は、すぐに他のサーバーに複製する必要があることに注意してください。
mysql> create database [your-db-name];
mysql> use [your-db-name]
mysql> create table foo (id int not null, username varchar(30) not null);
mysql> insert into foo values (1, 'bar');
-
追加のテストとして、debian502でMySQLサービスを停止し、debian501サーバーでデータベースを変更してから、debian502でMySQLサービスを再起動します。debian502MySQLサービスは、すべての新しい変更を自動的に同期する必要があります。
-
デフォルトのバイナリログローテーション値(
expire_logs_days
)の変更も検討する必要があります およびmax_binlog_size
) /etc/mysql/my.cnf内 デフォルトでは、すべてのバイナリログが10日間保持されるため、ファイル。データベースアプリケーションのトランザクション数が多い場合、ログにかなりのハードディスクスペース使用量が発生する可能性があります。したがって、サーバーバックアップポリシーに一致するようにこれらの値を変更することを検討してください。たとえば、MySQLノードのバックアップを毎日設定している場合、10日分のバイナリログを保持する必要はありません。