ホームページ >データベース >mysql チュートリアル >MySQL - データベースのデュアルマシンホットスタンバイ構成方法とコード例
MySQL データベースには増分バックアップ メカニズムがありません。データの量が大きすぎる場合、バックアップは大きな問題になります。幸いなことに、MySQL データベースにはマスター/スレーブ バックアップ メカニズムが備わっており、実際にはマスター データベース内のすべてのデータが同時にバックアップ データベースに書き込まれます。
1. MySQL データベースには増分バックアップのメカニズムがありません。データの量が大きすぎる場合、バックアップは大きな問題になります。幸いなことに、MySQL データベースにはマスター/スレーブ バックアップ メカニズムが備わっており、実際にはマスター データベース内のすべてのデータが同時にバックアップ データベースに書き込まれます。 mysqlデータベースのホットバックアップを実装します。
2. デュアルマシンのホットバックアップを実装する場合は、まずマスター/スレーブデータベースサーバーのバージョン要件を理解する必要があります。ホット スタンバイを実現するには、MySQL バージョンが 3.2 以降である必要があります。もう 1 つの基本原則は、スレーブ データベースのデータベース バージョンはマスター サーバーのデータベース バージョンよりも高くてもかまいませんが、マスター サーバーのデータベースのバージョンよりも低くすることはできないということです。
まず、メインサーバーのバージョンがホットスタンバイをサポートしているかどうかを確認します。次に、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';
メインサーバーの設定ファイルを設定した後、データベースを再起動します
データベースをロックします
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;
を起動します。 , 開始した場合 パラメータ「--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 //报告错误的服务器
mysql> slave stop; //停止slave的服务
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;
ログが大きすぎる場合、ログをクリアする手順は次のとおりです:
mysql> SHOW PROCESSLIST\G //可以查看mysql的进程看看是否有监听的进程
mysql> FLUSH TABLES WITH READ LOCK;
mysql> slave stop;
show master status; +---------------+----------+--------------+------------------+ | File | Position | Binlog_do_db | Binlog_ignore_db | +---------------+----------+--------------+------------------+ | louis-bin.001 | 79 | | mysql | +---------------+----------+--------------+------------------+
mysql> UNLOCK TABLES;のスレーブを起動します。
以上がMySQL - データベースのデュアルマシンホットスタンバイ構成方法とコード例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。