コンセプト MMM (Mysql のマスター マスター レプリケーション マネージャー) は、Perl ベースの柔軟なスクリプト プログラムであり、MySQL レプリケーションの監視とフェイルオーバー、および MySQL マスター マスター レプリケーションの構成の管理に使用されます (同時に書き込み可能なノードは 1 つだけです)。 MMM 高可用性アーキテクチャの説明
MMMの利点と欠点 利点: 高可用性、優れたスケーラビリティ、障害発生時の自動切り替え、マスター間同期では、データの一貫性を確保するために同時に 1 つのデータベース書き込み操作のみが提供されます。 実験環境の展開 ステップ1: 4つのサーバーすべてにMySQLデータベースをインストールする 1. ALIクラウドソースを設定し、epel-releaseソースをインストールします。 [root@localhost ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo [root@localhost ~]# yum -y インストール epel-release [root@localhost ~]# yum clean all && yum makecache 2. ローカルのyumソースを構築する #データベースをインストールします [root@localhost ~]# yum -y install mariadb-server mariadb #ファイアウォールとセキュリティ機能をオフにする [root@localhost ~]# systemctl stop firewalld.service [root@localhost ~]# setenforce 0 #データベースを開く [root@localhost ~]# systemctl start mariadb.service 3. mlメイン設定ファイルを変更する [root@localhost ~]# vim /etc/my.cnf #最初の9行を削除し、次の内容を追加します [mysqld] log_error=/var/lib/mysql/mysql.err #エラーファイルの場所 loglog=/var/lib/mysql/mysql_log.log #アクセスログファイルの場所 log_slow_queries=/var/lib/mysql_slow_queris.log #man ログのファイルの場所 binlog-ignore-db=mysql,information_schema #mysql、information_schema はバイナリログファイルを生成しませんcharacter_set_server=utf8 #文字セットlog_bin=mysql_bin #バイナリログファイル機能が有効server_id=1 #ホスト ID が異なると異なりますlog_slave_updates=true #認証同期sync_binlog=1 #バイナリログファイル機能が有効auto_increment_increment=2 #自動増分auto_increment_offset=1 #開始値[root@localhost ~]# systemctl restart mariadb.service [root@localhost ~]# netstat -natp | grep 3306 4. 構成ファイルを他の3つのデータベースサーバーにコピーし、server_idを変更することに注意してください。 [root@localhost ~]# scp /etc/my.cnf [email protected]:etc/ 5. データベースにアクセスし、ログファイル情報を表示します。 [root@localhost ~]# mysql #ログファイル名と位置の値を表示します。MariaDB [(none)]> show master status; +------------------+----------+--------------+---------------------------+ | ファイル | 位置 | Binlog_Do_DB | Binlog_Ignore_DB | +------------------+----------+--------------+---------------------------+ | mysql_bin.000001 | 245| | mysql、情報スキーマ | +------------------+----------+--------------+---------------------------+ セット内の 1 行 (0.00 秒) 6. m1とm2に相互にアクセス権限を与え、同期ログを承認する #m1 と m2 で相互にアクセス権限を付与しますMariaDB [(なし)]> grant replication slave on *.* to 'replication'@'192.168.142.%' identified by '123456'; # m1MariaDB 上の m2 のログファイル名と位置パラメータを指定します [(なし)]> マスターを master_host='192.168.142.134'、master_user='replication'、master_password='123456'、master_log_file='mysql_bin.000001'、master_log_pos=245 に変更します。 # m2MariaDB 上の m1 のログファイル名と位置パラメータを指定します [(なし)]> マスターを master_host='192.168.142.131'、master_user='replication'、master_password='123456'、master_log_file='mysql_bin.000001'、master_log_pos=245 に変更します。 7. m1で同期を有効にする MariaDB [(なし)]> スレーブを起動します。 8. 同期ステータスを確認します。両方のマスターサーバーに「はい」と表示されます。 MariaDB [(なし)]> スレーブステータスを表示します\G; スレーブIO実行中: はい スレーブSQL実行中: はい 9. m1にデータベースを作成する MariaDB [(なし)]> データベース school を作成します。 10. m2で同期されたデータベースを表示する MariaDB [(なし)]> データベースを表示します。 +--------------------+ | データベース | +--------------------+ | 情報スキーマ | |mysql | | パフォーマンススキーマ | | 学校 | | テスト | +--------------------+ セット内の行数は 5 です (0.00 秒) 11. 両方のスレーブでこれを実行します - ログ ファイルと位置パラメータの変更に注意してください (両方とも m1 を指します) MariaDB [(なし)]> マスターを master_host='192.168.142.131'、master_user='replication'、master_password='123456'、master_log_file='mysql_bin.000001'、master_log_pos=245 に変更します。 12. 同期を有効にする MariaDB [(なし)]> スレーブを起動します。 #スレーブ サーバー MariaDB の同期データ情報を表示します [(none)]> show databases; +--------------------+ | データベース | +--------------------+ | 情報スキーマ | |mysql | | パフォーマンススキーマ | | 学校 | | テスト | +--------------------+ セット内の行数は 5 です (0.00 秒) 13. 4台のサーバーにMMM関連ソフトウェアをインストールする [root@localhost ~]# yum -y install mysql-mmm* 14. mmm_common.conf設定ファイルを設定する [root@localhost ~]# vim /etc/mysql-mmm/mmm_common.conf <ホストのデフォルト> #ネットワークカードをens33に変更する クラスタインターフェイスens33 pid_path /run/mysql-mmm-agent.pid bin_path /usr/libexec/mysql-mmm/ replication_user レプリケーション #認証パスワードの変更 replication_password 123456 エージェントユーザー mmm_agent #エージェント認証パスワードを変更する agent_password 123456 </ホスト> #4つのサーバーの役割とIPアドレスを指定します<host db1> 192.168.142.131 のIPアドレス モードマスター ピア DB2 </ホスト> <ホスト db2> 192.168.142.134 のIPアドレス モードマスター ピア db1 </ホスト> <ホスト db3> 192.168.142.130 のIPアドレス モードスレーブ </ホスト> <ホスト db4> 192.168.142.135 のIPアドレス モードスレーブ </ホスト> #メインサーバーの仮想IPを設定する <ロールライター> ホスト db1、db2 192.168.142.250 のips モード限定 </役割> #スレーブサーバーの仮想IPを設定する <ロールリーダー> ホスト db3、db4 192.168.142.251, 192.168.142.252 のIPアドレス モードバランス </役割> 15. m1から他の3つのサーバーに構成ファイルをコピーします。 [root@localhost ~]# scp mmm_common.conf/mmm_common.conf [email protected]:/etc/mysql-mmm/mmm_common.conf [root@localhost ~]# scp mmm_common.conf/mmm_common.conf [email protected]:/etc/mysql-mmm/mmm_common.conf [root@localhost ~]# scp mmm_common.conf/mmm_common.conf [email protected]:/etc/mysql-mmm/mmm_common.conf ステップ2: 監視サーバーを構成する 1. epel-releaseソースとMMM関連ソフトウェアをインストールする [root@localhost ~]# systemctl stop firewalld.service [root@localhost ~]# setenforce 0 [root@localhost ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo [root@localhost ~]# yum -y インストール epel-release [root@localhost ~]# yum clean all && yum makecache [root@localhost ~]# yum -y install mysql-mmm* 2. m1から監視サーバーに設定ファイルをコピーする [root@localhost ~]# scp mmm_common.conf [email protected]:/etc/mysql-mmm/ 3. mmm_common.conf設定ファイルを設定する [root@localhost ~]# vim /etc/mysql-mmm/mmm_mon.conf <モニター> IPアドレス 127.0.0.1 pid_path /run/mysql-mmm-monitor.pid bin_path /usr/libexec/mysql-mmm ステータスパス /var/lib/mysql-mmm/mmm_mond.status #Ping_ips は 4 つのサーバーの IP アドレス 192.168.142.131、192.168.142.134、192.168.142.130、192.168.142.135 を指します 自動オンライン設定 10 4. すべてのデータベースサーバーで mmm_agent を承認する MariaDB [(なし)]> '123456' で識別される 'mmm_agent'@'192.168.142.%' に、*.* 上のスーパー、レプリケーション クライアント、プロセスを付与します。 クエリは正常、影響を受けた行は 0 行 (0.02 秒) 5. すべてのデータベースサーバーで mmm_moniter を承認する MariaDB [(なし)]> *.* 上のレプリケーション クライアントを、'123456' で識別される 'mmm_monitor'@'192.168.18.%' に許可します。 クエリは正常、影響を受けた行は 0 行 (0.02 秒) 6. データベースを更新し、すべてのデータベースサーバーでプロキシ名を設定します。 [root@localhost ~]# vim /etc/mysql-mmm/mmm_agent.conf #エージェント設定ファイルを変更する #m1 デフォルト名 this db1 #m2 内のこの db2 の名前 #s1 このdb3に名前を付ける #s2 このdb4に名前を付ける 7. すべてのデータベースサーバーでプロキシ機能を有効にし、起動時に自動的に開始するように設定します。 #エージェント機能を起動します [root@localhost ~]# systemctl start mysql-mmm-agent.service #自動起動を設定する [root@localhost ~]# systemctl enable mysql-mmm-agent.service 8. 監視サーバー上で監視サービスを開始し、各ノードのステータスを確認します。 [root@localhost mysql-mmm]# systemctl start mysql-mmm-monitor.service [root@localhost ~]# mmm_control 表示 db1(192.168.142.131) マスター/オンライン。役割: ライター(192.168.142.250) db2(192.168.142.134) マスター/ONLINE。役割: db3(192.168.142.130) スレーブ/オンライン。役割: リーダー(192.168.142.252) db4(192.168.142.135) スレーブ/オンライン。役割: リーダー(192.168.142.251) 9. すべてのサーバーのステータスを確認する [root@localhost ~]# mmm_controlはすべてをチェックします db4 ping [最終更新: 2019/11/25 18:23:03] OK db4 mysql [最終更新: 2019/11/25 18:23:03] OK db4 rep_threads [最終変更: 2019/11/25 18:23:03] OK db4 rep_backlog [最終変更: 2019/11/25 18:23:03] OK: バックログはnullです db2 ping [最終変更: 2019/11/25 18:23:03] OK db2 mysql [最終更新: 2019/11/25 18:59:01] OK db2 rep_threads [最終変更: 2019/11/25 18:59:01] OK db2 rep_backlog [最終変更: 2019/11/25 18:59:01] OK: バックログは null です db3 ping [最終更新: 2019/11/25 18:23:03] OK db3 mysql [最終更新: 2019/11/25 18:59:01] OK db3 rep_threads [最終変更: 2019/11/25 18:59:01] OK db3 rep_backlog [最終変更: 2019/11/25 18:59:01] OK: バックログはnullです db1 ping [最終更新: 2019/11/25 18:23:03] OK db1 mysql [最終変更: 2019/11/25 18:59:01] OK db1 rep_threads [最終変更: 2019/11/25 18:59:01] OK db1 rep_backlog [最終変更: 2019/11/25 18:59:01] OK: バックログはnullです 3番目は故障テスト 1. M1サーバーのダウンタイムをシミュレートし、サービスを停止する [root@localhost ~]# systemctl mariadb.service を停止します 2. m1サーバーがダウンすると、m2は仮想IPを受け取り、サービスの提供を継続します。 [root@localhost ~]# mmm_control 表示 db1(192.168.142.131) マスター/ONLINE。役割: db2(192.168.142.134) マスター/オンライン。役割: ライター(192.168.142.250) db3(192.168.142.130) スレーブ/オンライン。役割: リーダー(192.168.142.252) db4(192.168.142.135) スレーブ/オンライン。役割: リーダー(192.168.142.251) 3. s1サーバーがダウンすると、s2は仮想IPを受け取り、サービスの提供を継続します。 [root@localhost ~]# mmm_control show db1(192.168.142.131) master/ONLINE。ロール: writer(192.168.142.250) db2(192.168.142.134) マスター/ONLINE。役割: db3(192.168.142.130) スレーブ/HARD_OFFLINE。役割: db4(192.168.142.135) スレーブ/オンライン。役割: リーダー(192.168.142.251)、リーダー(192.168.142.252) 4. m1サーバー上の監視サーバーアドレスへのログインを承認する MariaDB [(なし)]> '123456' で識別される 'root'@'192.168.142.136' に *.* のすべての権限を許可します。 クエリは正常、影響を受けた行は 0 行 (0.00 秒) 5. 監視サーバーにデータベースクライアントをインストールする [root@localhost ~]# yum -y mariadbをインストールします 6. 指定されたユーザーを使用して監視サーバー上のデータベースにログインし、データ情報を作成します。 [root@localhost ~]# mysql -u root -p -h 192.168.142.250 パスワードを入力してください: #パスワードを入力#データベースを作成 MariaDB [(なし)]> create database BDQN; クエリは正常、1 行が影響を受けました (0.01 秒) 7. 時間的に同期されたデータ情報はすべてのデータベースで閲覧可能 MariaDB [(なし)]> show databases; #データベースの表示+--------------------+ | データベース | +--------------------+ | 情報スキーマ | | BDQN | #BDQN データベースに同期 | mysql | | パフォーマンススキーマ | | 学校 | | テスト | +--------------------+ セット内の 6 行 (0.00 秒) MMM クラスター アーキテクチャが完成しました。お読みいただきありがとうございました。 以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
目次方法1 1. 構成とインストールの手順:方法2方法3要約する方法1 1. 構成とインストールの手...
目次1. Commonjsのエクスポートとrequireの使用1.1 CommonJS エクスポート...
使用フレキシブル ボックスはフロントエンドの Web ページ レイアウトで重要な役割を果たしますが、...
この記事では、MySQL 8.0.13の手動インストールチュートリアルを参考までに紹介します。具体的...
序文セキュリティ上の理由から、会社が Linux サーバーへのすべてのログインにセキュリティ制限を課...
目次HTML ページの作成js部分の機能を実装する1. 左ボタンと右ボタン2. 小さな円を動的に生成...
序文実際、Linux では、控えめな「!」が驚くほど多くの用途で使用されています。この記事では、「!...
ボタンをクリックしてテキストを入力ボックスに変換し、保存をクリックしてテキスト実装コードに変換します...
1. ベクターマップベクター グラフィックスは直線と曲線を使用してグラフィックスを表します。これらの...
目次概要1. 関数デバウンス2. 機能スロットリング(スロットル)概要関数アンチシェイクと関数スロッ...
MySql インデックスインデックスの利点1. 一意のインデックスまたは主キー インデックスを作成す...
Web ページ エンコーディングは英語では web page encoding と翻訳され、Web ...
概要この記事は、centos7.3 上で mysql5.3.6 を自動的にコンパイルしてインストール...
ハイパーリンクはインターネット全体を接続していると言っても過言ではありません。ハイパーリンクは、別の...
この記事では、ブレッシングカルーセルを実装するためのjQueryの具体的なコードを参考までに共有しま...