ホームページ >データベース >mysql チュートリアル >MySQL - データベースのデュアルマシンホットスタンバイ構成方法とコード例

MySQL - データベースのデュアルマシンホットスタンバイ構成方法とコード例

黄舟
黄舟オリジナル
2017-03-11 14:01:40998ブラウズ

MySQL データベースには増分バックアップ メカニズムがありません。データの量が大きすぎる場合、バックアップは大きな問題になります。幸いなことに、MySQL データベースにはマスター/スレーブ バックアップ メカニズムが備わっており、実際にはマスター データベース内のすべてのデータが同時にバックアップ データベースに書き込まれます。

1. 説明

1. MySQL データベースには増分バックアップのメカニズムがありません。データの量が大きすぎる場合、バックアップは大きな問題になります。幸いなことに、MySQL データベースにはマスター/スレーブ バックアップ メカニズムが備わっており、実際にはマスター データベース内のすべてのデータが同時にバックアップ データベースに書き込まれます。 mysqlデータベースのホットバックアップを実装します。
2. デュアルマシンのホットバックアップを実装する場合は、まずマスター/スレーブデータベースサーバーのバージョン要件を理解する必要があります。ホット スタンバイを実現するには、MySQL バージョンが 3.2 以降である必要があります。もう 1 つの基本原則は、スレーブ データベースのデータベース バージョンはマスター サーバーのデータベース バージョンよりも高くてもかまいませんが、マスター サーバーのデータベースのバージョンよりも低くすることはできないということです。

2. 構成

1. メインサーバーを構成します

a. バージョンを確認します

まず、メインサーバーのバージョンがホットスタンバイをサポートしているかどうかを確認します。次に、my.cnf (UNIX 系) または my.ini (Windows) の mysqld 設定ブロックの設定に log-bin (データベース変更ログの記録) があるかどうかを確認します。これは、mysql のレプリケーション メカニズムがログベースのレプリケーション メカニズムであるためです。 、メインサーバーは変更ログをサポートする必要があります。次に、ログを書き込むデータベースまたはログを書き込まないデータベースを設定します。この方法では、関心のあるデータベースへの変更のみがデータベースのログに書き込まれます。

server-id=1 //数据库的id这个应该默认是1就不用改动
log-bin=log_name //日志文件的名称,这里可以制定日志到别的目录 如果没有设置则默认主机名的一个日志名称
binlog-do-db=db_name //记录日志的数据库
binlog-ignore-db=db_name //不记录日志的数据库

複数のデータベースがある場合は、「,」を使用して区切ります
その後、データベースを同期するためのユーザーアカウントを設定します

mysql> GRANT REPLICATION SLAVE ON *.*
-> TO 'repl'@'%.mydomain.com' IDENTIFIED BY 'slavepass';

4.0.2より前のバージョンでは、REPLICATIONがサポートされていないため、次のステートメントを使用して実現しますこの機能

mysql> GRANT FILE ON *.*
-> TO 'repl'@'%.mydomain.com' IDENTIFIED BY 'slavepass';

メインサーバーの設定ファイルを設定した後、データベースを再起動します

b. 既存のデータベースをロックし、現在のデータをバックアップします

データベースをロックします

mysql> FLUSH TABLES WITH READ LOCK;

バックアップには2つの方法があります1 つは、mysql データ ディレクトリに直接入力し、データベースをバックアップするために必要なフォルダーをパッケージ化する方法です。データベースをバックアップするには最初の方法を使用することをお勧めします
c. メイン サーバーのステータス

mysql> show master status\G;
+---------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+---------------+----------+--------------+------------------+
| mysql-bin.003 | 73 | test | manual,mysql |
+---------------+----------+--------------+------------------+

は、後で使用できるようにファイルと位置の項目の値を記録します。
d. 次にデータベースのロックを開きます

mysql> UNLOCK TABLES;

4.スレーブ サーバーを構成します

a. 最初にデータベース構成ファイルを設定します
b. マスター データベース サーバーからバックアップしたデータベースをスレーブ サーバーにインポートします
c. スレーブ データベース

を起動します。 , 開始した場合 パラメータ「--skip-slave-start」が追加されていない場合は、mysql

server-id=n //设置数据库id默认主服务器是1可以随便设置但是如果有多台从服务器则不能重复。
master-host=db-master.mycompany.com //主服务器的IP地址或者域名
master-port=3306 //主数据库的端口号
master-user=pertinax //同步数据库的用户
master-password=freitag //同步数据库的密码
master-connect-retry=60 //如果从服务器发现主服务器断掉,重新连接的时间差
report-host=db-slave.mycompany.com //报告错误的服务器
dを入力して、メインサーバー
mysql> slave stop; //停止slave的服务
eの各種パラメータを設定し、データベースを同期するスレッドを開始します
mysql> CHANGE MASTER TO
-> MASTER_HOST='master_host_name', //主服务器的IP地址
-> MASTER_PORT=3306, //主服务器端口
-> MASTER_USER='replication_user_name', //同步数据库的用户
-> MASTER_PASSWORD='replication_password', //同步数据库的密码
-> MASTER_LOG_FILE='recorded_log_file_name', //主服务器二进制日志的文件名(前面要求记住的参数)
-> MASTER_LOG_POS=recorded_log_position; //日志文件的开始位置(前面要求记住的参数)

View。データベース状況の同期。同期が成功したら、おめでとうございます!
マスターサーバーとスレーブサーバーのステータスを確認します

mysql> slave start;

3. ログをクリアします

ログが大きすぎる場合、ログをクリアする手順は次のとおりです:

1. マスターデータベースをロックします

mysql> SHOW PROCESSLIST\G //可以查看mysql的进程看看是否有监听的进程

2. . スレーブデータベースのスレーブを停止します

mysql> FLUSH TABLES WITH READ LOCK;

3. メインデータベースのログファイル名とログファイルの位置を確認します

mysql> slave stop;

4. メインデータベースの情報を更新します。スレーブデータベース

show master status;
+---------------+----------+--------------+------------------+
| File | Position | Binlog_do_db | Binlog_ignore_db |
+---------------+----------+--------------+------------------+
| louis-bin.001 | 79 | | mysql |
+---------------+----------+--------------+------------------+

6. スレーブデータベース

mysql> UNLOCK TABLES;
のスレーブを起動します。

以上がMySQL - データベースのデュアルマシンホットスタンバイ構成方法とコード例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。