mysqlreplicate を使って MySQL マスタースレーブを素早く構築する方法

mysqlreplicate を使って MySQL マスタースレーブを素早く構築する方法

導入

mysql-utilities ツールセットは、DBA のツールボックスとも言えるさまざまなツールのコレクションです。この記事では、mysqlreplicate ツールを使用して MySQL マスター/スレーブ環境を迅速に構築する方法を紹介します。

HE1:192.168.1.248 スレーブ

HE3:192.168.1.250 マスター

実際の戦闘

パート1: mysql-utilitiesをインストールする

[root@HE1 ~]# tar xvf mysql-utilities-1.5.4.tar.gz

[root@HE1 ~]# cd mysql-utilities-1.5.4

[root@HE1 mysql-utilities-1.5.4]# python setup.py ビルド

[root@HE1 mysql-utilities-1.5.4]# python setup.py をインストール

パート2: 基本的な使い方

[root@HE1 ~]# mysqlreplicate --help
MySQL ユーティリティ mysqlreplicate バージョン 1.5.4 
ライセンスタイプ: GPLv2
使用方法: mysqlreplicate --master=root@localhost:3306 --slave=root@localhost:3310 --rpl-user=rpl:passwd 
mysqlreplicate - マスターとのレプリケーションを確立する
オプション:
 --version プログラムのバージョン番号を表示して終了する
 --help ヘルプメッセージを表示して終了します
 --license プログラムのライセンスを表示して終了する
 --master=MASTER マスター サーバーの接続情報 (形式:
      <ユーザー>[:<パスワード>]@<ホスト>[:<ポート>][:<ソケット>] または
      <ログインパス>[:<ポート>][:<ソケット>] または <config-
      パス>[<[グループ]>]。
 --slave=SLAVE スレーブ サーバーの接続情報 (形式:
      <ユーザー>[:<パスワード>]@<ホスト>[:<ポート>][:<ソケット>] または
      <ログインパス>[:<ポート>][:<ソケット>] または <config-
      パス>[<[グループ]>]。
 --rpl-user=RPL_USER レプリケーションユーザーのユーザー名とパスワード
      要件は、次の形式で指定します: <user>[:<password>] または
      <ログインパス>。例: rpl:passwd
 -p、--pedantic は、マスターとスレーブ間でストレージ エンジンが異なる場合は失敗します。
 --test-db=TEST_DB レプリケーション設定のテストに使用するデータベース名
      (オプション)
 --master-log-file=マスターログファイル
      このマスター ログ ファイルを使用してスレーブを初期化します。
 --master-log-pos=マスターログPOS
      マスターログファイルのこの位置を使用して開始します
      奴隷。
 -b, --最初から開始
      最初に記録されたイベントからレプリケーションを開始します
      マスターのバイナリログ。--master- では無効です。
      log-file または --master-log-pos。
 --ssl-ca=SSL_CA 信頼できるSSLのリストを含むファイルへのパス
      CA。
 --ssl-cert=SSL_CERT SSL証明書ファイルの名前
      安全な接続を確立します。
 --ssl-key=SSL_KEY SSL接続を確立するために使用するSSLキーファイルの名前
      安全な接続。
 --ssl=SSL サーバー接続にSSLの使用が必要かどうかを指定します
      SSL。暗号化された接続を確立できない場合は、
      接続試行が失敗する。デフォルトは0(SSLなし)
      必須)。
 -v、--verbose は表示される情報量を制御します。例: -v =
      詳細、-vv = より詳細、-vvv = デバッグ
 -q、--quiet は、静かな実行のためにすべてのメッセージをオフにします。

パート3: メインライブラリの準備

マスターデータベースにレプリケーションユーザーを作成する

[root@HE3 ~]# mysql -uroot -p
パスワードを入力してください: 
MySQL モニターへようこそ。コマンドは ; または \g で終わります。
MySQL接続IDは23329です
サーバーバージョン: 5.7.16-log MySQL コミュニティサーバー (GPL)
Copyright (c) 2000, 2016, Oracle およびその関連会社。無断複写・転載を禁じます。
OracleはOracle Corporationおよびその関連会社の登録商標です。
その他の名称は各社の商標である場合があります。
所有者。
ヘルプを表示するには、「help;」または「\h」と入力します。現在の入力ステートメントをクリアするには、「\c」と入力します。
mysql> 'MANAGER' によって識別される 'mysync'@'%' に、*.* 上のレプリケーション クライアント、レプリケーション スレーブを許可します。
クエリは正常、影響を受けた行は 0 行、警告は 1 件 (0.01 秒)
mysql> 権限をフラッシュします。
クエリは正常、影響を受けた行は 0 行 (0.01 秒)

パート4: ワンクリック構成

スレーブライブラリを設定し、次のコマンドを実行します [root@HE1 ~]# mysqlreplicate --master=sys_admin:[email protected]:3306 --slave=sys_admin:[email protected]:3306 --rpl-user=mysync:MANAGER -b
警告: コマンド ライン インターフェイスでパスワードを使用すると安全でない可能性があります。
# 192.168.1.250 のマスター: ... 接続されました。
# 192.168.1.248 のスレーブ: ... 接続されました。
# マスター上のバイナリ ログをチェックしています...
# レプリケーションを設定しています...
# ...終わり。

診る

パート 1:mysqlrplcheck

[root@HE1 ~]# mysqlrplcheck --master=sys_admin:[email protected]:3306 --slave=sys_admin:[email protected]:3306 -s
警告: コマンド ライン インターフェイスでパスワードを使用すると安全でない可能性があります。
# 192.168.1.250 のマスター: ... 接続されました。
# 192.168.1.248 のスレーブ: ... 接続されました。
テストの説明ステータス
---------------------------------------------------------------------------
マスターのバイナリログをチェックしています [pass]
binlog 例外はありますか? [pass]
レプリケーション ユーザーは存在しますか? [pass]
server_id値の確認 [pass]
server_uuid値の確認 [pass]
スレーブはマスターに接続されていますか? [pass]
マスター情報ファイルのチェック[合格]
InnoDB の互換性を確認中 [合格]
ストレージ エンジンの互換性を確認しています [合格]
lower_case_table_names 設定の確認 [pass]
スレーブの遅延を確認中(マスターより数秒遅れ)[合格]

#
# スレーブステータス: 
#
    Slave_IO_State: マスターがイベントを送信するのを待機中
     マスターホスト: 192.168.1.250
     マスターユーザー: mysync
     マスターポート: 3306
     接続再試行: 60
    マスターログファイル: mysql-bin.000003
   読み取りマスターログ位置: 384741
    リレーログファイル: HE1-relay-bin.000004
     リレーログ位置: 384954
   リレーマスターログファイル: mysql-bin.000003
    スレーブIO実行中: はい
    スレーブSQL実行中: はい
    レプリケート_Do_DB: 
   レプリケート_無視_DB: 
   テーブルの複製: 
  無視テーブルを複製: 
  Replicate_Wild_Do_Table: 
 Replicate_Wild_Ignore_Table: 
     最終エラー番号: 0
     最終エラー: 
     スキップカウンタ: 0
   実行マスターログポジション: 384741
    リレーログスペース: 1743112
    Until_Condition: なし
    ログファイルまで: 
     ログ位置まで: 0
   マスターSSL許可: いいえ
   マスターSSLCAファイル: 
   マスターSSLCAパス: 
    マスターSSL証明書: 
    マスターSSL暗号: 
    マスターSSLキー: 
   マスターとの差: 0
 Master_SSL_Verify_Server_Cert: いいえ
     最終IOエラー番号: 0
     最後のIOエラー: 
    最終SQLエラー番号: 0
    最終SQLエラー: 
 Replicate_Ignore_Server_Ids: サーバーIDを無視する: 
    マスターサーバー ID: 1250
     マスター_UUID : 1b1daad8-b501-11e6-aa21-000c29c6361d
    マスター情報ファイル: /data/mysql/master.info
      SQL_遅延: 0
   SQL_Remaining_Delay: なし
  Slave_SQL_Running_State: スレーブはすべてのリレーログを読み取りました。さらに更新を待機しています。
   マスター再試行回数: 86400
     マスターバインド: 
  最終IOエラータイムスタンプ: 
  最終SQLエラータイムスタンプ: 
    マスターSSL証明書: 
   マスターSSLCrlパス: 
   取得されたGtidセット: 
    実行されたGtidセット: 
     自動位置: 0
   Replicate_Rewrite_DB: 
     チャンネル名: 
   マスターTLSバージョン: 
# ...終わり。

その他の一般的なツール

パート 1: mysqldiskusage はデータベースのスペース サイズをチェックします

[root@HE1 ~]# mysqldiskusage --server=sys_admin:MANAGER@localhost
警告: コマンド ライン インターフェイスでパスワードを使用すると安全でない可能性があります。
# ローカルホスト上のソース: ... 接続されました。
# データベースの合計:
+---------------------+--------------+
| db_name | 合計 |
+---------------------+--------------+
| 最大スケールスキーマ | 14,906 |
|mysql | 14,250,013 |
| パフォーマンススキーマ | 818,071 |
| システム | 500,802 |
| 925,929,868 |
+---------------------+--------------+
データベースの合計ディスク使用量 = 941,513,660 バイトまたは 897.90 MB
#...終わり。

パート2: mysqlindexcheckは冗長なインデックスをチェックする

[root@HE1 ~]# mysqlindexcheck --server=sys_admin:MANAGER@localhost wms
警告: コマンド ライン インターフェイスでパスワードを使用すると安全でない可能性があります。
# ローカルホスト上のソース: ... 接続されました。
# 次のインデックスは、テーブル wms.auth_user に対して重複または冗長です。
#
BTREE を使用して、`wms`.`auth_user` (`user_name`) に一意のインデックス `index_user_name` を作成します。
# は冗長または重複している可能性があります:
BTREE を使用して、`wms`.`auth_user` (`user_name`, `state`) に `user_name` インデックスを作成します。
# 次のインデックスは、テーブル wms.basic_storeage_sapce に対して重複または冗長です。
#
BTREE を使用して、`wms`.`basic_storeage_sapce` (`store_id`、`district_id`、`store_space_no`) に `idx_store_district_space_no` インデックスを作成します。
# は冗長または重複している可能性があります:
BTREE を使用して、`wms`.`basic_storeage_sapce` (`store_id`、`district_id`、`store_space_no`) に一意のインデックス `idx_store_district_space_no_un` を作成します。

--要約--

mysql-utilities ツール セットの mysqlreplicate を使用して MySQL マスター/スレーブを構成するのは非常に簡単であることがわかります。mysqlreplicate はさまざまなパラメータも提供します。この記事の -b は、レプリケーションがマスター バイナリ ログの最初のイベントから開始されることを意味します。 mysqlrplcheck の -s は、show slave status\G の出力を参照します。著者の能力の限界と記事執筆の急ぎにより、記事には必然的に誤りや不正確な点があります。不適切な点がありましたら、読者の皆様のご批判と訂正を心からお願い申し上げます。

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

以下もご興味があるかもしれません:
  • Docker ベースの MySQL マスタースレーブレプリケーション環境を構築するための実装手順
  • Centos7 で MySQL マスター スレーブ サーバーを構築する方法 (グラフィック チュートリアル)
  • CentOS サーバー プラットフォームで MySQL マスター スレーブ レプリケーションと読み取り書き込み分離を構築する方法
  • MySQLマスタースレーブデータベース構築方法の詳細な説明
  • MySQL 5.7.18 マスタースレーブレプリケーション設定(マスター 1 台とスレーブ 1 台)チュートリアルの詳細な説明
  • MySQL マスタースレーブレプリケーションの読み書き分離構造の詳細な説明
  • Docker コンテナを使用して MySql マスター スレーブ レプリケーションを構築する
  • MySQL 5.7 Docker のマスタースレーブレプリケーションアーキテクチャの構築に関するチュートリアル
  • 大規模なMySQLデータベース用のマスタースレーブシステムを構築するアイデアを共有する

<<:  1つの記事でTypeScriptのデータ型について学ぶ

>>:  Linux で SVN サーバーをインストールする方法

推薦する

ゲーム着物メモ問題の簡単な分析

本日、ゲームを再起動した後、バックアップしたデータをターゲットデータベースにインポートできないことが...

MySQLカスケードレプリケーションの実装方法の例

いわゆるカスケード レプリケーションでは、マスター サーバーが 1 つのスレーブ サーバーにのみデー...

MySQL データベース監視ソフトウェア lepus の使用上の問題と解決策

lepus3.7 を使用して MySQL データベースを監視中に、次の問題が発生しました。このブログ...

テーブルの作成、フィールドの追加、フィールドの変更、インデックスの追加によく使用される MySQL の SQL 文の概要

この記事では、テーブルの作成、フィールドの追加、フィールドの変更、インデックスの追加を行う一般的な ...

HTML ブロックレベルタグとインラインタグの違い

1. ブロックレベル要素: 独立して存在できる能力を指します。通常、ブロックレベル要素は改行によって...

JVM 上の高性能データ形式ライブラリ パッケージである Apache Arrow の紹介とアーキテクチャ (Gkatziouras)

Apache Arrow は、BigQuery を含むさまざまなビッグデータ ツールで使用される一...

WeChatアプレットがSMS認証コード送信のカウントダウンを実装

この記事では、WeChatアプレットがSMS認証コードのカウントダウンを送信するための具体的なコード...

MySQLインストール後のデフォルトデータベースの役割の詳細な説明

MySQL を学習すると、インストール後にいくつかのデフォルトのデータベースが付属していることに気付...

MySQL 8.0.15 のインストールと設定のグラフィックチュートリアル

この記事ではMySQL 8.0.15のインストールと設定方法を参考までに記録します。具体的な内容は以...

ECMAScript のイテレータの詳細な説明

目次序文以前のバージョンイテレータパターンイテレータファクトリ関数イテレータプロトコル最後に序文多く...

HTML5 と HTML4 の 10 の主な違い

HTML5 は HTML 標準の次のバージョンです。ますます多くのプログラマーが、Web サイトの構...

Vue カスタム オプション時間カレンダー コンポーネント

この記事の例では、参考のためにvueカスタムオプションタイムカレンダーコンポーネントの具体的なコード...

HTML で複数のクラス属性を定義する場合の無効な解決策

HTML を記述する過程で、クラス属性に複数の値を定義することがよくありますが、定義した値が無効であ...

CSS でのナビゲーション バーとドロップダウン メニューの実装

1. CSSナビゲーションバー(1)ナビゲーションバーの機能ナビゲーション バーを使いこなすことは、...