Mysql セミ MHA 高可用性アーキテクチャ設計

2. MHA の概要
1. MHA とは
MHA (Master High Availability) は、現在、MySQL 高可用性のための比較的成熟したソリューションであり、日本の DeNA 企業 (現在は Facebook に所属) である Youshimaton によって開発されました。 MySQL 高可用性環境フェイルオーバーとマスター/スレーブの昇格可用性の高いソフトウェア。MySQL フェイルオーバー プロセス中、MHA はデータベース フェイルオーバー操作を 0 ~ 30 秒以内に自動的に完了できます。また、フェイルオーバー プロセス中、MHA は次のことを行うことができます。より大きな範囲でデータの一貫性を確保して真の高可用性を実現します。
2. MHA の動作原理:
マスターに障害が発生すると、スレーブ間の I/O スレッドがマスター上のバイナリログの位置を読み取り、最も近いスレーブを最新のマスター (最新のスレーブ) として選択します。
他のスレーブは、最新のスレーブと比較して差動リレーログを生成し、適用します。
マスターから保存されたビンログを最新のスレーブに適用し、同時に最新のスレーブを変更しますマスターに昇格
最後に、対応する差分リレーログを他のスレーブに適用し、新しいマスターからレプリケーションを開始します
3. MHA コンポーネント
MHA マネージャー (管理ノード) MHA マネージャーは、独立したマシン上に個別に展開して、複数のスレーブを管理できます。マスタースレーブクラスタ、スレーブ ノードにデプロイすることもできます。
MHA ノード (データ ノード) MHA ノードが動作します各MySQLサーバーMHA マネージャーでは、MHA マネージャーはクラスター内のマスター ノードを定期的に検出し、マスターに障害が発生すると、自動的にデータ スレーブを新しいマスターに昇格させ、他のすべてのスレーブを新しいマスターにリダイレクトします。フェイルオーバー プロセス全体は、アプリケーションに対して完全に透過的です。
4. MHA コンポーネントの紹介:
MHA マネージャーは、
masterha_manager ツール実装などのいくつかのツールを実行します。MySQLマスターを自動的に監視するそして実装マスターフェイルオーバー、他のツールはマスターフェイルオーバー、オンラインマスター転送、接続チェックなどを手動で実装します。1 つのマネージャーで複数のマスター/スレーブ クラスターを管理でき、
MHA ノードは
マスターまたはスレーブに関係なく、MySQL を実行するすべてのサーバーにデプロイされます。主な機能は 3 つあります:
1) バイナリ ログの
保存 障害が発生したマスタにアクセスできる場合、マスタのバイナリ ログがコピーされます
2) 差動リレー ログの適用 スレーブ
から最新データの差動リレー ログを生成し、そして差分ログを適用します。
3) リレーログのクリア
SQL スレッドを停止せずにリレーログを削除します
5. MHA ツールの紹介
(I) Manager ツール
ツール説明masterha_check_ssh は MHA の SSH 設定をチェックしますmasterha_check_repl は MySQL レプリケーションをチェックしますmasterha_manager が MHA を開始します
masterha_check_status は、現在の MHA 実行ステータスを検出します。 masterha_master_monitor は、マスターがダウンしているかどうかを監視します。 masterha_master_switchは、フェイルオーバー (自動または手動) を制御します。 masterha_conf_host は、構成されたサーバー情報 (ii) を追加または削除します
。他のslavefilter_mysqlbinlogに適用して、不要なROLLBACKイベントを削除します(MHAはこのツールを使用しなくなりました) purge_relay_logs リレーログをクリアします(SQLスレッドはブロックされません)
注: ノード ツールは通常、MHA マネージャー スクリプトによってトリガーされ、手動操作は必要ありません。
3. MHA 導入アーキテクチャ
1. 導入計画の
役割 IP ホスト名 サーバー ID 機能 備考 MHA-Manager192.168.198.50mha.itcast.cn—管理ノード MHA-Node (マスター) 192.168.198.60master.itcast.cn10 データノード書き込み MHA -ノード (スレーブ 1) 192.168.198.70slave1.itcast.cn20 データ ノード読み取り MHA-ノード (スレーブ 2) 192.168.198.80slave2.itcast.cn30 データ ノード読み取り
2、システムおよびソフトウェア バージョン
システム バージョン MySQL バージョン MHA バージョン CentOS 7.6MySQL-5.7 .31mha4mysql-manager-0.57 mha4mysql-node-0.57
3. システム環境の初期化
ステップ 1: マシンのクローンを作成し、最初に MASTER を起動し、次に SLAVE1、SLAVE2、および MHA を同時に起動します
ステップ 2: コンピュータのホスト名を変更します

# hostnamectl set-hostname master.itcast.cn
# su
​
# hostnamectl set-hostname slave1.itcast.cn
# su
​
# hostnamectl set-hostname slave2.itcast.cn
# su
​
# hostnamectl set-hostname mha.itcast.cn
# su

ステップ 3: IP アドレスを変更し、ホスト名と IP アドレスを /etc/hosts ファイルにバインドします。

# vim /etc/sysconfig/network-scripts/ifcfg-ens33
...
IPADDR=10.1.1.10、IPADDR=10.1.1.20、IPADDR=10.1.1.30、IPADDR=10.1.1.40
...
# systemctl stop NetworkManager
# systemctl disable NetworkManager
# systemctl restart network

MX を使用して 4 台のサーバーに接続し、IP アドレスとホスト名を /etc/hosts ファイルにバインドします。

# vim /etc/hosts
10.1.1.10 master.itcast.cn
10.1.1.20 slave1.itcast.cn
10.1.1.30 slave2.itcast.cn
10.1.1.40 mha.itcast.cn

ステップ 4: ファイアウォールと SELinux をオフにする

# systemctl stop firewalld
# systemctl disable firewalld
# setenforce 0
# sed -i '/SELINUX=enforcing/cSELINUX=disabled' /etc/selinux/config

ステップ 5: YUM ソースの
基本ソースを構成する (省略、Tencent ソースを使用することをお勧めします)
基本的な Tencent ソースを構成した後、yum epel ソースをインストールします

[root@localhost ~]# yum -y install epel-release

epel ソースを構成する

# wget -O /etc/yum.repos.d/epel.repo http://mirrors.cloud.tencent.com/repo/epel-7.repo
# yum clean all
# yum makecache

ローカル自作ウェアハウスのyumソースの設定
① mha-yumソフトウェアパッケージを/soft/mhaディレクトリにアップロード

# mkdir -p /soft/mha

② ローカルの yum ソースを設定します。yum を使用すると、mha-yum ウェアハウス ディレクトリが自動的に検索されます。

# vim /etc/yum.repos.d/local.repo
[mha]
name=mha soft
baseurl=file:///soft/mha/mha-yum
enabled=1
gpgcheck=0

MHA 依存ソフトウェア ライブラリのインストールをテストする

yum -y install perl-DBD-MySQL \
perl-Config-Tiny \
perl-Time-HiRes \
perl-Mail-Sender \
perl-Mail-Sendmail \
perl-MIME-Base32 \
perl-MIME-Charset \
perl-MIME-EncWords \
perl-Params-Classify \
perl-Params-Validate.x86_64 \
perl-Log-Dispatch \
perl-Parallel-ForkManager \
net-tools

ステップ 6: ntpdate 時刻の同期 (非常に重要)

ntpdate 182.92.12.11

4. MySQL マスター/スレーブ レプリケーション環境の
デプロイ データベースのインストール場所: /usr/local/mysql
データベース データ ディレクトリ: /usr/local/mysql/data
ソケット ファイル: /tmp/mysql.sock
ポート設定: 3306
設定ファイルの場所: /usr/local/mysql/my.cnf (MySQL => インストールディレクトリ => /etc ディレクトリ)
☆ MASTER メインサーバー
ステップ 1: ソフトウェアを /root ディレクトリにアップロードする
ステップ 2: スクリプトを使用して MySQL ソフトウェアをインストールする

# vim mysql.sh
#!/bin/bash
yum install libaio -y
tar -xf mysql-5.7.31-linux-glibc2.12-x86_64.tar.gz
mv mysql-5.7.31-linux-glibc2.12-x86_64 /usr/local/mysql
useradd -r -s /sbin/nologin mysql
rm -rf /etc/my.cnf
cd /usr/local/mysql
mkdir mysql-files
chown mysql:mysql mysql-files
chmod 750 mysql-files
bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql &> /root/password.txt
bin/mysql_ssl_rsa_setup --datadir=/usr/local/mysql/data
cp support-files/mysql.server /etc/init.d/mysqld
service mysqld start
echo 'export PATH=$PATH:/usr/local/mysql/bin' >> /etc/profile
source /etc/profile

ソースmysql.sh

ステップ 3: MySQL パスワードを設定する

mysql -p

mysql> set password='123';
mysql> flush privileges;

ステップ 4: 安全な初期化を実行する

mysql_secure_installation

ステップ 5: my.cnf 構成ファイルを MASTER ホストに書き込む

# vim /usr/local/mysql/my.cnf
[mysqld]
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
socket=/tmp/mysql.sock
port=3306
log-error=/usr/local/mysql/data/master.err
log-bin=/usr/local/mysql/data/binlog
server-id=10
character_set_server=utf8mb4
gtid-mode=on
log-slave-updates=1
enforce-gtid-consistency

サービスmysqldの再起動

☆ SLAVE1/SLAVE2 スレーブ サーバー
ステップ 1: MySQL ソフトウェアをサーバーにアップロードします
ステップ 2: スクリプトを使用して MySQL をインストールしますが、初期化は必要ありません

vim mysql.sh

#!/bin/bash
yum install libaio -y
tar -xf mysql-5.7.31-linux-glibc2.12-x86_64.tar.gz
rm -rf /usr/local/mysql
mv mysql-5.7.31-linux-glibc2.12-x86_64 /usr/local/mysql
useradd -r -s /sbin/nologin mysql
rm -rf /etc/my.cnf
cd /usr/local/mysql
mkdir mysql-files
chown mysql:mysql mysql-files
chmod 750 mysql-files
cp support-files/mysql.server /etc/init.d/mysqld
echo 'export PATH=$PATH:/usr/local/mysql/bin' >> /etc/profile
source /etc/profile

ソースmysql.sh

ステップ 3: rsync を使用して、MASTER サーバーのデータ ディレクトリを SLAVE1 および SLAVE2
MASTER に同期します。

# rm -rf /usr/local/mysql/data/auto.cnf
rsync -av /usr/local/mysql/data [email protected]:/usr/local/mysql/

rsync -av /usr/local/mysql/data [email protected]:/usr/local/mysql/

ステップ 4: my.cnf ファイル
SLAVE1 を SLAVE1 および SLAVE2 用に構成します。

vim /usr/local/mysql/my.cnf

[mysqld]
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
socket=/tmp/mysql.sock
port=3306
log-error=/usr/local/mysql/data/slave1.err
log-bin=/usr/local/mysql/data/binlog
relay-log=/usr/local/mysql/data/relaylog
server-id=20
character_set_server=utf8mb4
gtid-mode=on
log-slave-updates=1
enforce-gtid-consistency
skip-slave-start

スレーブ2:

vim /usr/local/mysql/my.cnf

[mysqld]
basedir =/usr/local/mysql
datadir=/usr/local/mysql/data
socket=/tmp/mysql.sock
port=3306
log-error=/usr/local/mysql/data/slave2.err
log-bin=/usr/local/mysql/data/binlog
relay-log=/usr/local/mysql/data/relaylog
server-id=30
character_set_server=utf8mb4
gtid-mode=on
log-slave-updates=1
enforce-gtid-consistency
skip-slave-start

設定が完了したら、MySQL ソフトウェアを起動します。

# service mysqld restart

☆ マスターとスレーブのデータ同期を構成する
ステップ 1: MASTER サーバーでスレーブ同期アカウントを作成する

mysql> create user 'slave'@'10.1.1.%' identified by '123456';
mysql> grant replication slave on *.* to 'slave'@'10.1.1.%';
mysql> flush privileges;

ステップ 2: mha アカウントを作成する (後でマスター/スレーブ同期ステータスの MHA 監視を容易にするため)

mysql> create user 'mha'@'10.1.1.40' identified by '123456';
mysql> grant all privileges on *.* to 'mha'@'10.1.1.40';
mysql> flush privileges;

ステップ 3: SLAVE1 と SLAVE2 でのマスターとスレーブのデータ同期を構成する

mysql> change master to master_host='192.168.198.60',master_port=3306,master_user='slave',master_password='123456',master_auto_position=1;
mysql> start slave;
mysql> show slave status\G

この時点で、1 つのマスターと 2 つのスレーブの全体構成が完了しました。
5. MHA ソフトウェアのインストール
(1) 異なるノードにソフトウェアをインストールする
注: すべてのノードにインストールします。マーノードソフトウェア パッケージ、内マハ管理次に、mha-manager ソフトウェア パッケージをインストールします。

[root@mha ~]# yum –y install mha4mysql-node-0.57-0.el7.noarch.rpm
[root@master ~]# yum –y install mha4mysql-node-0.57-0.el7.noarch.rpm
[root@slave1 ~]# yum -y install mha4mysql-node-0.57-0.el7.noarch.rpm
[root@slave2 ~]# yum –y install mha4mysql-node-0.57-0.el7.n oarch.rpm
[root@mha ~]# yum –y install mha4mysql-manager-0.57-0.el7.noarch.rpm

依存するソフトウェアが事前にインストールされている場合は、rpm -ivh を使用して直接インストールできます
ssh 相互信頼の構成 (パスワードなしのログイン)
注:
運用環境では、サーバーへの root リモート ログインはほぼ禁止されているため、ssh パスワード-free ログインは管理者ユーザーである必要があります。 構成はセキュリティの観点から行われます。
管理者ユーザーは、任意の通常のユーザーにすることができます。
この通常のユーザーは、mysql レプリケーション グループ内のすべてのホストにリモートでアクセスし、他のタスクを完了するために、mha の管理ノードによって使用されます。ステップ 1: すべてのマシン上でパスワードが である通常の
アカウント admin を作成します。 123.

# useradd admin
# echo 123|passwd --stdin admin

ステップ 2: mha ホストを他のホストの管理者ユーザー相互信頼
mha エンドに設定します。

[root@mha ~]# su - admin
[admin@mha ~]$ ssh-keygen -P "" -f ~/.ssh/id_rsa
[admin@mha ~]$ cd .ssh/
[admin@mha .ssh]$ ls
id_rsa  id_rsa.pub
[admin@mha .ssh]$ mv id_rsa.pub authorized_keys
[admin@mha .ssh]$ for i in 10 20 30;do scp -r ../.ssh/ 10.1.1.$i:~/;done

パスワードなしのログインをテストします。

[admin@mha .ssh]$ ssh 10.1.1.10
[admin@mha .ssh]$ ssh 10.1.1.20
[admin@mha .ssh]$ ssh 10.1.1.30

質問: パスワード不要の SSH では公開キーのコピーのみが必要ですが、上記のコードでは .ssh ディレクトリ全体がコピーされます。回答: MHA の相互信頼のため、MHA がパスワードなしで MASTER、SLAVE1、SLAVE2 にアクセスできる必要があるだけでなく、MASTER もパスワードなしで MHA、SLAVE1、SLAVE2 にアクセスできる必要があります... (iii) MASTER ホストで
管理者ユーザーの sudo 権限を構成します。

[root@master ~]# vim /etc/sudoers.d/admin
#User_Alias  表示具有sudo权限的用户列表; Host_Alias表示主机的列表
User_Alias MYSQL_USERS = admin
#Runas_Alias  表示用户以什么身份登录
Runas_Alias MYSQL_RUNAS = root
#Cmnd_Alias  表示允许执行命令的列表(命令需要使用完整路径)
Cmnd_Alias MYSQL_CMNDS = /sbin/ifconfig,/sbin/arping
MYSQL_USERS ALL = (MYSQL_RUNAS) NOPASSWD: MYSQL_CMNDS

この権限を SLAVE1 と SLAVE2 に配布します (障害が発生した場合、スレーブ サーバーは独自の VIP を設定することもできます)

[root@master ~]# for i in 20 30;do scp /etc/sudoers.d/admin 10.1.1.$i:/etc/sudoers.d/;done

管理者ユーザーが VIP をマウントできるかどうかをテストします (VIP は MASTER マシンにのみマウントできます)。

# su - admin
[admin@master ~]$ sudo /sbin/ifconfig ens33:1 10.1.1.100 broadcast 10.1.1.255 netmask 255.255.255.0
[admin@master ~]$ sudo /sbin/arping -fqc 5 -w 5 -I ens33 -s 10.1.1.100 -U 10.1.1.10
[admin@master ~]$ ip a 

補足
:
arping: LAN 内の他のホストに ARP リクエストを送信するために使用されるコマンドで、LAN 内の IP が使用されているかどうかをテストするために使用できます。
-f
: 最初の応答パケットを受信した後に終了します。
-q: 静止モード。出力は表示されません。
-c: 指定した数の ARP REQUEST パケットを送信した後に停止します。-w パラメータを指定すると、タイムアウトになるまで同じ数の ARP REPLY パケットが待機されます。
-w: タイムアウトを秒単位で指定します。期間中に送受信されたパケットの数に関係なく、指定された時間に達すると Arping は終了します。この場合、arping は指定された count (-c) パケットを送信した後も停止しませんが、タイムアウトになるか、送信された count パケットに応答するまで待機してから終了します。
-I: デバイス名、ARP REQUEST パケットの送信に使用されるネットワーク デバイスの名前を指定します。
-D: 重複アドレス検出モード、IP アドレスの競合の有無を検出するために使用され、IP アドレスの競合がない場合は 0 が返されます。
-s: ARP パケットを送信するための IP リソース アドレスを設定します。
-U: 他のホストの ARP CACHE リスト内のローカル情報を更新するための非合理 (強制) ARP モード。応答は必要ありません。
-h: ヘルプページを表示します。
(IV) MHA関連設定ファイルの作成
MHAサーバ:作業ディレクトリの作成

[root@mha ~]# mkdir /etc/mha/
[root@mha ~]# mkdir -p /data/mha/masterha/app1
[root@mha ~]# chown -R admin. /data/mha

mha ローカル構成ファイルを作成します。

[root@mha ~]# vim /etc/mha/app1.conf
[server default]

監視ユーザーとパスワードの設定(変更1)

user=mha
password=123

レプリケーション環境でレプリケーションユーザーとパスワードを設定する(変更2)

repl_user=slave
repl_password=123

sshのログインユーザー名を設定する(変更3)

ssh_user=admin

メイン データベースの監視と ping パケットの送信の間隔を設定します。デフォルトは 3 秒です。3 回試行しても応答がない場合、フェイルオーバーが自動的に実行されます。

ping_interval=3

mgrの作業ディレクトリを設定します

manager_workdir=/data/mha/masterha/app1

MHAがマスターのバイナリログを見つけられるように、mysqlマスターがbinlogを保存するディレクトリを設定します(変更4)

master_binlog_dir=/usr/local/mysql/data

マスターのpidファイルを設定する(修正5)

master_pid_file=/usr/local/mysql/data/master.itcast.cn.pid

切り替えが発生したときに mysql マスターが binlog を保存するディレクトリを設定します (このディレクトリを mysql マスター上に作成します)

remote_workdir=/data/mysql/mha

mgr ログ ファイルを設定します (MHA で問題が発生した場合、主にこのログを参照します)

manager_log=/data/mha/masterha/app1/app1-3306.log

MHA とマスター監視の間に問題がある場合、MHA マネージャーはスレーブ 1 とスレーブ 2 からマスターへのログインを試行します。

secondary_check_script=/usr/bin/masterha_secondary_check -s 192.168.198.70 -s 192.168.198.80 --user=admin --port=22 --master_host=192.168.198.60 --master_port=3306

自動フェイルオーバー時の切り替えスクリプトの設定(障害発生時、VIPをSLAVE1またはSLAVE2に自動マウント)

master_ip_failover_script="/etc/mha/master_ip_failover.sh 192.168.198.100 1"

手動切り替え用の切り替えスクリプトを設定する

#master_ip_online_change_script="/etc/mha/master_ip_online_change.sh 192.168.198.100 1"

障害発生後に障害が発生したホストをシャットダウンするスクリプトを設定する

# shutdown_script="/etc/mha/power_manager"
[server1]
hostname=192.168.198.60
port= 3306
candidate_master=1
[server2]
hostname=192.168.198.70
port= 3306
candidate_master=1
[server3]
hostname=192.168.198.80
port= 3306
candidate_master=1

(5) 該当のスクリプトを/etc/mhaディレクトリにアップロードし、設定情報の変更と認可を行います。

[root@mha ~]# ls /etc/mha/
app1.conf  master_ip_failover.sh

注: スクリプトの内容では、ネットワーク カード名と接続ユーザーを admin に変更する必要があります。

my $vip  = shift;
my $interface = 'ens33';        网卡名(38行)
my $key = shift;
...
sub stop_vip() {
    my $ssh_user = "admin";     用户名(110行)
    print "=======$ssh_stop_vip==================\n";
    `ssh $ssh_user\@$orig_master_host \" $ssh_stop_vip \"`;
}

[
root@mha ~]# chmod +x /etc/mha/master_ip_*
6. SSH 相互信頼と MySQL マスター/スレーブ ステータス
MHA を検出します。

# su - admin

SSH相互信頼の検出

[admin@mha ~]$ masterha_check_ssh --conf=/etc/mha/app1.conf

クラスターのステータスを確認する

[admin@mha ~]$ masterha_check_repl --conf=/etc/mha/app1.conf
7. MHAの状態を確認し、MHAを実行します(監視開始)

MHA:

[admin@mha ~]$ masterha_check_status --conf=/etc/mha/app1.conf
app1 is stopped(2:NOT_RUNNING).


MHA マネージャーの監視を有効にします

[admin@mha ~]$ nohup masterha_manager --conf=/etc/mha/app1.conf --remove_dead_master_conf --ignore_last_failover &

ここでエラーが報告されている場合は、
ログを確認してみてください。なぜエラーログを削除したのかわかりませんが、起動しました。

監視ステータスを再度確認します。

[admin@mha ~]$ masterha_check_status --conf=/etc/mha/app1.conf
app1 (pid:8913) is running(0:PING_OK), master:10.1.1.10



:

  1. 正常な場合は「PING_OK」が表示され、正常でない場合は「NOT_RUNNING」が表示され、MHA 監視が有効になっていないことが示されます。
  2. 管理者ユーザーを使用して監視を開始します。それ以外の場合は、権限の拒否が報告されます。
  3. 監視を手動で停止するコマンド: masterha_stop --conf=/etc/mha/app1.conf
    この時点で、MHA は設定されました。
    4. 自動フェイルオーバー テスト
    1. MASTER サーバーにテスト ツールをインストールします。
[root@master ~]# yum -y install sysbench

2. テストデータを挿入する

マスターサーバー上にテストライブラリテストを作成します。

mysql> create database test charset utf8mb4;
Query OK, 1 row affected (0.17 sec)
​
mysql> grant all on *.* to 'mha'@'localhost' identified by '123'; 
Query OK, 0 rows affected (0.14 sec)
​
mysql> flush privileges;
Query OK, 0 rows affected (0.11 sec)
​
mysql> exit
Bye
​
​
​
[root@master ~]# sysbench /usr/share/sysbench/oltp_read_only.lua \
 --mysql-host=192.168.198.60  --mysql-port=3306  --mysql-user=mha \
 --mysql-password=123456  --mysql-socket=/tmp/mysql.sock \
 --mysql-db=test  --db-driver=mysql  --tables=1 \
 --table-size=100000 --report-interval=10 --threads=128 --time=120 prepare
 
mysql> select count(*) from sbtest1;
+----------+
| count(*) |
+----------+
|   100000 |
+----------+
1 row in set (0.01 sec)

3.
MHA、MASTER、SLA VE1、SLAVE2のスナップショットを取得します
。 4. MASTER サーバーの障害をシミュレートします
。 MHA サーバー: 監視ログ

[root@mgr ~]# tail -f /data/mha/masterha/app1/app1-3306.log

マスターサーバー:

サービスmysqld停止

MHA ログには、次の結果が表示されます:
フェイルオーバー:

VIPドリフト:

FAQ
1. 管理ノード設定ファイルのエラー

[root@mgr ~]# cat /etc/mha/app1.conf
[server default]

監視ユーザーとパスワードを設定します。このユーザーはマスター上に作成されたデータベース管理アカウントであり、すべての権限を持っています。

user=mha
password=123

レプリケーション環境でレプリケーション ユーザーとパスワードを設定します。次の権限が必要であることに注意してください。

#REPLICATION SLAVE和REPLICATION CLIENT
repl_user=slave
repl_password=123

sshのログインユーザー名を設定する

ssh_user=admin
....
[server1]
hostname=10.1.1.10
port= 3306
candidate_master=1
[server2]
hostname=10.1.1.20
port= 3306
candidate_master=1
[server3]
hostname=10.1.1.30
port= 3306
candidate_master=1

注: 必ず正しい IP とポート番号を設定してください。
2. MHA を設定するときのデータ読み取り専用設定

解決策: スレーブをセットアップする

サーバーは読み取り専用です

mysql> set @@global.read_only=1;
クエリ OK、影響を受ける行は 0 (0.00 秒)
mysql
> 'read_only' のような変数を表示;
±--------------±--- ---+
| 変数名 | 値 |
±--------------±------+
| 読み取り専用 | ON |
±------------ --±-----+
セット内の 1 行 (0.00 秒)
3.
コピー ユーザー権限のパスワードが間違っています

理由:
レプリケーション ユーザー スレーブには関連する権限がありません。REPLICATION SLAVE とレプリケーションクライアント
スレーブ サーバー上にレプリケーション ユーザーが作成されません。
4. その他のエラー
MHA クラスターには少なくとも 2 つのスレーブが必要なので、スレーブが 1 つしかない場合、チェックは失敗します。
VIP: 仮想 IP は、
MHA クラスター内のマスター ホストがダウンした後、クライアントがデータベース アドレスを変更する必要がなく、VIP を介してシームレスに切り替えることができるように VIP を構成します。
組み込みの VIP ドリフト スクリプトは、同じネットワーク セグメント上でのみ使用でき、ネットワーク セグメント間では使用できないことに注意してください。ここにコード スニペットを挿入してください。

https://note.youdao.com/s/1GI1m8z4

おすすめ

転載: blog.csdn.net/qq_52183856/article/details/131938239