私たちは、以前の記事では、シナリオは、マスターをプライマリ相互支援、すなわちデュアルマスターデータの同期を設定する必要があるいくつかの高可用性では、MySQLマスタースレーブレプリケーションのバックアップ構成を説明しています。主MySQLの同期と同じで、マスタースレーブの同期が、主な政党は、一次同期マスター・スレーブの役割です。本論文では、MariaDBは、メインマスター構成の詳細を実証します。
この記事を読む前に、私たちは、あなたがサイトの実際の動作と記事の内容を読んだことが事前に想定しています。
- MariaDB 10.2インストールソースコンパイラでCentOS7
- Linuxのバイナリフォーマットは、下MariaDBをインストール
- MariaDB / MySQLの設定ファイルmy.cnfファイルの解釈
- MariaDB / MySQLのセキュリティの構成とアカウント管理
- マスターコピーのバックアップ構成からのMySQL / MariaDB
1.環境を準備
オペレーティングシステム:CentOS7.4 64魏
MariaDBのバージョン:10.2.12
ノードのDB1:192.168.11.31
ノードDB2:192.168.11.32
ファイアウォールポリシー(デフォルト3306)にポートを開く必要性を開きます。
2. [設定DB1の設定ファイル(my.cnfファイル)
な/etc/my.cnfにして次のオプションを追加します。
server-id = 1
log-bin=mysql-bin
relay-log = mysql-relay-bin
replicate-wild-ignore-table=mysql.%
replicate-wild-ignore-table=information_schema.%
log-slave-updates=on
slave-skip-errors=all
auto-increment-offset=1 auto-increment-increment=2 binlog_format=mixed expire_logs_days = 10
server-id = 1
サーバ・ノードIDは、一意である必要があります。
log-bin=mysql-bin
mysqlのビンは、ログファイルなどの形式、それは、MySQL-bin.000001という名前のファイルを生成し、mysqlの-bin.000002を命名され、バイナリロギングをオンにします。
relay-log = mysql-relay-bin
ログからリレーサーバとして。
replicate-wild-ignore-table=mysql.%
コピーフィルタリングオプション、次のような、データベーステーブルをコピーまたは同期する必要はありませフィルタリングすることができ、「mysqlの。%は」数行を書くために、MySQLデータベース内のすべてのテーブルをコピーしない指し、というように、複数のデータベース。なお、メインライブラリまたはライブラリから推奨されていないbinlog-do-db
かbinlog-ignore-db
、ライブラリから使用することはありませんreplicate-do-db
か、replicate-do-db
これはクロスデータベース更新の失敗のために問題を引き起こす可能性として、オプション。私たちは、使用することをお勧めしますreplicate-wild-do-table
し、replicate-wild-ignore-table
レプリケーションのろ過の問題のトラブルシューティングを行います。
log-slave-updates=on
スレーブレプリケーションのイベントには、独自のバイナリログに書き込まれます。
slave-skip-errors=all
すべてのエラーまたはマスターコピーから発生したエラーの特定のタイプをスキップし、コピーの中断は、スレーブ側を避けます。
auto-increment-offset=1
インクリメント主キールール増分因子(それぞれプラス2)。
auto-increment-increment=2
インクリメントの主キーのルールは、(最初から)オフセット単数インクリメント。
binlog_format=mixed
マスターコピー形式(混合、声明、行、デフォルトの書式の文)から。
expire_logs_days = 10
10日:保存日数を記録します。
3.設定DB2の設定ファイル(my.cnfファイル)
な/etc/my.cnfにして次のオプションを追加します。
server-id = 2
log-bin=mysql-bin
relay-log = mysql-relay-bin
replicate-wild-ignore-table=mysql.%
replicate-wild-ignore-table=information_schema.%
log-slave-updates=on
slave-skip-errors=all
auto-increment-offset=2 auto-increment-increment=2 binlog_format=mixed expire_logs_days = 10
DB2のmy.cnf設定基本的に同一の、二つの主要なモード間の主な違いは以下のとおりです。
server-id = 2
サーバ・ノードIDは、我々はそのユニークな値を確保しなければならない、とDB1紛争はできません。
auto-increment-offset=2
インクリメントプライマリキーセットのルール、即ち、数を2倍、増分2をオフセット。特異DB1、DB1とDB2は、状況がプライマリキーテーブルが衝突しない保証することができ、パリティIDを繰り返さないように形成されています。
我々MariaDBでDB1とDB2が新たにインストールされているここでは2つのサーバー、余分なテーブル。お使いのデータベースがすでにデータが含まれており、最高の保証は、データの同期の前にDB1とDB2のデータ整合性があることをした場合、最初のデータベースへの書き込みアクセスをオフにしてください。
4.再起動MariaDBサービス
あなたはMariaDBの設定ファイルを設定した後、保存してサービス、コンフィギュレーションを再起動してください。
/etc/init.d/mariadb restart
私はここにいたことに注目してください「の記事によると。
バイナリフォーマットはLinuxでMariaDBをインストールし使用しています
」MariaDBをインストールし、あなたがyumをMariaDBの道をインストールを使用している場合、このコマンドを試すことができます。
systemctl restart mariadb
マスターとしてDB2にライセンス5.DB1
DB1内の端末へのMySQLの:
[root@localhost ~]# /usr/local/mariadb/bin/mysql -uroot -p
IPから123456x、::192.168.11.32(DB2)アクセスDB1、および助成金の許可同期データ・レプリケーション、パスワード、ユーザーはhello32することができます。
MariaDB [(none)]> grant replication slave, replication client on *.* to 'hello32'@'192.168.11.32' identified by '123456x';
mysql> flush privileges;
認証が完了した後、権限テーブルを更新することを忘れないでください。
そして、(ログファイル)の値は、ファイルがすぐに必要とするマシン(DB2)からbinlogの位置(オフセット)とファイルを参照してくださいです。
MariaDB [(none)]> show master status;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000007 | 358 | | | +------------------+----------+--------------+------------------+ 1 row in set (0.01 sec)
DB1にライセンスマスターとして6.DB2
同様に、MySQLの端末DB2を入力し、許可されたユーザのDB1へ:
MariaDB [(none)]> grant replication slave, replication client on *.* to 'hello31'@'192.168.11.31' identified by '123456x';
mysql> flush privileges;
そして、(ログファイル)の値は、ファイルがすぐに必要とするマシン(DBL)からbinlogの位置(オフセット)とファイルを参照してくださいです。
MariaDB [(none)]> show master status;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000013 | 358 | | | +------------------+----------+--------------+------------------+ 1 row in set (0.00 sec)
スレーブDB1の7の設定
ライブラリーから奴隷としてDB1、次のコマンドを使用し、メインのライブラリDB2にアクセスする必要があります。
MariaDB [(none)]> change master to master_host='192.168.11.32',master_user='hello31', master_password='123456x', master_port=3306, master_log_file='mysql-bin.000013', master_log_pos=358, master_connect_retry=30;
ログファイルとオフセット値がDB2に第6のステップであることに注意show master status
する図。master_connect_retry=30
時間を接続しようとしています。
DB2の8スレーブ構成
今、DB2ライブラリーから奴隷として、あなたは、メインのライブラリDB1を接続する必要があります。
MariaDB [(none)]> change master to master_host='192.168.11.31',master_user='hello32', master_password='123456x', master_port=3306, master_log_file='mysql-bin.000007', master_log_pos=358, master_connect_retry=30;
どこオフセット値は、参照するにはステップ5でのログファイルとDB1です。
9.スタートスレーブ
あなたは今、同期レプリケーションを開始することができ、両方のサーバー上でコマンドを使用するには、次のとおりです。
MariaDB [(none)]> start slave;
Query OK, 0 rows affected (0.00 sec)
DB1上で実行:
MariaDB [(none)]> show slave status\G;
*************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: 192.168.11.32 Master_User: hello31 Master_Port: 3306 Connect_Retry: 30 Master_Log_File: mysql-bin.000013 Read_Master_Log_Pos: 358 Relay_Log_File: mysql-relay-bin.000002 Relay_Log_Pos: 555 Relay_Master_Log_File: mysql-bin.000013 Slave_IO_Running: Yes Slave_SQL_Running: Yes Replicate_Do_DB: Replicate_Ignore_DB: Replicate_Do_Table: Replicate_Ignore_Table: Replicate_Wild_Do_Table: Replicate_Wild_Ignore_Table: mysql.%,information_schema.%
DB2上で実行:
MariaDB [(none)]> show slave status\G;
*************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: 192.168.11.31 Master_User: hello32 Master_Port: 3306 Connect_Retry: 30 Master_Log_File: mysql-bin.000007 Read_Master_Log_Pos: 358 Relay_Log_File: mysql-relay-bin.000002 Relay_Log_Pos: 555 Relay_Master_Log_File: mysql-bin.000007 Slave_IO_Running: Yes Slave_SQL_Running: Yes Replicate_Do_DB: Replicate_Ignore_DB: Replicate_Do_Table: Replicate_Ignore_Table: Replicate_Wild_Do_Table: Replicate_Wild_Ignore_Table: mysql.%,information_schema.%
我々は両方のサーバでのデータ同期情報を参照Slave_IO_Running
してSlave_SQL_Running
、我々は成功を構成していること、はいです!
10.を確認します
私たちは、DB1に新しいデータベースを作成します。myhellowebaは、その後、myhellowebaライブラリに新しいテーブルアーティクルを作成したデータテーブルと、その後さらに記事を挿入します。
MariaDB [(none)]> create database if not exists myhelloweba default character set utf8 collate utf8_general_ci;
MariaDB [(none)]> use myhelloweba;
Database changed MariaDB [myhelloweba]> insert into article (id,title) values (null, 'Helloweba'); Query OK, 1 row affected (0.01 sec) MariaDB [myhelloweba]> insert into article (id,title) values (null, 'Helloweba'); Query OK, 1 row affected (0.01 sec)
私たちは、DB2にテーブル内のデータを表示します。
MariaDB [myhelloweba]> select * from article;
+----+-----------+
| id | title |
+----+-----------+
| 1 | Helloweba |
+----+-----------+
1 row in set (0.00 sec)
また、記事で見つかったDB2データテーブル。操作を数回繰り返して、二人は私たちの主のマスター構成が成功したことを示す、データベース内にまったく同じデータを見て。
概要
フォローするためにこれらの10回のステップでテキストをオンにしてください、そこに多くのオンライン導入の主マスター構成されているが、すべてのほとんどは、より多くの混乱を書くために、物事に自分自身を見ることになります。高可用性の主な記事は、メインプログラムを記述し、ので、しばらくお待ち後ろに加えて、そこになります。