mysql マスタースレーブレプリケーションもともとシャーディングに取り組んでいたのですが、終わった後にデータベースのマスタースレーブレプリケーションが行われていないことに気づいたので、設定後にいくつか記録を残しました。 MySQL マスタースレーブレプリケーション方式MySQL マスター スレーブ レプリケーションには、ログベース (binlog) と GTID ベース (グローバル トランザクション識別子) の 2 つの方法があります。このブログ投稿では、ログベース (binlog) レプリケーションを使用します。 MySQL マスタースレーブレプリケーションの原理1.マスターは、MySQL 構成ファイル my.cnf の log-bin で指定されたファイルであるバイナリ ログにデータを記録します。これらの記録はバイナリ ログ イベントと呼ばれます。 MySQL マスタースレーブ構成の具体的な実装1.マスター構成(1) MySQL の my.cnf 設定ファイルを変更します。ここで注意しなければならないのは、私が使用している MySQL バージョンには my.cnf 設定ファイルがなく、my-default.cnf さえ存在しないことです。一般的に、my.cnf は /etc ディレクトリにあり、my-default.cnf は /usr/local/mysql/support-files にあります。最後に、インターネットから my.cnf ファイルをコピーし、/etc に配置しました (友人は自分でオンラインで見つけることができます。そのような友人はたくさんいます)。 bash-3.2# vim /etc/my.cnf # server_id を設定します。これは繰り返すことはできません。通常は、メイン データベースの IP アドレスに設定できます。 サーバーID=81 # バックアップフィルタ: バックアップが必要なデータベース、出力バイナリログ binlog-do-db = デモ ds_master # バックアップフィルター: バックアップする必要のないデータベースは出力されません binlog-ignore-db=mysql # バイナリログを有効にし、mysql-binで始まるログファイルにマスターデータベースデータを記録します(カスタマイズ可能) ログ bin = mysql bin # トランザクション処理中にバイナリログキャッシュを保存するために使用される各セッションのメモリを設定します。binlog_cache_size=1M # マスタースレーブレプリケーション形式 (混合、ステートメント、行、デフォルトはステートメント) binlog_format=混合 # バイナリログが自動的に削除/期限切れになるまでの日数。デフォルト値は 0 で、自動削除されないことを意味します。expire_logs_days=7 # マスタースレーブレプリケーションで発生したすべてのエラーまたは指定されたエラータイプをスキップして、スレーブターミナルを回避するために使用されます # 1062: 主キーの競合 (特定のパラメータはオンラインで確認できます) スレーブスキップエラー=1062 (3)マスターデータベースサービスを開始/再起動し、データベースにログインし、データ同期ユーザーを作成し、承認する。 #このマシンにメイン データベースのデータをバックアップする権限を付与します。mysql> GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'root'@'192.168.31.60' identified by 'password'; #次に権限を更新します。mysql> flush privileges; #設定されたマスターデータベース情報を表示します。mysql> show master status; (4)マスターデータベースとスレーブデータベース間のデータの一貫性を確保するためのマスターデータベースデータのバックアップ # テーブルを一時的にロックし、読み取り専用権限を設定します。mysql> flush tables with read lock; # データベースをバックアップしますbash-3.2# mysqldump -uroot -p --add-drop-table demo_ds_master_1 > /tmp/demo_ds_master_1.sql; # テーブルのロックを解除しますmysql> unlock table; 2. スレーブ構成(1)スレーブデータベースmysqlのmy.cnf設定ファイルを変更し、スレーブデータベースのリレーログ設定を追加します。 [root@develop など]# vim my.cnf # server_id を設定します。これは繰り返すことはできません。スレーブ データベースの IP アドレスがここで設定されます。 サーバーID=60 # データベースからのリレー ログを有効にし、マスター データベースの binlog をリレー ログに書き込みます。リレー ログは hehe-mysql-relay-bin (カスタマイズ可能) で始まります。 リレーログ=hehe-mysql-リレービン # マスターとスレーブのデータ間の不整合を防ぐため、スレーブデータベースを読み取り専用権限に設定します。read_only=1 (2)スレーブデータベースを別のデータベースのマスターデータベースとして機能させる必要がある場合は、マスターに設定情報を追加し、log_slave_updates=1を追加して、マスターのバイナリログを自分のバイナリログに記録する必要があります。 (3)スレーブデータベースを再起動し、マスターデータベースのデータを同期する # マスターデータベースのバックアップデータベースを実行します [root@develop etc]# mysql -uroot -p demo_ds_master_1 < /tmp/demo_ds_master_1.sql # スレーブデータベースにログイン [root@develop など]# mysql -uroot -p # スレーブノードのマスターノードを設定しますmysql> マスターを master_host='192.168.31.80'、master_user='root'、master_password='password' に変更します。 マスターポート=3306、 マスターログファイル='mysql-bin.000001', マスターログ位置=154; # マスタースレーブ同期を有効にする mysql> start slave; # マスターとスレーブの同期ステータスを確認しますmysql> show slave status\G; # マスタースレッドとスレーブスレッドのステータスを表示します。mysql> show processlist\G; 次の図は、マスター スレーブ レプリケーションが構成されていることを示しています。これで、マスター データベースにデータを挿入すると、スレーブ データベースによるマスター データベース データの自動レプリケーションが実現できます。
これで、MySQL マスタースレーブ レプリケーションの実装手順に関するこの記事は終了です。MySQL マスタースレーブ レプリケーションに関するより関連性の高いコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
目次現象:ポートの使用:ファイルにスペルミスがあります:現象: Tomcat がインストールされ、W...
目次JSX環境の構築プロジェクトの設定NPMを初期化するwebpackをインストールするBabelを...
目次1. Tomcatを監視する方法2. Java独自の監視コマンド3. Tomcatのトラブルシュ...
システムをコンピューターにインストールする方法がわからない場合は、Linux を学習したい場合は、仮...
目次序文jQuery 以外の場合は何を使うのでしょうか? DOMとイベントAJAX リクエスト要約す...
序文「データベース トランザクションの特徴は何ですか?」と尋ねられたら、 ACID 特性である原子性...
目次スプレッド演算子を使用してプロパティを渡すのは避けてください関数パラメータをオブジェクトにカプセ...
目次1. はじめに2. 詳しい説明2.1、非同期2.1.1. 関数はPromise以外のオブジェクト...
一つの環境Alibaba Cloud Server: CentOS 7.4 64 ビット (RedH...
1. <select style="width:195px" name=&...
目次1. インデックスとは何ですか? 2. インデックスはなぜ必要なのでしょうか? 3. インデック...
目次1. 各() 2. arr.filter() 3. arr.every() 4. arr.map...
Dockerのインストール公式インストールスクリプトを使用して最新バージョンのDockerをインスト...
目次1. MySQL論理アーキテクチャの概要2. コネクタクエリキャッシュ4. パーサー5. オプテ...
シナリオ: laradock 開発環境 (php7.3+mysql5.7) がローカルに構築されてい...