この記事では、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プロジェクトは特定の領域に透かしを描くことを実現する
1. コモンズCommonjsはNode.jsのカスタムモジュールですCommonjs 仕様は、Ja...
KILL [接続 | クエリ] processlist_id MySQL では、各接続は個別のスレ...
目次序文SSHとは何かssh は何に使用されますか? sshの使い方ssh 再修正要約する序文ssh...
Linux/Mac の MySQL パスワードを忘れた場合はどうすればいいですか?心配しないでくださ...
目次1: webpackをビルドする2. データハイジャック3: まとめ1: webpackをビルド...
序文add_header は、headers モジュールで定義されたディレクティブです。名前が示すよ...
WeChatアプレット計算機の例、参考までに、具体的な内容は次のとおりです。インデックス.wxml ...
本から学ぶことは常に浅はかで、これがさらなるダウンタイムを引き起こすことには決して気づきません......
最近、インターフェースを描画しているときに、インターフェースに垂直線を描画し、この垂直線の高さが親 ...
1. 概要Docker イメージを作成するには、次の 3 つの方法があります。 Docker コミッ...
序文サーバーシステム環境は、CentOS 6.5 (最終) です。 FFmpeg をサーバーに正常に...
さっそく、コードを直接投稿します。具体的なコードは次のとおりです。 <!--方法 1: onf...
書き順の重要性ブラウザのリフローを減らし、ブラウザのDOMレンダリングパフォーマンスを向上させる①:...
JavaScriptで格納可能なセカンダリメニューを実装するための具体的なコードは参考までに。具体...
目次シンボルデータタイプシンボルが表示される理由シンボルの特徴シンボルの応用rbオブジェクトにupメ...