MySQLデータベースのマスタースレーブ同期の実際のプロセスの詳細な説明

MySQLデータベースのマスタースレーブ同期の実際のプロセスの詳細な説明

この記事では、MySQL データベースのマスター スレーブ同期の実際のプロセスについて説明します。ご参考までに、詳細は以下の通りです。

前の記事の続き: MySQL データベース入門: データベースのバックアップ

インストール環境の説明

システム環境:

[root@~]# cat /etc/redhat-release 
CentOS リリース 6.5 (最終)
[root@~]# uname -r
2.6.32-431.el6.x86_64

データベース:

シミュレーション環境なので、マスターライブラリとスレーブライブラリは同じサーバー上にあり、サーバーのIPアドレスは192.168.1.7です。

  • メインライブラリはポート3306を使用します
  • ライブラリからポート3307を使用する
  • データベースデータディレクトリ/データ

MySQLデータベースサービスをインストールする

パッケージをダウンロードする

今回はバイナリインストールパッケージを使用してMySQLデータベースサービスを展開します。その他のインストールおよび展開方法については、前回の記事を参照してください。

[root@~]#wget http://mirrors.sohu.com/mysql/MySQL-5.5/mysql-5.5.51-linux2.6-x86_64.tar.gz

データディレクトリとソフトウェアインストールディレクトリを作成する

[root@~]#mkdir /data{3306,3307} -p
[root@~]#mkdri /アプリケーション

解凍ソフトウェア

[root@~]#tar zxf mysql-5.5.51-linux2.6-x86_64.tar.gz 
[root@~]#mv mysql-5.5.51-linux2.6-x86_64 /application/mysql-5.5.51
[root@~]#ln -s /application/mysql-5.5.51 /application/mysql

ユーザーを作成

[root@~]#groupadd mysql
[root@~]#useradd -g mysql -M mysql

データベースを初期化する

[root@~]#/application/mysql/scripts/mysql_install_db --basedir=/application/mysql --datadir=/data/3306/data --user=mysql

[root@~]#/application/mysql/scripts/mysql_install_db --basedir=/application/mysql --datadir=/data/3307/data --user=mysql

設定ファイルを作成する

[root@~]#vi /data/3306/my.cnf
[クライアント]
ポート = 3306
ソケット = /data/3306/mysql.sock

[mysql]
自動再ハッシュなし

[mysqld]
ユーザー = mysql
ポート = 3306
ソケット = /data/3306/mysql.sock
ベースディレクトリ = /application/mysql
データディレクトリ = /data/3306/data
オープンファイル制限 = 1024
バックログ = 600

最大接続数 = 800
最大接続エラー数 = 3000
テーブルキャッシュ = 614
外部ロック = FALSE
最大許容パケット = 8M
ソートバッファサイズ = 1M
結合バッファサイズ = 1M
スレッドキャッシュサイズ = 100
スレッド同時実行性 = 2
クエリキャッシュサイズ = 2M
クエリキャッシュ制限 = 1M
クエリキャッシュ最小解像度単位 = 2k
スレッドスタック = 192K
tmp_table_size = 2M
最大ヒープテーブルサイズ = 2M
長いクエリ時間 = 1

pid ファイル = /data/3306/mysql.pid
ログ bin = /data/3306/mysql-bin
#マスタースレーブ同期の重要なポイントは、スレーブがリレーログを開く必要がないことです = /data/3306/relay-bin
リレーログ情報ファイル = /data/3306/relay-log.info
binlog_cache_size = 1M
最大バイナリログキャッシュサイズ = 1M
最大バイナリログサイズ = 2M
有効期限切れログ日数 = 7
キーバッファサイズ = 16M
読み取りバッファサイズ = 1M
読み取りバッファサイズ = 1M
バルク挿入バッファサイズ = 1M
小文字のテーブル名 = 1
名前解決をスキップ
スレーブスキップエラー = 1032,1062
複製無視DB=mysql
server-id = 1 #マスターIDとスレーブIDは同じにできません [mysqldump]
素早い
最大許容パケット = 2M

[mysqld_safe]
ログエラー=/data/3306/mysql3306.err
pidファイル=/data/3306/mysqld.pid

データベース起動スクリプト:

[root@~]#vi /data/3306/mysql
#!/bin/sh
ポート=3306
ユーザー="root"
パスワード=”123456”
パス="/application/mysql/bin"
sock="/data/${port}/mysql.sock"

開始_mysql()
{
 if [ ! -e "$sock" ];then
  printf "MySQL を起動しています...\n"
  /bin/sh ${Path}/mysqld_safe --defaults-file=/data/${port}/my.cnf 2>&1 > /dev/null &
 それ以外
  printf "MySQL が実行中です...\n"
  出口
 フィ
}
stop_mysql()
{
 if [ ! -e "$sock" ];then
  printf "MySQL は停止しています...\n"
  出口
 それ以外
  printf "MySQL を停止しています...\n"
  ${Path}/mysqladmin -u ${user} -p${pwd} -S /data/${port}/mysql.sock シャットダウン
 フィ
}
再起動()
{
 printf "MySQL を再起動しています...\n"
 停止_mysql
 睡眠2
 開始_mysql
}
ケース$1
始める)
 開始_mysql
;;
停止)
 停止_mysql
;;
再起動)
 再起動_mysql
;;
*)
 printf "使用方法: /data/${port}/mysql {start|stop|restart}\n"
エサック

注: マスター/スレーブ ライブラリ構成ファイルは、起動ファイルと同じです。構成を完了するには、ポートとサーバー ID を変更するだけです。

ディレクトリを承認し、スタートアップファイルの実行権限を増やす

[root@~]#chown -R mysql.mysql /data
[root@~]#find /data -name mysql -exex chmod +x {} \;

データベースを起動する

[root@~]#/data/3306/mysql スタート
[root@~]#/data/3307/mysql スタート

デフォルトのデータベースパスワードを変更する

[root@~]#mysqladmin -uroot パスワード '123456' -S /data/3306/mysql.sock
[root@~]#mysqladmin -uroot パスワード '123456' -S /data/3307/mysql.sock

テストログインでは、2つのデータベースにログインしてインストールプロセス全体を完了できます。

メインライブラリを構成する

1) メインデータベースをバックアップする

mkdir /バックアップ

メインデータベースにログインしてユーザーを作成し、承認します

[root@~]#mysql -uroot -p123456 -S /data/3306/mysql.sock

mysql> '123456' で識別される rep@'192.168.1.%' に *.* のレプリケーション スレーブを許可します。

クエリは正常、影響を受けた行は 0 行 (0.00 秒)

mysql> 権限をフラッシュします。

クエリは正常、影響を受けた行は 0 行 (0.00 秒)

テーブルロック操作を実行する

[root@~]#/application/mysql/bin/mysql -uroot -p123456 -S /data/3306/mysql.sock -e "読み取りロックでテーブルをフラッシュします。"

マスターデータベースをバックアップする

[root@~]#/application/mysql/bin/mysql -uroot -p123456 -S /data/3306/mysql.sock -e "マスターステータスを表示;" >/backup/mysql.log

[root@~]#/application/mysql/bin/mysqldump -uroot -p123456 -S /data/3306/mysql.sock -A -B |gzip >/backup/mysql.sql.gz

ロックされたテーブルの状態を解除する

[root@~]#/application/mysql/bin/mysql -uroot -p123456 -S /data/3306/mysql.sock -e "テーブルのロックを解除します。"

注意: 上記の操作は、メイン データベースにログインして実行することもできます。ただし、ロック テーブル操作を実行した後は、データをバックアップするために別のウィンドウを開く必要があることに注意してください。データが書き込まれてバックアップ データが不完全になるのを防ぐため、直接終了することはできません。非対話型操作を使用するのが最適です。

マスタースレーブ同期を実現するためにスレーブライブラリを構成する

メインライブラリのバックアップファイルを解凍し、データベースを復元します

[root@バックアップ]#gzip -d mysql.sql.gz

[root@backup ]#/application/mysql/bin/mysql -uroot -p123456 -S /data/3307/mysql.sock < mysql.sql

ログを表示

[root@バックアップ]#cat mysql.log
+------------------+----------+--------------+------------------+
| ファイル | 位置 | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000002 | 424 | | |
+------------------+----------+--------------+------------------+

スレーブライブラリにログインし、次の操作を実行します。

mysql> マスターを変更する
 -> MASTER_HOST='192.168.1.7'、#サーバーIP
 -> MASTER_PORT=3306、#マスターデータベースポート-> MASTER_USER='rep'、#同期ユーザー-> MASTER_PASSWORD='123456'、#同期ユーザーパスワード-> MASTER_LOG_FILE='mysql-bin.000002'、#binlogファイル-> MASTER_LOG_POS=424; #位置ポイントmysql> start slave; #同期を開始

同期ステータスを確認するには60秒お待ちください

[root@backup ]# mysql -S /data/3307/mysql.sock -e "show slave status\G"|egrep "Seconds_Behind_Master|_Running"
   スレーブIO実行中: はい
   スレーブSQL実行中: はい
   マスターより遅れている秒数: 0

上記の状況が発生する限り、マスタースレーブ同期が成功したことを意味します。

マスタースレーブ同期をテストする

メインライブラリにデータベースを作成する

[root@backup ~]# mysql -S /data/3306/mysql.sock -e "データベース tongbuku を作成"

[root@backup ~]# mysql -S /data/3306/mysql.sock -e "データベースを表示"
+-----------------------------+
| データベース |
+-----------------------------+
| 情報スキーマ |
|mysql |
| パフォーマンススキーマ |
| テスト |
|トンブク |
+-----------------------------+

スレーブライブラリの同期ステータスを確認する

[root@backup ~]# mysql -S /data/3307/mysql.sock -e "データベースを表示"
+-----------------------------+
| データベース |
+-----------------------------+
| 情報スキーマ |
|mysql |
| パフォーマンススキーマ |
| テスト |
|トンブク |
+-----------------------------+

これは、マスター スレーブ同期ステータスが正常であることを示します。マスター データベースの新しいデータ テーブルにテーブルを作成し、新しいデータを挿入して、マスター スレーブ同期ステータスをテストすることもできます。

MySQL 関連のコンテンツに興味のある読者は、このサイトの次のトピックをチェックしてください: 「MySQL クエリ スキル」、「MySQL 共通関数の概要」、「MySQL ログ操作スキル」、「MySQL トランザクション操作スキルの概要」、「MySQL ストアド プロシージャ スキル」、および「MySQL データベース ロック関連スキルの概要」

この記事が皆様のMySQLデータベース設計に役立つことを願っています。

以下もご興味があるかもしれません:
  • MySQL マスター スレーブ データベースが同期されない問題を解決する 2 つの方法
  • Mysql データベースのマスタースレーブ同期構成
  • この記事では、MySQLのマスタースレーブ同期の原理を説明します。
  • Docker環境でMySQLを実行し、Binlogを有効にしてマスタースレーブ同期を構成する方法
  • MySQL マスタースレーブ同期、トランザクションロールバックの実装原理
  • MySQL マスタースレーブ同期における server-id の例の詳細な説明
  • MySQLデータベースのマスタースレーブ同期構成と読み取り書き込み分離
  • MySQL マスタースレーブ同期の原理と応用

<<:  vueプロジェクトは特定の領域に透かしを描くことを実現する

>>:  jsBridgeの動作メカニズムを1つの記事で学ぶ

推薦する

固定サイドバーを実現するためのJavaScript

固定サイドバーを実装するにはJavaScriptを使用します。参考までに、具体的な内容は次のとおりで...

CSS 疑似要素と疑似クラスの魔法のような使い方についての簡単な説明

CSS は Web ページで非常に重要な役割を果たします。近年の CSS の発展に伴い、疑似要素/疑...

Apache Tomcat と IDEA エディターの統合に関する詳細なチュートリアル

1. Apache Tomcat 公式サイトから Tomcat 圧縮パッケージをダウンロードします。...

Chrome プラグイン (拡張機能) 開発ガイド (完全デモ)

目次前面に書かれた序文ChromeプラグインとはChrome プラグイン開発を学ぶことの意義は何です...

Windows 10 で MySQL をダウンロードするための詳細なチュートリアル

MySQL のバージョンは、Enterprise Edition と Community Editi...

Web 開発の面接と筆記試験に必須の知識(必読)

HTML のインライン要素とブロックレベル要素の違い:標準的なドキュメント フローでは、ブロック ...

Mysql SSHトンネル接続を使用するための基本的な手順

序文セキュリティ上の理由から、MySQL の root ユーザーはローカルにのみログインでき、外部ネ...

レスポンシブなアコーディオン効果を実現するための CSS3 の詳細な説明

最近、外国人が CSS3 を使用してアコーディオン効果を実現しているビデオを見たので、自分で学習した...

MySQL の文字セットの不一致によって発生する異常な接続テーブルの解決方法

目次1. 解決策2. MySQLの文字セット文字セット検証ルール次のように簡単なテーブルクエリを実行...

MySQL RouterはMySQLの読み取りと書き込みの分離を実装します

目次1. はじめに2. MySQLルーターを構成する2.1 MySQLルーターのインストール2.2 ...

mysql5.6 マスタースレーブ設定と非同期の問題の詳細な説明

目次1. MySQL マスタースレーブレプリケーションの原理2. MySQLのコンパイルとインストー...

WindowsでMysql5.7.17のインストールと起動に失敗する問題を解決する

マシンに初めて MySQL をインストールします。オペレーティングシステムはwin7ですmysqlの...

Docker での Redis の最も詳細なインストールと構成 (画像とテキスト付き)

1. Dockerに適したRedisのバージョンを見つけるdocker hubで見つけることができ...

Truncate Table の使用法の説明

テーブルを切り捨てる個々の行の削除をログに記録せずに、テーブル内のすべての行を削除します。文法 テー...

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

MySQL 8.0.12のインストールと設定方法を記録してみんなで共有します。 1. インストール1...