CentOSの-7.5構成されたデュアルマスターコピーのMySQL-5.7

まず、実験環境
のCentOS-7.5の両方の仮想マシン
の仮想マシン構成:1Gメモリ、1コアCPU、40Gディスク
MySQLバージョン:コミュニティ版5.7のMySQL
Master_A:192.168.218.128
master_b:192.168.218.136
ファイアウォール+ SELinuxの:閉じています

デュアルマスタ:うちの主に二つのサーバ
二段デュアルマスタ:
1は、主Master_A、周囲からマスタへmaster_bするように構成され、
前記主構成master_b、master_aから環境から前方であります

構成に関する考慮事項:
第一実施形態マスター- >スレーブ同期プライマリマスタ。一方向の同期からマスター双方向同期マスタデータ、マスターデータ。

第二に、MySQLサービスをインストールします

説明:2台のMySQLサーバーがまったく同じ環境をインストールするため、2台のサーバが同時に、次のコマンドを実行します

1)アンインストールシステムはmariadbサービスが付属してい
ます。[root @ CentOSの〜]#
[ルート@ CentOSの〜]#RPM -qa mariadb #あなたがmariadbサービスをインストールしているかどうかを確認するために最初の
CentOSの-7.5構成されたデュアルマスターコピーのMySQL-5.7
[ルート@ CentOSの〜]#rpmの -e --nodeps mariadb- LIBS-5.5.56-2.el7.x86_64#アンインストールプログラム
[ルート@ CentOSの〜]#RPM -qa mariadb
#アンインストールmariadb成功かどうかを確認し
ます。[root @ CentOSの〜]#

ソースの2)をダウンロードし、インストールのmysql-5.7
のyum localinstall https://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm#ソースのMySQL-5.7のインストール
[ルート@ CentOSの〜]#
[ルート@ CentOSの〜]#LL /etc/yum.repos.d/ | grepの'MySQLのコミュニティコミュニティ'
CentOSの-7.5構成されたデュアルマスターコピーのMySQL-5.7
CentOSの〜@ [ルート]#
[CentOSの〜]#yumをリストMySQLコミュニティコミュニティ・サーバ・ビュー#@ルートあなたは、MySQLのMySQLのソースバージョンをインストールすることができます
CentOSの-7.5構成されたデュアルマスターコピーのMySQL-5.7

3)オリジナルのLinuxシステムは、my.cnfのファイルが来るの削除
が存在する場合、元のLinuxシステムは、my.cnfのファイルが来るのmy.cnfファイルを削除し
ます。[root @ CentOSの〜]#RM -rfな/etc/my.cnf# 削除ファイル
[ルート@ CentOSの〜]#

4)5.7-正式なインストールのMySQL
[ルート@ CentOSの〜]#
[ルート@ CentOSの〜]#yumを-y MySQLコミュニティコミュニティサービスのMySQLの-サーバ#のインストールをインストールし
CentOSの-7.5構成されたデュアルマスターコピーのMySQL-5.7
ます。[root @ CentOSの〜]#rpmで -qa mysqlの-コミュニティサーバー
CentOSの-7.5構成されたデュアルマスターコピーのMySQL-5.7

5)启动のMySQL-5.7
[ルート@ CentOSの〜]#
[ルート@ CentOSの〜]#はmysqld.serviceを開始systemctl
[ルート@ CentOSの〜]#mysqld.serviceを有効systemctl
[ルート@ CentOSの〜]#

第三に、設定ファイルに2台のMySQLサーバーを変更します

注:二人は互いのメインサーバは、コンフィギュレーションからとても似ていますが、サーバー-idが同じではありませんので

1)master_a側の設定
[CentOSのルート@〜]#
[CentOSのルート@〜] ##な/etc/my.cnf Vimの設定ファイルの編集がMaster_Aを変更します
CentOSの-7.5構成されたデュアルマスターコピーのMySQL-5.7

2)master_b側構成
[2- CentOSのルート@〜]#
[ルート@〜CentOSの-2] ##な/etc/my.cnf Vimのコンフィギュレーションファイルの編集はmaster_bを変更します
CentOSの-7.5構成されたデュアルマスターコピーのMySQL-5.7

3)ファイルのbinlog格納するためのディレクトリを作成します
master_aエンド作成:
[ルートのCentOSを@〜]#
[CentOSのルート@〜]#ます。mkdirは/ var / libに/ MySQLの/ binary_log
[CentOSのルートを@〜]#
[CentOSのルート@〜] #chownコマンドのmysql:mysqlのは/ var / libに/ mysqlの/ binary_log# 承認
[CentOSのはルート@〜]#
[CentOSのルート@〜]#LLの/ var / libに/ MySQLの|はgrep 'binary_log'
CentOSの-7.5構成されたデュアルマスターコピーのMySQL-5.7

master_b側が作成した:
#[CentOSの-2〜@ルート]
#ます。mkdirは/ var / libに/ MySQLの/ binary_log [ルートのCentOS-2〜@]
#[CentOSの-2〜@ルート]
[CentOSの-2 @ルート〜]#chownコマンドmysqlの:mysqlのは/ var / libに/ mysqlの/ binary_log# 承認
[2-CentOSのルート@〜]#
[2-CentOSのルート@〜]#LLの/ var / libに/ MySQLの|はgrep 'binary_log'
CentOSの-7.5構成されたデュアルマスターコピーのMySQL-5.7

第四には、MySQLサービスを再起動します

注:設定ファイルを変更した後、有効にするMySQLサービスの設定を再起動します

1)エンドを実行master_a
[CentOSのにルートを@〜]#
[CentOSのルート@〜]#systemctl再起動のmysqld
[CentOSのルート@〜]#

2)は、エンド行うmaster_b
[ルートを@〜のCentOS-2]#
[2-CentOSのルート@〜]#systemctlの再起動mysqldを
[2 - CentOSのルート@〜]#

第五に、バイナリファイルが生成されたかどうかを確認するには

1)は、エンド行うmaster_a
[CentOSのルートを@〜]#
[CentOSのルート@〜]#のLSは/ var / libに/ MySQLの/ binary_log /
CentOSの-7.5構成されたデュアルマスターコピーのMySQL-5.7

2)エンドを実行master_b
[ルートを@〜のCentOS-2]#を
[2 - CentOSのルート@〜]#LSは/ var / libに/ MySQLの/ binary_log /
CentOSの-7.5構成されたデュアルマスターコピーのMySQL-5.7

第六には、一時的なパスワードを取得するのMySQL

1)master_a端部は、取得:
[CentOSのルート@〜]#
[CentOSのルート@〜]#grepの'一時的な' /var/log/mysqld.log
CentOSの-7.5構成されたデュアルマスターコピーのMySQL-5.7

2)master_bエンド取得
CentOSの-7.5構成されたデュアルマスターコピーのMySQL-5.7

セブン、MySQLを設定するには、セキュリティの構成ウィザードを使用します

説明:MySQLを使用する前に、基本的な設定

注:ほとんど同じ動作する2つのMySQLサーバではなく、同じrootパスワードを設定することができます

1)に配置されたエンドmaster_a
[ルートのCentOSを@〜]#
[CentOSのルートを@〜] ## mysql_secure_installationセキュリティの構成ウィザード
のセキュリティ保護のMySQLサーバーの展開。

ユーザーrootのパスワードを入力します:#は上記で得られた仮のパスワードを入力し、76 / .favFurg

ユーザーアカウントのルートのための既存のパスワードの有効期限が切れています。新しいパスワードを設定してください。

新しいパスワード:#は、新しいルートパスワードを設定しCtsi.2020

新しいパスワードを再入力します。#再次输入新ルート密码Ctsi.2020
ザ・「validate_password」プラグインは、サーバーにインストールされています。
その後の工程は、既存の設定で実行されます
プラグインの。
ルートの既存のパスワードを使用します。

パスワードの推定強度:100#パスワードの強度は100だった
| Y-はい、いいえのために他のキー)のため:? NO#は、rootのパスワードを変更もはや修復されてabove'veルート((Y-プレス用のパスワードに変更

...スキップ。
デフォルトでは、MySQLのインストールは、匿名ユーザーを持っている
誰もが持ってすることなく、MySQLのにログインできるように
彼らのために作成したユーザーアカウントを。これだけのために意図され
、テスト、およびインストールはビット滑らかに行かせるために。
本番に移行する前に、それらを削除すべきである
環境。

匿名ユーザーの削除(Y-プレス|いいえ用Y-はい、他のキー用):? Y-
成功#は匿名ユーザーを削除します。

通常、ルートからのみ接続を許可しなければならない
「localhost」の。この性を保証は誰かを推測することができない
ネットワークからのrootのパスワード。

ログインリモートからのルート許可しない(Y-プレス|いいえ用Y-はい、他のキー用):? Y-
成功は#telnetのrootユーザのMySQLサーバを禁止しています。

デフォルトでは、MySQLはことを「試験」という名前のデータベースが付属しています
誰でもアクセスすることができます。これはまた、唯一のテストのために意図され、
生産に移行する前に除去しなければならない
環境。

それにテスト・データベースとのアクセスを削除しますか?(プレスY |はいのためのY、ノーのための他のキー):Y#删除测试数据库

  • テスト・データベースを削除...
    成功。

  • テスト・データベース上の権限を削除する...
    成功。

権限テーブルをリロードすると、すべての変更をすることを保証します
、これまでに作られたが、すぐに有効になります。

リロード権限テーブルになりましたか?Y:|(はい、いいえのために他のキーのためにYを押しy)を
成功。#刷新授权表

すべて完了!
[CentOSの〜@ルート]#

2)master_bエンドセット
master_bエンドセキュリティの構成ウィザードのセットと全く同じ設定とmaster_aエンド、でもrootユーザのパスワードに、同じCtsi.2020あります

設定手順は省略されます......

master_a 8つのconfigureは、ベースからのマスタースレーブのレプリケーションモードのmaster_b

行うには1)を設定し、MySQLのレプリケーションアカウントと承認
master_a終了操作を:
[CentOSのルート@〜]#
[CentOSのルート@〜]#MySQLの-uroot - p'Ctsi.2020「
MySQLの>
MySQLの>ショーのデータベース;
CentOSの-7.5構成されたデュアルマスターコピーのMySQL-5.7
MySQLの>
MySQLの>グラントレプリケーション上のスレーブが「Mysql.2020」で識別[email protected]し、すべてのライブラリの#アカウント認証repluserを、サーバ192.168.218.136プライマリサーバとすべてのテーブルからログインしてマスターサーバーを複製することができ
、クエリOK、0行が影響を受け、1警告(0.01秒)

MySQLの>
MySQLの>フラッシュ権限;#リフレッシュ承認フォーム
クエリOK、影響を受けた0行(0.00秒)

MySQLの>

2)master_a Aマスターサーバーおよびすべての機器の保存
[CentOSのルート@〜]#
[CentOSのルート@〜]#-uroot - p'Ctsi.2020 mysqldumpを「--all --single-トランザクションデータベース>を/ tmp / mysql_full-フルバックアップ1.SQLの#導出
CentOSの-7.5構成されたデュアルマスターコピーのMySQL-5.7
[CentOSのルートを@〜]#
[CentOSのルート@〜]#LL /tmp/mysql_full-1.sql
CentOSの-7.5構成されたデュアルマスターコピーのMySQL-5.7

3)初めてのスタンバイコピーへのサーバーから完全なmysqlのマスターサーバー
[CentOSのルート@〜]#
[CentOSのルート@〜]#SCP /tmp/mysql_full-1.sql [email protected]:を/ tmp /
CentOSの-7.5構成されたデュアルマスターコピーのMySQL-5.7

[ルート@ CentOSの〜]#
[ルート@ CentOSの〜] ## [email protected] SSHサーバからのフルバックアップコピーを表示するには、リモートログイン成功した場合は
CentOSの-7.5構成されたデュアルマスターコピーのMySQL-5.7
、[ルート@ CentOSの-2〜] #LLを/ tmp / mysql_full-1。 SQL
CentOSの-7.5構成されたデュアルマスターコピーのMySQL-5.7
[ルート@ CentOSの-2〜]#
[ルート@ CentOSの-2〜]うち##ジンバブエログアウトログインリモートサーバーから
CentOSの-7.5構成されたデュアルマスターコピーのMySQL-5.7

サーバからデータベースに導入4)すべての機器
master_b側操作:
[ルート@〜CentOSの-2]#
[2- CentOSのルート@〜]#のMySQL -uroot - p'Ctsi.2020「</tmp/mysql_full-1.sql #マスタが両端から整合性のある状態にあるように、すべての機器をインポート

この場合、マスター側と一貫性のある状態でデータのスレーブ側で

5)プライマリ・データベース・サーバの状態を確認し、覚え
説明:この状態はそう覚えて、バックを使用することが非常に重要である
master_a側の実行:
[ルート@ CentOSの〜]#
[ルート@ CentOSの〜]#-uroot-MySQLを-プライマリ・データベース・サーバでp'Ctsi.2020「#記号
のMySQL>
MySQLの>を表示するマスターステータス;#がメインのライブラリのステータスを表示
CentOSの-7.5構成されたデュアルマスターコピーのMySQL-5.7

6)プライマリおよびコピーの
実行master_bエンド:
[ルート@〜のCentOS-2]#
[2-CentOSのルート@〜] MySQLの-uroot - p'Ctsi.2020#「#ログサーバ側のデータベースから
MySQLの>
MySQLの>変更マスター
- > MASTER_HOST = '192.168.218.128'、
- > MASTER_USER = 'repluser'、
- > master_password = 'Mysql.2020'、
- > MASTER_LOG_FILE = 'Master_A-binlog.000001'、
- > MASTER_LOG_POS = 1163;
クエリの[OK]を、 0行は、2回の警告を影響(0.13秒)

MySQLの>
MySQLの>
CentOSの-7.5構成されたデュアルマスターコピーのMySQL-5.7

MySQLの>
MySQLの>開始スレーブ;#スタートスレーブ同期プロセス
クエリOK、影響を受けた0行(0.00秒)

MySQLの>
MySQLの>
MySQLの>ショースレーブステータス\ G#見るスレーブステータス
CentOSの-7.5構成されたデュアルマスターコピーのMySQL-5.7

九、master_aベースを検証するために、からマスタースレーブレプリケーションのmaster_b

方法:挿入データのmaster_a端において、master_b端は同期過去を検証します

1)マスター・データベースに作成し、データの終わりを挿入するために
、[CentOSのにルートを@〜]#
[CentOSのルート@〜]#MySQLの-uroot - p'Ctsi.2020「
MySQLの>
MySQLの>データベースT1を作成し、
クエリOK、影響を受けた行1(0.00秒)

MySQLの>
MySQLの>使用さt1;
データベースが変更さ
mysqlの>
mysqlの> CREATE TABLE学生(
- >シドはvarchar(10)、
- > SNAMEのデータ型はnvarchar(10)、
- >セージの日時、
- > Ssexのデータ型はnvarchar(10)
- >);
クエリOK、影響を受けた0行(0.15秒)

MySQLの>
のMySQL>
のMySQL>インサートスチューデント値に('01' 、 '张磊'、 '1995年2月8日'、 '男')。
クエリOK、影響を受けた1行(0.00秒)

MySQLの>
MySQLの>インサートスチューデント値に('02' 、 '李华'、 '1995年6月11日'、 '男')。
クエリOK、影響を受けた1行(0.01秒)

MySQLの>
学生からのmysql> SELECT * FROM。
CentOSの-7.5構成されたデュアルマスターコピーのMySQL-5.7

2)マスタデータにスレーブ端末を挿入するかどうかを確認する
[ルート@〜CentOSの-2]#
[2- CentOSのルート@〜]#のMySQL -uroot - p'Ctsi.2020「末端master_b#ログデータベース
のMySQL>
のMySQL>データベースの表示;
CentOSの-7.5構成されたデュアルマスターコピーのMySQL-5.7
MySQLの>
t1.StudentからのMySQL> SELECT *;
CentOSの-7.5構成されたデュアルマスターコピーのMySQL-5.7

結論:比較master_a master_b、見つかった一貫性のあるデータが終了すると、マスター・スレーブ同期成功

十、その後からメインMaster_Aからコピーモードに、主master_bするように構成されました

理解:オリジナルCentOSのマスターノードに新しいユーザー(※これは重要である上に作成し、前に既にマスタースレーブ構成は、それが作成したので、自動的に同期master_aノード上のmaster_bにあなたがmaster_b上でユーザーを作成する場合、それはかもしれません2つのノードが)データの矛盾が発生する原因になります

master_a終わりを運営:

1)を設定し、MySQLのレプリケーションアカウントと承認を行う
実行master_aエンド:
[ルートを@にCentOS〜]#
[ルート@ CentOSの〜]#のMySQL-uroot - p'Ctsi.2020「
MySQLの>
MySQLの>グラントスレーブ複製ON へのrepluser @ 192.168.218.128 'Mysql.2020'によって同定;
クエリーOK、影響を受けた0行、警告1(0.00秒)。

MySQLの>
MySQLの>フラッシュ権限;
クエリOK、影響を受けた0行(0.00秒)

MySQLの>

2)プライマリ・データベース・サーバの状態を確認し、覚え
説明:この状態は、バックを使用することは非常に重要ですので、覚えて
master_bの終わりに実行する:
#[CentOSの-2〜@ルート]
[CentOSの-2〜@ルート] #mysqlの-uroot -p'Ctsi.2020 "
CentOSの-7.5構成されたデュアルマスターコピーのMySQL-5.7

3)プライマリおよびコピー
実行master_aエンド:
[CentOSのルート@〜]#
[CentOSのルート@〜]#MySQLの-uroot - p'Ctsi.2020 '
MySQLの>
MySQLの>変更マスターへ
- > MASTER_HOST =' 192.168.218.136 '
- > MASTER_USER =' repluser '
- > master_password =' Mysql.2020 '
- > MASTER_LOG_FILE =' master_b-binlog.000001」、
- > MASTER_LOG_POS = 831 197;
クエリーOK、0行が影響を受け、2つの表す警告(0.13秒)

MySQLの>
CentOSの-7.5構成されたデュアルマスターコピーのMySQL-5.7
MySQLの>
MySQLの>開始スレーブ;#スタートスレーブ同期プロセス
クエリOK、影響を受けた0行(0.00秒)

MySQLの>
MySQLの>
MySQLの>ショースレーブステータス\ G#見るスレーブステータス
CentOSの-7.5構成されたデュアルマスターコピーのMySQL-5.7

マスター・スレーブから、複製のMaster_Aをmaster_bするXIベースの認証

方法:データmaster_bの終わりを挿入することは、同期の過去を検証終了master_a

1)マスター・データベースとデータの挿入最後に作成された
[2-CentOSのルート@〜]#
p'Ctsi.2020 ' - [2 - CentOSのルート@〜]#MySQLの-uroot
のMySQL>
t2は#データベースを作成し、MySQLの>データベースT2を作成します。
クエリOK、影響を受けた1行(0.00秒)

MySQLの>
MySQLの>使用さt2;
データベースが変更さ
mysqlの>
mysqlの> CREATE TABLE学生(
- >シドはvarchar(10)、
- > SNAMEのデータ型はnvarchar(10)、
- >セージの日時、
- > Ssexのデータ型はnvarchar(10)
- >);
クエリOK、影響を受けた0行(0.11秒)

MySQLの>
CentOSの-7.5構成されたデュアルマスターコピーのMySQL-5.7
MySQLの>
のMySQL> INSERT INTO学生値('03 ''清王'' 1996年1月6日'' F「);#データ挿入
クエリOK、影響を受けた1行(0.01秒)

MySQLの>
MySQLの>インサートスチューデント値に('04' 、 '三毛'、 '1980年9月25日'、 '女')。
クエリOK、影響を受けた1行(0.10秒)

MySQLの>
学生からのmysql> SELECT * FROM。
CentOSの-7.5構成されたデュアルマスターコピーのMySQL-5.7

2)マスタデータにスレーブ端末が挿入されたかどうかを確認するには
、[CentOSのルートを@〜]#
[CentOSのルートを@〜]#MySQLの-uroot - p'Ctsi.2020「
MySQLの>
MySQLの>ショーのデータベース;
CentOSの-7.5構成されたデュアルマスターコピーのMySQL-5.7
MySQLの>
MySQLの> SELECT * t2.Studentから。
CentOSの-7.5構成されたデュアルマスターコピーのMySQL-5.7

結論:比較master_a master_b、見つかった一貫性のあるデータが終了すると、マスター・スレーブ同期成功

12.この実験結果

MySQLのマスタコンフィギュレーションダブル成功:検証結果の2回行った後

おすすめ

転載: blog.51cto.com/14783377/2485673