この記事では、いくつかのソースからの情報を、MySQLマスター/マスターレプリケーションのセットアップに使用する形式に統合します。 Linuxとオープンソースの利点は、これを行うためのさまざまな方法があることです。私の参考文献を見て、あなたが持っているかもしれないどんなニーズにも対応するためにそれらを使ってください。ご不明な点がある場合や問題が発生した場合は、コメント欄にご記入ください。
この記事は、各サーバーにMySQLがすでにインストールされていることを前提としています。そうでない場合は、MySQL Webサイト(https://www.mysql.org/downloads)から簡単に行うことができます。この記事はMariaDBでテストされていませんが、MariaDBを使用したい場合は機能するはずです。
SELINUXをpermissiveに変更します(インストールされている場合)
サーバーA
[[メール保護]〜]#vi / etc / selinux / config
#このファイルは、システム上のSELinuxの状態を制御します。#SELINUX =は、次の3つの値のいずれかを取ることができます。ポリシーがロードされます。SELINUX=permissive#SELINUXTYPE =は、次の2つの値のいずれかを取ることができます。サーバーB
[[メール保護]〜]#vi / etc / selinux / config#このファイルは、システム上のSELinuxの状態を制御します。#SELINUX =は、次の3つの値のいずれかを取ることができます。ポリシーがロードされます。SELINUX=permissive#SELINUXTYPE =は、次の2つの値のいずれかを取ることができます。
各サーバーでfirewalldを停止して無効にします サーバーA
[[email protected]〜]#systemctl stop Firewalld
[[email protected]〜]#systemctl disable Firewalld次のコマンドを実行して、ファイアウォールルールがないことを確認します
[[email protected]〜]#iptables -L結果は次のようになります。
Chain INPUT(policy ACCEPT)
target prot opt source destination
Chain FORWARD(policy ACCEPT)
target prot opt source destination
target protoptsource宛先サーバーB
[[email protected]〜]#systemctl stop Firewalld
[[email protected]〜]#systemctl disable Firewalld次のコマンドを実行して、ファイアウォールルールがないことを確認します。
[[email protected]〜]#iptables -L結果は次のようになります。
Chain INPUT(policy ACCEPT)
target prot opt source destination
Chain FORWARD(policy ACCEPT)
target prot opt source destination
target protoptsource宛先
両方のサーバーで/etc/my.cnfを編集 [mysqld]セクションの下部に次の情報を追加します
サーバーA
[[メール保護]〜]#vi /etc/my.cnfserver-id =1 log-bin ="mysql-bin" binlog-do-db =name_of_database Replicate-do-db =name_of_database relay-log ="mysql-relay-log" auto-increment-offset =1サーバーB
[[メール保護]〜]#vi /etc/my.cnfserver-id =2 log-bin ="mysql-bin" binlog-do-db =name_of_database Replicate-do-db =name_of_database relay-log ="mysql-relay-log" auto-increment-offset =2name_of_databaseを、複製するデータベースの名前に置き換えてください
各サーバーでMySQLデーモンを再起動して有効にします サーバーA
[[email protected]〜]#systemctl restart mysqld[[email protected]〜]#systemctl enable mysqldサーバーB
[[email protected]〜]#systemctl restart mysqld[[email protected]〜]#systemctl enable mysqld
各サーバーにレプリケーターユーザーを作成します [[email protected]〜]#mysql -u root -p
mysql> CREATE USER'replicator' @'%' IDENTIFIED BY'change_me';
mysql> GRANT REPLICATION SLAVEONfoo。*TO'replicator'@'%'[[email protected]〜]#mysql -u root -p
mysql> CREATE USER'replicator' @'%' IDENTIFIED BY'change_me';
mysql> GRANT REPLICATION SLAVEONfoo。*TO'replicator'@'%'
他のサーバーで使用するログファイル情報を取得する サーバーA
[[email protected]〜]#mysql -u root -p
mysql> SHOW MASTER STATUS;
+ ---------- -------- + ---------- + ------------------ + --------------- ------- +
|ファイル|位置| Binlog_Do_DB | Binlog_Ignore_DB |
+ ------------------ + ---------- + ------------- ----- + ------------------ +
| mysql-bin.000001 | 154 | name_of_database | |
+ ------------------ + ---------- + -------------- ---- + ------------------ +
1行セット(0.00秒)このコマンドの「ファイル」と「位置」に注意してください
サーバーB
[[email protected]〜]#mysql -u root -p
mysql> STOP SLAVE;
mysql> CHANGE MASTER TO MASTER_HOST='サーバーAのIPアドレスまたはHOSTNAME'、MASTER_USER ='replicator'、MASTER_PASSWORD ='change_me'、MASTER_LOG_FILE ='mysql-bin.000001'、MASTER_LOG_POS =154;
mysql> START SLAVE;サーバーBで同じ手順を繰り返します
サーバーB
[[email protected]〜]#mysql -u root -p mysql> SHOW MASTER STATUS;
+ ------------------ + ---------- + ------------------ + ------------------ +
|ファイル|位置| Binlog_Do_DB | Binlog_Ignore_DB |
+ ------------------ + ---------- + ------------- ----- + ------------------ +
| mysql-bin.000001 | 154 | name_of_database | |
+ ------------------ + ---------- + -------------- ---- + ------------------ +
1行セット(0.00秒)このコマンドの「ファイル」と「位置」に注意してください
サーバーA
[[email protected]〜]#mysql -u root -p
mysql> STOP SLAVE; MASTERをMASTER_HOST='サーバーBのIPアドレスまたはHOSTNAME'、MASTER_USER ='replicator'、MASTER_PASSWORD ='passw0rd'、MASTER_LOG_FILE ='mysql-bin.000001'、MASTER_LOG_POS=154に変更します。
mysql> START SLAVE;
両方のサーバーを再起動します サーバーA
[[email protected]〜]#systemctl restartサーバーB
[[email protected]〜]#systemctl restart
どちらのサーバーでもデータベースを作成します [[email protected]〜]#mysql -u root -p
mysql> CREATE DATABASE foo;
他のサーバーで、データベースが存在することを確認します
[[email protected]〜]#mysql -u root -p
mysql> SHOW DATABASES;
+ -------------------- +
|データベース|
+ -------------------- +
| information_schema |
| foo |
| mysql |
| performance_schema |
| sys |
+ -------------------- +
5行セット(0.00秒)
ソース
- https://www.howtoforge.com/mysql_database_replication
- https://www.digitalocean.com/community/tutorials/how-to-set-up-mysql-master-master-replication
- https://www.howtoforge.com/mysql_master_master_replication
- http://www.ryadel.com/en/mysql-master-master-replication-setup-in-5-easy-steps/
Linux