MySQL マルチマスターと 1 スレーブのデータバックアップ方法のチュートリアル

MySQL マルチマスターと 1 スレーブのデータバックアップ方法のチュートリアル

概要

いずれかのデータベースに対する操作は他のデータベースに自動的に適用され、2 つのデータベースのデータの一貫性が常に保たれます。

これには次の利点があります。

  • 災害復旧にも使用でき、いずれか 1 つに障害が発生した場合は別のものに切り替えることができます。
  • 負荷分散を実行し、リクエストを任意のマシンに分散して、Web サイトのスループットを向上させることができます。 オフサイトのホットバックアップでは、特に災害復旧に適しています。

MySQL マスタースレーブレプリケーション方式

1 マスターデータベースがデータベースを操作すると、操作記録がbiglogログファイルに書き込まれます。

2 スレーブデータベースは、ネットワークを介してマスターデータベースのログファイルを取得し、それをローカルログシステムに書き込み、データベース内のデータベースイベントを1つずつ完了します。

3 スレーブはリレー ログ内のイベントをやり直し、マスターの変更を自身のデータベースに反映するため、両端のデータはまったく同じになります。

環境

オペレーティングシステム: CentOS

MySQL バージョン: mysql-5.6.26 (マスターとスレーブのデータベース バージョンは一致している必要があります)

マスター1の構成

1 バイナリログを有効にする

vim /etc/my.cnf

サーバーID=6
ログ bin = mysql bin

2 MySQLを再起動し、ログインして認証する

mysql -uroot -p123456

'123456' で識別される 'repl'@'10.211.55.7' に、*.* 上のレプリケーション スレーブ、レプリケーション クライアントを許可します。

IPアドレスはスレーブサーバーのIPアドレスです

3 ログステータスの表示

マスターステータスを表示します。

マスター2の構成

1 バイナリログを有効にする

vim /etc/my.cnf

サーバーID=8
ログ bin = mysql bin

2 MySQLを再起動し、ログインして認証する

mysql -uroot -p123456

'123456' で識別される 'repl'@'10.211.55.7' に、*.* 上のレプリケーション スレーブ、レプリケーション クライアントを許可します。

IPアドレスはスレーブサーバーのIPアドレスです

3 ログステータスの表示

マスターステータスを表示します。

スレーブ構成

1 設定ファイルを変更します(スレーブのデフォルトデータベースが起動されるポートは閉じられている必要があることに注意してください service mysql stop)

vim /etc/my.cnf

[mysqld]
 binlog-ignore-db=mysql
 binlog_format=混合
 有効期限=7
 スレーブスキップエラー=1062
 リレーログ=mysqlリレービン
 ログスレーブ更新=1

[mysqld_マルチ]
 mysqld = /usr/bin/mysqld_safe です。
 mysqladmin = /usr/bin/mysqladmin
 ユーザー=root
 パスワード=123456
[mysqld6]
 ポート=3306
 データディレクトリ=/home/mysql/data6
 pidファイル=/home/mysql/data6/mysql.pid
 ソケット=/home/mysql/data6/mysql.sock
 ユーザー=mysql
 サーバーID=7
[mysqld8]
 ポート=3307
 データディレクトリ=/home/mysql/data8
 pidファイル=/home/mysql/data8/mysql.pid
 ソケット=/home/mysql/data8/mysql.sock
 ユーザー=mysql
 サーバーID=7

2 ビルドディレクトリを初期化する

/usr/local/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/home/mysql/data6 &
/usr/local/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/home/mysql/data8 &

3 ディレクトリの権限を変更する

chown -R mysql /home/mysql/data6

chown -R mysql /home/mysql/data8

4 サービスを開始する

mysqld_multi --defaults-file=/etc/my.cnf 開始 6

mysqld_multi --defaults-file=/etc/my.cnf 開始 8

5 ログインテスト(別途認証)

mysql -P 3306 -S /home/mysql/data6/mysql.sock

mysql> マスターを、master_host='10.211.55.6'、master_user='repl'、master_password='123456'、master_port=3306、master_log_file='mysql-bin.000001'、master_log_pos=120 に変更します。
mysql> スレーブを起動します。

mysql -P 3307 -S /home/mysql/data8/mysql.sock

mysql> マスターを、master_host='10.211.55.8'、master_user='repl'、master_password='123456'、master_port=3306、master_log_file='mysql-bin.000001'、master_log_pos=120 に変更します。
mysql> スレーブを起動します。

はい、以上です。

要約する

上記はこの記事の全内容です。この記事の内容が皆さんの勉強や仕事に一定の参考学習価値を持つことを願っています。ご質問があれば、メッセージを残してコミュニケーションしてください。123WORDPRESS.COM を応援していただきありがとうございます。

以下もご興味があるかもしれません:
  • MySQL マスタースレーブ構築(複数のマスターと 1 つのスレーブ)の実装アイデアと手順
  • Centos7 Mysql 5.6 マルチマスターと 1 スレーブのソリューションと詳細な構成
  • MySQL8.0.18 複数マスターと 1 スレーブの構成

<<:  Linuxカーネルがプロセスアドレス空間に侵入し、プロセスメモリを変更する方法

>>:  Vue.js の計算プロパティ、監視プロパティ、ライフサイクルの詳細な説明

推薦する

Dockerでmysqlのルートパスワードを変更する方法

最初のステップはmysqlコンテナを作成することです docker exec -it コンテナID ...

コピー&ペーストはパッケージングの敵です

OO、デザイン パターン、および多くのオブジェクト指向の原則について話す前に、まず 1 つのことを習...

JavaScript スロットリングとアンチシェイクに関する簡単な説明

目次スロットルと手ぶれ防止コンセプト:違いスロットリングの実装スロットル機能手ぶれ補正の実装手ぶれ防...

MysqlクエリJSON結果に関連する関数の概要

JSON 形式のフィールドは、MySQL 5.7 で追加された新しい属性ですが、基本的には文字列とし...

Vue3+Vite+TS は、要素プラスビジネスコンポーネントの二次カプセル化を実装します sfasga

目次1. 構造文字列2. タプルを返す3. Dict辞書にアクセスする4. 図書館を利用する5. リ...

Nginx を使用して https ルートドメイン名への 301 リダイレクトを実装するためのサンプル コード

SEO とセキュリティを考慮して、301 リダイレクトが必要です。以下の一般的な処理には Nginx...

CSS の 4 つのインポート方法と優先順位の簡単な分析

第一に: CSSを導入する4つの方法CSS を導入する方法には、インライン スタイル、埋め込みスタイ...

オンラインMySQLオプティマイザの誤判断によって発生した低速クエリイベントを記録する

序文:非常に遅いクエリとリクエストのタイムアウトのアラートを受け取りました。メトリックを通じて My...

Vue での weixin-js-sdk の一般的な使用方法の詳細な説明

リンク: https://qydev.weixin.qq.com/wiki/index.php?ti...

Mysqlトランザクション操作の失敗を解決する方法

Mysqlトランザクション操作の失敗を解決する方法トランザクションの原子性: トランザクションは、デ...

Ubuntu の仮想環境に Django をインストールする方法

Ubuntu コマンドライン ウィンドウで次の操作を実行します。 1. 仮想環境をインストールする...

CSS属性のデフォルト値width: autoとwidth: 100%の違いの詳細な説明

幅: 自動子要素(コンテンツ+パディング+境界線+余白を含む)は、親要素のコンテンツ領域全体を埋めま...

MySQLクエリツリー構造方式

目次MySQL クエリツリー構造1. ツリー構造について2. MySQLでカスタム関数を定義する方法...

証明書を使用してリモート Docker サーバーに接続する方法

目次1. スクリプトを使用してDockerのTLSを暗号化する2. Dockerの設定を変更してリモ...