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)スレーブ構成 (3)実行同期 マスターを 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 です) (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 は異常を意味します (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 でのみ変更できるため、データベースを再起動する必要があります。 スレーブ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ライブラリをインストールしてください 4. データベースからの安全でないユーザー名とパスワードのプロンプトの問題 デフォルトでは、変更マスターでユーザーとパスワードを指定すると、アカウント情報がマスターに渡されるため、安全ではありません。最新の同期構文では、変更マスターではなく開始スレーブでアカウント情報を指定することが推奨されています。 5. ライブラリからクラッシュの問題が通知される クラッシュの安全性を考慮すると、マスターとリレーログはテーブルに保存する必要があります。テーブルに保存されていない場合は、mysql ログに警告が表示されます。 #マスター情報はテーブルmaster_info_repository = TABLEに保存されます #リレーログ情報はテーブルrelay_log_info_repository = TABLEに保存されます 以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
<<: JavaScript は 9 グリッドのクリックによる色の変更効果を実装します
>>: Docker+Jenkinsを使用して自動的にビルドおよびデプロイする
Ubuntu が今日のデスクトップ ユーザーの間で最も人気のある Linux オペレーティング シス...
カルーセルアニメーションは、ページの外観とインタラクティブなパフォーマンスを向上させることができます...
次のように、Win10 での 2 つの MySQL5.6.35 データベースのインストールを記録しま...
以下の HTML タグには、基本的に既存のタグがすべて含まれています。数分かけて 1 つずつ参照する...
指定されたテーブルからデータをエクスポートするMySQLの詳細な説明必要とする: 1. テーブルはす...
目次序文JavaScript find() メソッドJavaScript filter() メソッド...
CDN(コンテンツ配信ネットワーク)を通じて参照できます。 jQuery は Google と Mi...
jQueryは劇場の座席選択と予約の効果を実現します。参考までに、具体的な内容は次のとおりです。効果...
この記事では、トップに戻るボタンを実装するためのJavaScriptの具体的なコードを参考までに紹介...
pingスキャンをオフにする(役に立たないが)まずルートに切り替えるエコー 1 > /proc...
最近、セキュリティ製品をテストする必要があったため、mariadb の起動ユーザーを root に調...
最近、空港や駅でフライト情報を表示するものと似た大型スクリーンディスプレイのプロジェクトに取り組んで...
序文このプロジェクトには、衛星測位用のグラフィックスを含むチャートの要件があり、北半球または南半球の...
1いくつかの一般的な文字セットMySQL で最も一般的な文字セットには、ASCII 文字セット、ラテ...
MySQL では、REVOKE ステートメントを使用してユーザーの特定の権限を削除できます (ユーザ...