実戦Mariadb galera Clusterアーキテクチャ


Mariadb galera Clusterインストール:オペレーティングシステム:Centos 7.4バージョンクラスタ数:3ノードホスト情報:192.168.153.142 node 1 selinux=disabled firewalldクローズ192.168.153.143 node 2 selinux=disabled firewalldクローズ192.168.153.144 node 3 selinux=disabled firewalldクローズ構築手順1.ホスト間の相互解析:3つのノードはvim/etc/hosts 192を実行する.168.153.142 node1192.168.153.143 node2192.168.153.144 node32.パッケージをインストールする第1の方法:(yum install-y MariaDB-server MariaDB-client galera)yumインストールソースの構成とmariadb galeraインストールソースの構成yumソースの構成保留iso mariadbのyumソースの設定とインストール(すべてのノードが必要)yumソースファイルvi/etc/yumを変更する.repos.d/mariadb.repo
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.3.5/centos74-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
enabled=0
  galera            :boost-program-options.x86_64 (  yum     )
     :(rpm   )         
     rpm :  galera-25.3.23-1.rhel7.el7.centos.x86_64.rpm
                    MariaDB-10.3.5-centos74-x86_64-client.rpm
                    MariaDB-10.3.5-centos74-x86_64-compat.rpm
                    MariaDB-10.3.5-centos74-x86_64-common.rpm
                    MariaDB-10.3.5-centos74-x86_64-server.rpm
rpm -ivh MariaDB-10.3.5-centos74-x86_64-compat.rpm --nodeps
rpm -ivh MariaDB-10.3.5-centos74-x86_64-common.rpm 
rpm -ivh MariaDB-10.3.5-centos74-x86_64-client.rpm
yum install -y boost-program-options.x86_64 (    galera    )
rpm -ivh galera-25.3.23-1.rhel7.el7.centos.x86_64.rpm
rpm -ivh MariaDB-10.3.5-centos74-x86_64-server.rpm

3.mariadb初期化(3つのノードで実行する必要がある)インストールが完了すると、mariadbの初期化(パスワード設定)systemctl start mariadbmysql_secure_installation(プロンプトでmysqlパスワードを設定)systemctl stop mariadb 4.galeraマスターノードプロファイルserverを構成する.cnfvim/etc/my.cnf.d/server.cnf[galera]wsrep_on=ON wsrep_provider=/usr/lib64/galera/libgalera_smm.sowsrep_cluster_address="gcomm://192.168.153.142,192.168.153.143,192.168.153.144「wsrep_node_name=node 1 wsrep_node_address=192.168.153.14242binlog_format=rowdefault_storage_engine=InnoDbiinnodb_autoinc_lock_mode=2 wsrep_slave_threads=1 innodb_flush_log_at_trx_trx_commit=0 innodb_buffer_pool_size=120 Mwsrep_sst_method=rsyncwsrep_caus_caus_real_rereal=dsONこのファイルをdsoncwsrep_causal_real_real_rererererererereremariadb-2、mariadb-3、wsrep_node_nameとwsrep_node_addressを対応するノードのhostnameとipに変更します.5.クラスタサービスの開始:MariaDB Galera Clusterサービスの開始:[root@node1 ~]#/bin/galera_new_clusterの残りの2つのノードの起動方法は次のとおりです:[root@node1~]#systemctl start mariadbクラスタステータスを表示する:(クラスタサービスは4567および3306ポートを使用)[root@node1 ~]# netstat -tulpn | grep -e 4567 -e 3306tcp 0 0 0.0.0.0:4567 0.0.0.0: LISTEN 3557/mysqld tcp6 0 0:::3306::: LISTEN 3557/mysqld6.クラスタステータスの検証:node 1で実行:[root@node1~]#mysql-uroot-p##データベースにアクセスしてgaleraプラグイン接続mariadbを有効にするかどうかを確認し、galeraプラグインMariaDB[(none)]>show status like「wsrep_ready」を有効にするかどうかを確認します.Variable_name | Value |+---------------+-------+| wsrep_ready|ON|+---------------------+----+1 row in set(0.004 sec)現在クラスタマシン数MariaDB[(none)]>show status like"wsrep_cluster_size";+--------------------------------------------------+|Variable_name | Value |+--------------------+-------+| wsrep_cluster_size|3|+------------------------------------------++1 row in set(0.001 sec)クラスタ状態MariaDB[(none)]>show status like「wsrep%」+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+|Variable_name | Value |+------------------------------+----------------------------------------------------------------+| wsrep_apply_oooe | 0.000000 || wsrep_apply_oool | 0.000000 || wsrep_apply_window | 1.000000 || wsrep_causal_reads | 14 || wsrep_cert_deps_distance | 1.200000 || wsrep_cert_index_size | 3 || wsrep_cert_interval | 0.000000 || wsrep_cluster_conf_id | 22 || wsrep_cluster_size|3|##クラスタメンバー|wsrep_cluster_state_uuid|b 8 ecf 355-233 a-11 e 8-825 e-bb 38179 b 0 eb 4|#UUIDクラスタ一意フラグ|wsrep_cluster_status|Primary|##プライマリサーバ|wsrep_commit_oooe | 0.000000 | | wsrep_commit_oool | 0.000000 || wsrep_commit_window | 1.000000 || wsrep_接続|ON|##現在接続中かどうか|wsrep_desync_count | 0 || wsrep_evs_delayed | || wsrep_evs_evict_list | || wsrep_evs_repl_latency | 0/0/0/0/0 || wsrep_evs_state | OPERATIONAL || wsrep_flow_control_paused | 0.000000 || wsrep_flow_control_paused_ns | 0 || wsrep_flow_control_recv | 0 || wsrep_flow_control_sent | 0 || wsrep_gcomm_uuid | 0eba3aff-2341-11e8-b45a-f277db2349d5 || wsrep_incoming_addresses|192.168.153.142:3306192.168.153.143:3306192.168.153.144:3306|##接続中のデータベース|wsrep_last_committed|9|##sql提出記録|wsrep_local_bf_aborts|0|##トランザクション実行プロセスからローカルに中断|wsrep_local_cached_downto | 5 || wsrep_local_cert_failures|0|##ローカル失敗トランザクション|wsrep_local_commits|4|##ローカルで実行されるsql|wsrep_local_index | 0 || wsrep_local_recv_queue | 0 || wsrep_local_recv_queue_avg | 0.057143 || wsrep_local_recv_queue_max | 2 || wsrep_local_recv_queue_min | 0 || wsrep_local_replays | 0 || wsrep_local_send_Queue|0|##ローカル発行キュー|wsrep_local_send_queue_AVg|0.000000|##キュー平均時間間隔|wsrep_local_send_queue_max | 1 || wsrep_local_send_queue_min | 0 || wsrep_local_state | 4 || wsrep_local_state_comment | Synced || wsrep_local_state_uuid|b 8 ecf 355-233 a-11 e 8-825 e-bb 38179 b 0 eb 4|##クラスタID|wsrep_protocol_version | 8 || wsrep_provider_name | Galera || wsrep_provider_vendor | Codership Oy || wsrep_provider_version | 25.3.23(r3789) || wsrep_ready|ON|##プラグインが適用されているかどうか|wsrep_received|35|##データコピー受信回数|wsrep_received_bytes | 5050 || wsrep_repl_data_bytes | 1022 || wsrep_repl_keys | 14 || wsrep_repl_keys_bytes | 232 || wsrep_repl_other_bytes | 0 || wsrep_Replicated|5|##コピー発行回数|wsrep_replicated_bytes|1600|##データコピー発行バイト数|wsrep_thread_count|2|+-----------------------------------------------------------------------------------------------------------------------++58 rows in set(0.003 sec)接続されたホストMariaDB[(none)]>show status like「wsrep_incoming_addresses」;+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------Variable_name | Value |+--------------------------+----------------------------------------------------------------+| wsrep_incoming_addresses | 192.168.153.142:3306,192.168.153.143:3306,192.168.153.144:3306 |+--------------------------+----------------------------------------------------------------+1 row in set (0.002 sec)7.クラスタmariadデータがMariaDB[(none)]>create database lizkに同期しているかどうかをテストします.Query OK, 1 row affected (0.010 sec)
MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| china              |
| hello              |
| hi                 |
| information_schema |
| lizk               |
| mysql              |
| performance_schema |
| test               |
+--------------------+
8 rows in set (0.001 sec)
            lizk     。

8.脳クラックをシミュレートした後の処理は、ネットワークジッタがパケットを失った場合、2つのノードが結合を失って脳クラックを引き起こすことをシミュレートする.192.168.153.143および192.168.153.144の2つのノードでそれぞれ実行される:iptables-A INPUT-p tcp--sport 4567-j DROPiptables-A INPUT-p tcp--dport 4567-j DROP以上のコマンドwsrepフルシンクロレプリケーション4567ポート通信を禁止するために使用される192.168.153.142ノードで表示される:MariaDB[(none)]>show status like"ws%";;+------------------------------+--------------------------------------------+| Variable_name | Value |+------------------------------+--------------------------------------------+| wsrep_apply_oooe | 0.000000 || wsrep_apply_oool | 0.000000 || wsrep_apply_window | 1.000000 || wsrep_causal_reads | 16 || wsrep_cert_deps_distance | 1.125000 || wsrep_cert_index_size | 3 || wsrep_cert_interval | 0.000000 || wsrep_cluster_conf_id | 18446744073709551615 || wsrep_cluster_size | 1 || wsrep_cluster_state_uuid | b8ecf355-233a-11e8-825e-bb38179b0eb4 || wsrep_cluster_status|non-Primary|では脳裂が発生し、クラスタはコマンドを実行できません.この問題を解決するためにset global wsrep_を実行することができます.provider_options="pc.bootstrap=true";この命令によって脳裂が発生したノードを強制的に回復させる.検証:MariaDB[(none)]>set global wsrep_provider_options="pc.bootstrap=true";Query OK, 0 rows affected (0.015 sec)
MariaDB [(none)]> select @@wsrep_node_name;
+-------------------+
| @@wsrep_node_name |
+-------------------+
| node1             |
+-------------------+
1 row in set (0.478 sec)
       192.168.153.143 192.168.153.144    ,      iptables   (         ,               ):
[root@node3 mysql]# iptables -F
       :
MariaDB [(none)]> show status like "wsrep_cluster_size";
+--------------------+-------+
| Variable_name      | Value |
+--------------------+-------+
| wsrep_cluster_size | 3     |
+--------------------+-------+
1 row in set (0.001 sec)

9.故障のため、クラスタの2つのノードに対してダウンタイム検査を行い、サービスを再起動した後、データを同期できるかどうか.192.168.153.143および192.168.153.144に対してmariadbを停止する操作を実行する:[root@node2mysql]#systemctl stop mariadb 192.168.153.142ノードにデータを挿入:MariaDB[test]>select*from test 1;-------+|id|+-------+|2|1|3|+-------++4 rows in set(0.007 sec)クラスタ内の他の2つのノードを再起動し、データの整合性を確認します.プライマリノードのデータと同じです.10.異常処理:機械室が突然停電した場合、すべてのgaleraホストが正常に電源を切っていないため、着信後に電源を入れると、galeraクラスタサービスが正常に起動できない.どのように処理しますか?ステップ1:galeraクラスタのクラスタホストのmariadbサービスを開始します.ステップ2:galeraクラスタのメンバーホストのmariadbサービスを開始します.例外処理:galeraクラスタのクラスタホストとメンバーホストのmysqlサービスが起動できません.どのように処理しますか?解決方法1:第1歩、garlera群ホストの/var/lib/mysql/grastateを削除する.datステータスファイル/bin/galera_new_clusterはサービスを開始します.正常に起動します.wsrepステータスをログインして表示します.ステップ2:galeraメンバーホストの/var/lib/mysql/grastateを削除します.Dataステータスファイルsystemctl restart mariadbはサービスを再起動します.正常に起動します.wsrepステータスをログインして表示します.解決方法2:第1歩、garlera群ホストの/var/lib/mysql/grastateを修正する.Data状態ファイルの0は1/bin/galera_new_clusterはサービスを開始します.正常に起動します.wsrepステータスをログインして表示します.ステップ2:galeraメンバーホストの/var/lib/mysql/grastateを変更します.Dataステータスファイルの0は、1 systemctl restart mariadbがサービスを再起動します.正常に起動します.wsrepステータスをログインして表示します.