MySQL サーバーをシャットダウンする場合、シャットダウン方法に応じてさまざまな問題が発生する可能性があります。次の手順に従うと、問題の発生を減らすことができます。 1. コピーをやめる特殊な状況下では、スレーブ ノードが間違った位置から開始しようとする場合があります。このリスクを軽減するには、まず io スレッドを停止して、新しいイベント情報が受信されないようにします。 mysql> スレーブ io_thread を停止します。 SQL スレッドがすべてのイベントを適用した後、SQL スレッドも停止します。 mysql>スレーブステータスを表示\G mysql> スレーブ sql_thread を停止します。 こうすることで、io スレッドと sql スレッドの位置が一致し、リレー ログには実行されたイベントのみが含まれ、relay_log_info_repository 内の位置情報も最新のものになります。 マルチスレッド レプリケーションが有効になっているスレーブの場合は、レプリケーションをシャットダウンする前にギャップが埋められていることを確認してください。 mysql> スレーブを停止します。 mysql> start slave until sql_after_mts_gaps; #リレーログにギャップを適用 mysql> show slave status\G #sql_threadが停止していることを確認してください mysql> スレーブを停止します。 2. 長時間実行中のトランザクションをコミット、ロールバック、または強制終了する1 分間に多くのことが起こる可能性があり、シャットダウン時に InnoDB はコミットされていないトランザクションをロールバックする必要があります。トランザクションのロールバックは非常にコストがかかり、長い時間がかかる可能性があります。トランザクションのロールバックはデータ損失を意味する可能性があるため、閉じるときにトランザクションが開いていないことが理想的です。 読み取り/書き込みデータベースが閉じられている場合は、書き込み操作を事前に他のノードにルーティングする必要があります。まだトランザクションを受信しているデータベースをシャットダウンする必要がある場合、次のクエリは 60 秒以上実行されたセッションに関する情報を出力します。この情報に基づいて、次のステップを決定します。 mysql> SELECT trx_id, trx_started, (NOW() - trx_started) trx_duration_seconds, id processlist_id, user, IF(LEFT(HOST, (LOCATE(':', host) - 1)) = '', host, LEFT(HOST, (LOCATE(':', host) - 1))) host, command, time, REPLACE(SUBSTRING(info,1,25),'\n','') info_25 FROM information_schema.innodb_trx JOIN information_schema.processlist ON innodb_trx.trx_mysql_thread_id = processlist.id WHERE (NOW() - trx_started) > 60 ORDER BY trx_started; +--------+----------------------+-----------------------+----------+----------+-------+----------------------------+ | trx_id | trx_started | trx_duration_seconds | processlist_id | ユーザー | ホスト | コマンド | 時間 | info_25 | +--------+----------------------+-----------------------+----------+----------+-------+----------------------------+ | 511239 | 2020-04-22 16:52:23 | 2754 | 3515 | dba | localhost | スリープ | 1101 | NULL | | 511240 | 2020-04-22 16:53:44 | 74 | 3553 | root | localhost | クエリ | 38 | t1 set name="test" を更新 | +--------+----------------------+-----------------------+----------+----------+-------+----------------------------+ セット内の 2 行 (0.00 秒) 3. プロセスリストをクリアするmysql は切断され、シャットダウンしようとしています。手動でmysqlをサポートできます。 アクティブな接続とスリープ状態の接続を表示および終了するには、pt-kill を使用します。現時点では新しい書き込み接続は入ってこないはずです。読み取り接続のみを処理します。 pt-kill --host="localhost" --victims="all" --interval=10 --ignore-user="pmm|orchestrator" --busy-time=1 --idle-time=1 --print [--kill] ここでは、特定のユーザーによって確立された接続を選択的に除外できます。 4. 最大フラッシュを完了するようにInnoDBを構成するグローバル innodb_fast_shutdown=0 を設定します。 グローバル innodb_max_dirty_pages_pct を 0 に設定します。 グローバル innodb_change_buffering='none' を設定します。 innodb_fast_shutdown を無効にすると、UNDO ログが消去され、変更バッファがマージされるまで待機する必要があるため、シャットダウン プロセスに数分または数時間かかる場合があります。 シャットダウンを高速化するには、innodb_max_dirty_pages_pct=0 を設定し、次のクエリの結果を監視します。期待値は 0 ですが、MySQL にアクティビティがある場合、これが常に保証されるわけではありません。その後、結果が小さくなり続けない場合は、次の手順に進むことができます。 '%dirty%' のようなグローバル ステータスを表示します。 pmm モニタリングを使用すると、「innodb 変更バッファ」の図を表示できます。 5. バッファプールの内容をダンプするグローバル innodb_buffer_pool_dump_pct=75 を設定します。 グローバル innodb_buffer_pool_dump_now を ON に設定します。 mysql> 'Innodb_buffer_pool_dump_status' のようなステータスを表示します。 +--------------------------------+--------------------------------------------------+ | 変数名 | 値 | +--------------------------------+--------------------------------------------------+ | Innodb_buffer_pool_dump_status | バッファー プールのダンプが 200429 14:04:47 に完了しました | +--------------------------------+--------------------------------------------------+ セット内の1行(0.01秒) 起動時にダンプされたコンテンツをロードするには、パラメータ innodb_buffer_pool_load_at_startup の設定を確認します。 6. ブラシログログをフラッシュします。 これで、mysql をシャットダウンできます。 ほとんどの場合、停止コマンドを実行するだけで、MySQL がシャットダウンして再起動するのは正常です。時々問題が起こります。 以上がMySQLを安全にシャットダウンする方法の詳細です。MySQLを安全にシャットダウンする方法の詳細については、123WORDPRESS.COMの他の関連記事に注目してください。 以下もご興味があるかもしれません:
|
<<: Dockerはプロセス操作を管理するためにSupervisorを使用する
>>: ネイティブJSでマウススライドによる愛の拡散効果を実現
目次序文VirtualDOM とは何ですか? VirtualDOMを使用する理由DOMレンダリングペ...
この記事では、簡単なポップアップウィンドウ効果を実現するためのjQueryの具体的なコードを参考まで...
この記事では、MySQL 8.0.16 winx64のインストールと設定の具体的な方法を記載します。...
目次1. letキーワード1.1 基本的な使い方1.2 変動昇進はない1.3 一時的なデッドゾーン1...
目次vuex 永続性要約するvuex 永続性vuex: ブラウザを更新すると、vuexの状態は初期状...
目次序文解決ツールの紹介仕組み使用制限使用上の注意使用例いくつかのパラメータの説明出力例Tencen...
目次1. はじめに1. インデックスとは何ですか? 2. インデックスはなぜ必要なのでしょうか? 2...
1. 前提条件1. プロジェクトが展開されました2. Dockerはすでにインストールされている2...
目次導入説明書実際の経験まとめ導入MySQL は最も人気のあるオープンソース データベースとして、さ...
最近、製品部門のユーザーエクスペリエンスチームの学生は、アライアンス環境における広告に関する一連の研...
vue スキャフォールディング -> vue.cli大規模で完全に機能する Vue プロジェク...
目次序文文章1. stylelintをインストールする2. 設定ファイル3. stylelintを使...
1つ。 wget https://dev.mysql.com/get/mysql57-communi...
私たちが構築しようとしていたウェブサイトには、長い文章だけでなく、多数の表も含まれており、表のレイア...
前面に書かれた今日のインターネット分野では、Nginx は最も広く使用されているプロキシ サーバーの...