MySQL マスタースレーブ構築(複数のマスターと 1 つのスレーブ)の実装アイデアと手順

MySQL マスタースレーブ構築(複数のマスターと 1 つのスレーブ)の実装アイデアと手順

背景:

最近、同社のプロジェクトは同時実行のプレッシャーに耐えられないようなので、最適化が差し迫っています。現在のシステムは単一のデータベース システムであるため、可能な限り最適化するよう最善を尽くしましたが、データベースのボトルネックにより、プロジェクトの同時実行能力は依然として大幅に制限されています。そこで、プロジェクトの同時実行機能を高めるためにデータベースを追加することを検討しました。

アイデア:

1: 集中ライブラリを作成します。主に履歴データを保存します。クエリとして使用します。

2: 複数のビジネス ライブラリを作成します。プロジェクトの高い同時実行機能を満たすためです。

デモ環境:

1: VM ware 仮想マシン - CentOS 7

centOS-1: 192.168.194.3 メイン 100-------ビジネスライブラリ

centOS-2: 192.168.194.4 メイン 200-------ビジネスライブラリ

centOS-3: 192.168.194.5 から 300 ------- 集中ライブラリに相当

2: MySQL 5.7

ステップ

1: メインライブラリ100

my.cnf を設定します。

[mysqld]
lower_case_table_names = 1 # テーブル名は大文字と小文字を区別しません server-id = 100
log_bin = mysql-bin # binlog 記録を開始 binlog_format = MIXED 
#トランザクションがコミットされるたびに、MySQL は binlog をフラッシュします。これは最も安全な設定ですが、パフォーマンスの低下が最も大きくなります。
#この場合、データベースが配置されているホストオペレーティングシステムが破損したり、突然電源が失われたりした場合、システムは 1 つのトランザクションのデータのみを失う可能性があります。#ただし、binlog はシーケンシャル IO ですが、sync_binlog=1 が設定されている場合は、複数のトランザクションが同時に送信されます。
#MySQL と IO パフォーマンスにも大きく影響します。必要に応じて設定してください。
同期バイナリログ = 1 
# バイナリ ログが自動的に削除/期限切れになるまでの日数。デフォルト値は 0 で、自動削除は行われません。
有効期限切れログ日数 = 7
#binlog_cache_size = 128m
#最大binlogキャッシュサイズ = 512m
#最大バイナリログサイズ = 256M
# データベースを同期する必要があります binlog-do-db = dev
# 同期ライブラリは必要ありません binlog-ignore-db = mysql
binlog_ignore_db = 情報スキーマ
binlog_ignore_db = パフォーマンススキーマ
binlog_ignore_db = システム
データディレクトリ=/var/lib/mysql

スレーブユーザーを設定する

#mysql -uroot -p 
# パスワード: xxxxxx
# mysql> 'root1234' によって識別される 'slave'@'%' に *.* のレプリケーション スレーブを許可します。
# mysql> 権限をフラッシュします。
# やめる;
# systemctl で mysqld を再起動します。
# マスターステータスを表示 \G
#************************** 1. 行 ****************************
             ファイル:mysql-bin.000001
         位置: 886
     Binlog_Do_DB: 開発
 Binlog_Ignore_DB: mysql、information_schema、performance_schema、sys
実行されたGtidセット: 
セット内の 1 行 (0.00 秒)

2: メインライブラリ 200

my.cnf を設定します。

[mysqld]
lower_case_table_names = 1 # テーブル名は大文字と小文字を区別しません server-id = 200
log_bin = mysql-bin # binlog 記録を開始 binlog_format = MIXED 
#トランザクションがコミットされるたびに、MySQL は binlog をフラッシュします。これは最も安全な設定ですが、パフォーマンスの低下が最も大きくなります。
#この場合、データベースが配置されているホストオペレーティングシステムが破損したり、突然電源が失われたりした場合、システムは 1 つのトランザクションのデータのみを失う可能性があります。#ただし、binlog はシーケンシャル IO ですが、sync_binlog=1 が設定されている場合は、複数のトランザクションが同時に送信されます。
#MySQL と IO パフォーマンスにも大きく影響します。必要に応じて設定してください。
同期バイナリログ = 1 
# バイナリ ログが自動的に削除/期限切れになるまでの日数。デフォルト値は 0 で、自動削除は行われません。
有効期限切れログ日数 = 7
#binlog_cache_size = 128m
#最大binlogキャッシュサイズ = 512m
#最大バイナリログサイズ = 256M
# データベースを同期する必要があります binlog-do-db = dev
# 同期ライブラリは必要ありません binlog-ignore-db = mysql
binlog_ignore_db = 情報スキーマ
binlog_ignore_db = パフォーマンススキーマ
binlog_ignore_db = システム
データディレクトリ=/var/lib/mysql

スレーブユーザーを設定する

#mysql -uroot -p 
# パスワード: xxxxxx
# mysql> 'root1234' によって識別される 'slave'@'%' に *.* のレプリケーション スレーブを許可します。
# mysql> 権限をフラッシュします。
# やめる;
# systemctl で mysqld を再起動します。
# マスターステータスを表示 \G
#************************** 1. 行 ****************************
             ファイル:mysql-bin.000001
         ポジション: 154
     Binlog_Do_DB: 開発
 Binlog_Ignore_DB: mysql、information_schema、performance_schema、sys
実行されたGtidセット: 
セット内の 1 行 (0.00 秒)

3: 図書館300より

my.cnf を設定します。

[mysqld]
lower_case_table_names = 1 # テーブル名は大文字と小文字を区別しません server-id = 300
master_info_repository = テーブル
リレーログ情報リポジトリ = テーブル 
データディレクトリ=/var/lib/mysql
ソケット=/var/lib/mysql/mysql.sock  
シンボリックリンク=0 
ログエラー=/var/log/mysqld.log
pidファイル=/var/run/mysqld/mysqld.pid

マスターデータベース情報を設定する

#mysql -uroot -p 
# パスワード: xxxxxx
# マスターデータベース情報を設定する# mysql> CHANGE MASTER TO  
# ->MASTER_HOST='192.168.194.3',
# ->MASTER_PORT=3306、MASTER_USER='スレーブ'、 
# ->MASTER_PASSWORD='root1234',
# ->MASTER_LOG_FILE='mysql-bin.000001'、チャネル '100' の MASTER_LOG_POS=886;
# mysql> マスターを変更する  
# ->MASTER_HOST='192.168.194.4',
# ->MASTER_PORT=3306、MASTER_USER='スレーブ'、 
# ->MASTER_PASSWORD='root1234',
# ->MASTER_LOG_FILE='mysql-bin.000001'、チャネル '200' の MASTER_LOG_POS=154;
# マスターデータベース情報を設定します# mysql> flush privileges;
# スレーブを起動します。
# mysql>スレーブステータスを表示 \G

識別同期成功

スレーブIO実行中: はい
スレーブSQL実行中: はい

テスト。

ランダム メイン データベース: テーブルを作成し、データを挿入します。

テーブル `t_user` を作成します (
  `id` varchar(32) NOT NULL COMMENT '主キーID',
  `name` varchar(32) 文字セット utf8mb4 NULL コメント 'ユーザー名',
  `code` varchar(32) 文字セット utf8mb4 NULL コメント 'ユーザーコード',
  `phone_number` varchar(300) 文字セット utf8mb4 NULL コメント '電話番号',
  `create_date` datetime NULL COMMENT '作成時刻',
  `update_date` datetime NULL COMMENT '変更時刻',
  主キー (`id`)
) COMMENT = 'ユーザー情報テーブル';
t_user に INSERT INTO (`id`, `name`, `code`, `phone_number`, `create_date`, `update_date`) 
VALUES ('userId_4', '张三', '123456789', '123456789632', '2020-04-27 22:05:00', '2020-04-27 22:05:00');

ライブラリからのクエリ

t_user から * を選択します。
------+--------+----------+--------------+----------------------+-------------+
| ID | 名前 | コード | 電話番号 | 作成日 | 更新日 |
+-------+--------+----------+--------------+----------------------+----------+
| userId_4 | 張三|123456789|123456789632|2020-04-27 22:05:00|2020-04-27 22:05:00

要約する

以上で、MySQL マスタースレーブ構築 (複数マスター、1 スレーブ) の実装アイデアと手順についての説明は終了です。MySQL マスタースレーブ構築に関するより関連性の高いコンテンツについては、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • MySQL マルチマスターと 1 スレーブのデータバックアップ方法のチュートリアル
  • Centos7 Mysql 5.6 マルチマスターと 1 スレーブのソリューションと詳細な構成
  • MySQL8.0.18 複数マスターと 1 スレーブの構成

<<:  デザイン理論: デザインにおける階層

>>:  CSS3で背景画像にカラーマスクを追加する方法

推薦する

データベースの冗長フィールドを合理的に使用する方法

privot は、多対多の関係の中間テーブルです。 PT5 フレームワークは自動的に privot ...

MySQL が「operate_time」エラーのデフォルト値が無効であると報告する問題を解決する

データベースでcreate tableステートメントを実行する テーブル `sys_acl` を作成...

Ant Design Blazor コンポーネントライブラリのルーティング再利用マルチタブ機能

最近、Ant Design Blazor コンポーネント ライブラリにマルチタブ コンポーネントを実...

Vue のプロダクション環境と開発環境を切り替えてフィルターを使用する方法

目次1. 本番環境と開発環境を切り替える最初の方法: .envファイルを設定する2番目の方法2. フ...

Nodejs 探索: シングルスレッドの高並行性の原理を深く理解する

目次序文一目でわかる建築オペレーティングシステムとの対話シングルスレッドイベント駆動/イベントループ...

CSS3は円錐グラデーション効果を実現します

文法:背景画像: 円錐グラデーション(位置の角度から、開始色、...、最後の色)最初のパラメータ:開...

CSSを使用してアダプティブスクエアを実装する方法の例

伝統的な方法は、正方形を固定形式で書くことです。長さ=幅を直接書き、次のように固定値を書きます。 。...

MySQL のロックに関する問題

ロックの分類:データ操作の粒度から:テーブルロック:操作時にテーブル全体がロックされます。行ロック:...

HTML+CSSを使用してTG-visionホームページを作成する方法

今回はHTML+CSSレイアウトを使用して、TG-vision Shuanghui Mediaのホー...

Windows 版 MySQL のインストール、起動、基本設定に関する詳細なグラフィック チュートリアル

ダウンロード:ステップ 1: ウェブサイトを開きます (ダウンロードするには公式ウェブサイトにアクセ...

スーパーバイザーウォッチドッグの使い方を3分で学ぶ

ソフトウェアとハ​​ードウェア環境centos7.6.1810 64ビット cat /etc/red...

CPU、マシンモデル、メモリなどの情報を表示するLinuxシステム

システムメンテナンス中は、いつでも CPU 使用率を確認し、対応する情報に基づいてシステムの状態を分...

Docker Composeでコンテナ管理の問題を解決する

Docker の設計では、コンテナは 1 つのアプリケーションのみを実行します。しかし、現在のアプリ...

MySQLデータベースのロック機構の分析

同時アクセスの場合、非反復読み取りやその他の読み取り現象が発生する可能性があります。高い同時実行性に...

ElementUI ページネーション コンポーネントの使い方 Vue でのページネーション

ElementUIページングコンポーネントPagination in Vueの使用は参考になります。...