MYSQL 5.6 スレーブレプリケーションの展開と監視

MYSQL 5.6 スレーブレプリケーションの展開と監視

MYSQL 5.6 スレーブレプリケーションの展開と監視

MYSQL 5.6 のインストールと展開

#1. インストール パッケージ wget をダウンロードします https://download.osichina.net/tools/mysql/mysql-5.6.28.tar.gz   
   
#2. ユーザーを作成し、関連コンポーネントをインストールする useradd mysql   
yum -y インストール autoconf automake cmake gcc-c++ libgcrypt libtool libxml2 ncurses-devel zlib   
   
#3. 解凍してコンパイルし、インストールします (インストール パス: /usr/local/mysql)   
tar -xzvf mysql-5.6.28.tar.gz   
mysql-5.6.28 をインストールします   
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DENABLED_LOCAL_INFILE=1 -DMYSQL_DATADIR=/data/mysql/data -DSYSCONFDIR=/etc -DWITH_PARTITION_STORAGE_ENGINE=1   
作成 && インストール   
   
#4. 環境変数を追加する echo 'export PATH=/usr/local/mysql/bin:$PATH' >> /etc/profile   
   
#5. MYSQL 設定 cat > /etc/my.cnf << EOF   
[mysqld_safe]   
ログエラー=/data/mysql/log/mysql.err   
   
[mysqld]   
データディレクトリ=/data/mysql/data   
tmpdir=/data/mysql/tmp   
ソケット=/var/lib/mysql/mysql.sock   
ユーザー=mysql   
文字セットサーバー=utf8   
デフォルトのストレージエンジン=INNODB   
innodb_buffer_pool_size=1G   
#遅いクエリログ=1   
#slow_query_log_file=/data/mysql/log/mysql.slow   
#長いクエリ時間=60   
サーバーID=10   
ログ bin = /data/mysql/ログ bin/ログ bin   
binlog_format=混合   
有効期限 = 30   
最大接続数=1000   
innodb_data_file_path=ibdata1:12M:自動拡張   
innodb_log_files_in_group=2   
innodb_log_file_size=536870912   
innodb_undo_directory=/data/mysql/data   
innodb_undo_tablespaces=0   
ログスレーブ更新=true   
gtidモード=オン   
強制GTID一貫性=true   
スレーブ並列ワーカー = 2   
小文字テーブル名=1   
マスター情報リポジトリ = テーブル   
リレーログ情報リポジトリ=テーブル   
リレーログリカバリ=1   
リレーログ=リレービン   
複製-do-db=テスト   
複製無視DB=mysql   
   
[クライアント]   
ソケット=/var/lib/mysql/mysql.sock   
終了   
   
#6. 関連ディレクトリとファイルを作成する mdkir -p /data/mysql/data /data/mysql/log /data/mysql/log-bin /data/mysql/tmp /var/lib/mysql   
/data/mysql/log/mysql.err をタッチします   
chown mysql:mysql /data/mysql /var/lib/mysql /usr/local/mysql -R   
   
#7. 設定を初期化する cd /usr/local/mysql   
./scripts/mysql_install_db --user=mysql --datadir=/data/mysql/data   
   
#8. 起動し、サービスとして追加し、セキュリティを設定します cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld   
chmod +x /etc/init.d/mysqld   
chkconfig --add mysqld   
chkconfig mysqld オン   
サービスmysqldを再起動   
   
_s /var/lib/mysql/mysql.sock /tmp/mysql.sock   
mysql_secure_installation #対話型セキュリティ設定

MYSQL マスタースレーブ構成

1. メインデータベースにアカウントを作成する

'password' で識別される 'user'@'%' に *.* のレプリケーション スレーブ権限を付与します。   
権限をフラッシュします。

2. データをバックアップし、スレーブデータベースに復元する

データの一貫性を確保するには、テーブルをロックする必要があります。データ量が比較的少ない場合は、まずテーブルをロックし、次にマスターの POS 位置を記録し、mysqldump を使用してバックアップします。データ量が多い場合は、mydumper または xtrabackup を使用してデータをバックアップできます。ここのデータ量は比較的多いので、バックアップには mydumper を使用します。
#1. mydumper をダウンロードしてインストールします (デフォルトのインストール場所は /usr/local/bin です)   
https://download.osichina.net/tools/mysql/mydumper-0.9.1.tar.gz をダウンロードしてください   
.cmake を実行します。   
作成 && インストール   
   
#2. マルチスレッド バックアップ データを使用する#データの一貫性を確保するために、バックアップはテーブルをロックします。つまり、バックアップ アカウントには再読み込み権限が必要です#-h ホスト-u ユーザー-p パスワード-t スレッド数-c 圧縮を有効にする-B バックアップするデータベース-o バックアップ先 mkdir バックアップ   
CDバックアップ   
nohup /usr/local/bin/mydumper -h xxxx -u ユーザ -p 'パスワード' -t 8 -c -B dbname -o ./ &   
   
#3. データをバックアップしてからインポートする(スレーブライブラリにデータを転送してインポートした後、スレーブライブラリに同じバージョンの mydumper をインストールする必要があります)   
nohup /usr/local/bin/myloader -u ユーザ -p 'パスワード' -t 8 -B dbname -o -d ./backup/ &

3. マスタースレーブ構成

(1)マスター構成

(1) マスター構成# 同期されないデータベース binlog-ignore-db = mysql   
binlog-ignore-db = テスト   
binlog-ignore-db = 情報スキーマ   
   
# 特定のデータベースのみを同期します。他のデータベースは同期されません。binlog-do-db = dbname   
   
# ログ保存期間 expire_logs_days = 10   
   
# binlog の書き込み頻度を制御します。トランザクションは実行されるたびに何回書き込まれる必要がありますか? # このパラメータはパフォーマンスをかなり消費しますが、MySQL クラッシュによる損失を減らすことができます。sync_binlog = 5   
   
# ログ形式、混合が推奨されます   
# ステートメントはSQL文を保存します # 行は影響を受けたレコードデータを保存します # mixedは前の2つを組み合わせたものです binlog_format = mixed   

(2)スレーブ構成
スレーブはインストール時に上記のように構成されます。replicate-do-db と replicate-ignore-db の構成に注意してください。

(3)実行同期
マスターログファイルとPOSについては、mydumperメタデータファイルを参照してください。

マスターを MASTER_HOST='xxxx'、master_port=3306、MASTER_LOG_FILE='mysql-bin.000001'、MASTER_LOG_POS=123454678、MASTER_AUTO_POSITION=0 に変更します。   
スレーブを起動します。ユーザー='user'、パスワード='password';   
スレーブステータスを表示 \G;

MYSQL 遅延監視とアラーム

1. zabbixを使用してMYSQL監視を追加する

(1)Zabbixクライアントのインストールと展開およびホストの追加

zabbixサーバー=192.168.1.2   
rpm -Uvh https://repo.zabbix.com/zabbix/4.4/rhel/7/x86_64/zabbix-release-4.4-1.el7.noarch.rpm   
yum -y zabbixエージェントをインストールします   
sed -i "s/Server=127.0.0.1/Server=${zabbixServer}/g" /etc/zabbix/zabbix_agentd.conf   
sed -i "s/ServerActive=127.0.0.1/ServerActive=${zabbixServer}/g" /etc/zabbix/zabbix_agentd.conf   
sed -i "s/ホスト名=Zabbix サーバー/ホスト名=`ホスト名`/g" /etc/zabbix/zabbix_agentd.conf   
systemctl zabbix-agent を --now で有効にする

zabbix上でホストを追加する方法についてはここでは省略します。 (上記でインストールされた zabbix クライアントのオペレーティング システム バージョンは centos7.6 です)
yum によってインストールされるデフォルトの zabbix 設定ファイル ディレクトリは /etc/zabbix/ であり、デフォルトでは関連する MYSQL 設定ファイル /etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf があります。

(2)zabbix監視権限の追加

'xxxxxxx' で識別される zabbix_monitor@'127.0.0.1' に、*.* に対する USAGE、REPLICATION CLIENT、PROCESS、SHOW DATABASES、SHOW VIEW 権限を付与します。   
'xxxxxxx' で識別される zabbix_monitor@'localhost' に、*.* に対する USAGE、REPLICATION CLIENT、PROCESS、SHOW DATABASES、SHOW VIEW 権限を付与します。   
権限をフラッシュします。

(3)初期化設定(mysql zabbixクライアント上で実行)

mdkir -p /var/lib/zabbix   
cat > /var/lib/zabbix/.my.cnf << EOF   
[クライアント]   
ユーザー=zbx_monitor   
パスワード=xxxxxx   
終了   
chown zabbix:zabbix /var/lib/zabbix -R   
サービスzabbix-agentを再起動   
サービス zabbix-agent ステータス

(4)zabbixウェブクライアントにMYSQLテンプレートを関連付けて監視を完了する

2. zabbixの既存のMYSQLテンプレートを使用してスレーブデータベースの遅延監視を追加する

(1)マスタースレーブ遅延スクリプトを作成する

mkdir -p /etc/zabbix/scripts   
cat > /etc/zabbix/scripts/check_mysql_slave.sh << EOF   
#!/bin/bash   
ユーザー=zabbix_monitor   
   
io_status(){   
  IoStatus=`/usr/local/mysql/bin/mysql -u${USER} -e "show slave status\G;" |grep -i running|sed -n 1p|awk '{print $NF}'`   
  [ $IoStatus == "Yes" ]の場合;   
    IOステータス=1   
  それ以外   
    Ioステータス=0   
  フィ   
  $IoStatusをエコーする   
}   
   
sql_status(){   
  SqlStatus=`/usr/local/mysql/bin/mysql -u${USER} -e "show slave status\G;" |grep -i running|sed -n 2p|awk '{print $NF}'`   
  [ $SqlStatus == "Yes" ]の場合;   
    SQLステータス=1   
  それ以外   
    SQLステータス=0   
  フィ   
  $SqlStatus をエコーする   
}   
   
ラグステータス(){   
  DelayStatus=`/usr/local/mysql/bin/mysql -u${USER} -e "show slave status\G;" |grep "Seconds_Behind_Master"|awk '{print $NF}'`   
  $DelayStatus をエコーする   
}   
   
1ドル   
終了   
chmod +x /etc/zabbix/scripts/check_mysql_slave.sh

(2)デフォルト設定ファイルからアカウント情報を読み取るアカウントとパスワードを直接使用してスクリプト内のコマンドを実行すると、安全でないプロンプトが生成されます。

cat >> /etc/my.cnf << EOF   
[クライアント]   
ユーザー=zabbix_monitor   
パスワード=xxxxx   
ソケット=/var/lib/mysql/mysql.sock   
   
[mysqladmin]   
ホスト=ローカルホスト   
ユーザー=zabbix_monitor   
パスワード=xxxxx   
終了

(3)テストスクリプトは正常ですか?

/etc/zabbix/scripts/check_mysql_slave.sh io_status   
/etc/zabbix/scripts/check_mysql_slave.sh sql_status   
/etc/zabbix/scripts/check_mysql_slave.sh ラグステータス

io_status: 1 は正常、0 は異常を意味します
sql_status: 1 は正常、0 は異常を意味します
lag_status: 遅延時間を示します

(4)ユーザーパラメータ設定の追加(クライアント)

/etc/zabbix/scripts/check_mysql_slave.sh io_status   
/etc/zabbix/scripts/check_mysql_slave.sh sql_status   
/etc/zabbix/scripts/check_mysql_slave.sh ラグステータス

(5)zabbixクライアントを再起動し、サーバー上で確認する

サービスzabbix-agentを再起動   
サービス zabbix-agent ステータス   
zabbix_get -s xxxx -p 10050 -k mysql.slave[io_status]   
zabbix_get -s xxxx -p 10050 -k mysql.slave[sql_status]   
zabbix_get -s xxxx -p 10050 -k mysql.slave[lag_status]

(6)Zabbix Web上でオリジナルのMYSQLテンプレートを複製した後、監視項目、トリガー、グラフィックを追加します。








(7)ホストに新しいMYSQLスレーブ監視テンプレートを関連付ける

追加の知識ポイント

1. replicate-do-dbの制御

MySQL 5.5/5.6 では、レプリケーション フィルタ パラメータは my.cnf でのみ変更できるため、データベースを再起動する必要があります。
最新バージョン 5.7 では、サーバーを再起動せずに次の 3 つの手順を実行できます。

スレーブSQL_THREADを停止します。   
レプリケーション フィルターの変更 REPLICATE_DO_DB = (dbname),REPLICATE_IGNORE_DB = (mysql);   
スレーブSQL_THREADを開始します。

2. 変更マスターに関連する問題

データベース全体をコピーする場合は、pos ファイルと pos 位置を指定する必要はありません。

マスターを MASTER_HOST='xxxx'、master_port=3306、MASTER_AUTO_POSITION=1 に変更します。   
スレーブを起動します。ユーザー='user'、パスワード='password';

データベースの一部をコピーしている場合、またはマスター上の POS 位置が見つからない場合。手動で位置を指定してください

3. mydumperのインストールと展開および関連する問題

mydumperのインストール時にglibエラーが発生した場合は、glibライブラリをインストールしてくださいyum install glib2* -y
インストールが完了したら、解凍したファイルを削除し、再度解凍してコンパイルしてインストールしてください。

4. データベースからの安全でないユーザー名とパスワードのプロンプトの問題

デフォルトでは、変更マスターでユーザーとパスワードを指定すると、アカウント情報がマスターに渡されるため、安全ではありません。最新の同期構文では、変更マスターではなく開始スレーブでアカウント情報を指定することが推奨されています。

5. ライブラリからクラッシュの問題が通知される

クラッシュの安全性を考慮すると、マスターとリレーログはテーブルに保存する必要があります。テーブルに保存されていない場合は、mysql ログに警告が表示されます。

#マスター情報はテーブルmaster_info_repository = TABLEに保存されます   
#リレーログ情報はテーブルrelay_log_info_repository = TABLEに保存されます

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • MySQL遅延スレーブを導入するメリットのまとめ
  • MySQL マスターライブラリ binlog (master-log) とスレーブライブラリ relay-log 間のコードの詳細な説明
  • MySQLサービスを停止せずにスレーブを追加する2つの方法
  • MySQL のスレーブ データベースの遅延のトラブルシューティングに関するケース スタディ
  • MySQLスレーブcom_insertに変更がない理由のステップバイステップの分析
  • シェルはmysqld_multiを使用して、複数のインスタンスのスレーブライブラリスクリプトを自動的に作成します。
  • MySQL マスター スレーブ データベースが同期していない問題の解決策
  • MYSQL マスターとスレーブの同期外れの問題に対する解決策

<<:  JavaScript は 9 グリッドのクリックによる色の変更効果を実装します

>>:  Docker+Jenkinsを使用して自動的にビルドおよびデプロイする

推薦する

VMware10 での CentOS 7 のインストールと設定のチュートリアル

Ubuntu が今日のデスクトップ ユーザーの間で最も人気のある Linux オペレーティング シス...

JS は複数のタブを切り替えるカルーセルを実装します

カルーセルアニメーションは、ページの外観とインタラクティブなパフォーマンスを向上させることができます...

Windows10にMySQL5.6.35データベースを2つインストールする

次のように、Win10 での 2 つの MySQL5.6.35 データベースのインストールを記録しま...

純粋な HTML タグにどれくらい精通していますか?

以下の HTML タグには、基本的に既存のタグがすべて含まれています。数分かけて 1 つずつ参照する...

MySQLの指定されたテーブルからデータをエクスポートする例の詳細な説明

指定されたテーブルからデータをエクスポートするMySQLの詳細な説明必要とする: 1. テーブルはす...

JavaScript の find() メソッドと filter() メソッドの違いのまとめ

目次序文JavaScript find() メソッドJavaScript filter() メソッド...

WebページでjQueryを参照する方法

CDN(コンテンツ配信ネットワーク)を通じて参照できます。 jQuery は Google と Mi...

jQueryで劇場の座席選択と予約の効果を実現

jQueryは劇場の座席選択と予約の効果を実現します。参考までに、具体的な内容は次のとおりです。効果...

トップに戻るボタンの例の JavaScript 実装

この記事では、トップに戻るボタンを実装するためのJavaScriptの具体的なコードを参考までに紹介...

Centos7サーバーの基本的なセキュリティ設定手順

pingスキャンをオフにする(役に立たないが)まずルートに切り替えるエコー 1 > /proc...

Linux 上の MariaDB は root ユーザーで起動します (推奨)

最近、セキュリティ製品をテストする必要があったため、mariadb の起動ユーザーを root に調...

MySQLの指定順序ソートクエリについての簡単な説明

最近、空港や駅でフライト情報を表示するものと似た大型スクリーンディスプレイのプロジェクトに取り組んで...

CSS 極座標のサンプルコード

序文このプロジェクトには、衛星測位用のグラフィックスを含むチャートの要件があり、北半球または南半球の...

MySQLの文字セットと検証ルールの詳細な説明

1いくつかの一般的な文字セットMySQL で最も一般的な文字セットには、ASCII 文字セット、ラテ...

MySQL REVOKE でユーザー権限を削除する

MySQL では、REVOKE ステートメントを使用してユーザーの特定の権限を削除できます (ユーザ...