この記事では、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です。
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データベース設計に役立つことを願っています。 以下もご興味があるかもしれません:
|
<<: vueプロジェクトは特定の領域に透かしを描くことを実現する
MySQL proxies_priv(シミュレートされたロール)を使用して同様のユーザーグループ管理...
1. DOM要素を挿入、更新、または削除するときに、適切な場合は要素にスタイルクラス名を追加します。...
問題現象最近、sysbench を使用して MySQL をテストしました。テストに長い時間がかかった...
MySQL 外部キー制約 (FOREIGN KEY) はテーブルの特別なフィールドであり、主キー制約...
問題を見つける今日は、vue ファイルにローカル画像を導入する際に問題が発生したので、この記事を書き...
背景以前、当社のプロジェクト チームは、Windows、Linux、macOS の 3 つの主要なオ...
この記事では、Vueの簡単なコメント機能を実装するための具体的なコードを参考までに共有します。具体的...
この記事では、MySQL 8.0.15をダウンロードしてインストールするための具体的な手順を参考まで...
メインライブラリの構成1. MySQLを設定する vim /etc/my.cn # ファイルに次の内...
この記事では、ポップアップウィンドウをクリックしたときにポップアップログインボックスを実現するための...
目次JSONPとはJSONP 原則JSONP実装1. Ajaxでクロスドメインリクエストが行われると...
目次序文1. イントラネットDNS AレコードとMXレコードを構成する2. メールサーバの初期化設定...
この記事では、Vueカスタムツリーコントロールの使い方を参考までに紹介します。具体的な内容は次のとお...
文章さて、次はレンダリングを見せましょう。画像を見て初めて理解することに興味が湧くでしょう。そうでな...
デフォルトでは、セルの幅と高さはコンテンツに応じて自動的に調整されますが、セルの幅と高さを手動で設定...