GNU/Linux >> Linux の 問題 >  >> Linux

MySQLマスターをセットアップする方法-マスターレプリケーション

この記事では、いくつかのソースからの情報を、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.cnf 
 server-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.cnf 
 server-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 =2 

name_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
  1. OracleLinuxでMySQLマルチマスターレプリケーションを構成する方法

  2. CentOSおよびRedHatでMySQLを使用してPure-FTPDをセットアップする方法

  3. Ubuntu18.04でMariaDBマスタースレーブレプリケーションをセットアップする方法

  1. Debian 8でMySQLを使用してマスターマスターレプリケーションを設定する(Jessie)

  2. RsyslogとMySQLを使用してLogAnalyzerをセットアップする方法

  3. CentOSでMySQLレプリケーションを設定する方法

  1. MySQLマスタースレーブレプリケーションを設定する方法

  2. MySQLソース-ソースレプリケーションを構成する

  3. MySQLソース-レプリカレプリケーションを設定する