ホームページ >データベース >mysql チュートリアル >MySQLのレプリケーション機能を利用してデータのバックアップと災害復旧を実現する方法

MySQLのレプリケーション機能を利用してデータのバックアップと災害復旧を実現する方法

WBOY
WBOYオリジナル
2023-08-06 11:46:45953ブラウズ

MySQL のレプリケーション機能を使用してデータのバックアップと災害復旧を実現する方法

はじめに:
MySQL は一般的に使用されるリレーショナル データベース管理システムであり、実際のアプリケーションでは、データのセキュリティと高可用性を確保するために、多くの場合、データのバックアップと災害復旧が必要になります。 MySQL のレプリケーション機能でデータのバックアップとディザスタリカバリを実現する この記事では、MySQL のレプリケーション機能を使ってデータのバックアップとディザスタリカバリを実現する方法とコード例を紹介します。

1. レプリケーション機能の紹介
MySQL のレプリケーション機能はバイナリ ログ (Binary Log) によって実装されています。簡単に言うと、レプリケーション機能は、プライマリ データベースのすべての書き込み操作をバイナリ ログに記録し、バイナリ ログの情報に基づいてセカンダリ データベースからこれらの操作を再生することで、セカンダリ データベースのデータがバイナリ ログと一致していることを保証します。プライマリデータベース。

2. メイン データベースのセットアップ

  1. レプリケーション アカウントの生成
    まず、メイン データベースにレプリケーション用のアカウントを生成します。次のステートメントを使用して、メイン データベースに repl という名前のアカウントを作成し、その repl アカウントにレプリケーション アクセス許可を付与できます。
CREATE USER 'repl'@'%' IDENTIFIED BY 'password'; -- '%'代表允许来自任意IP地址访问
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
FLUSH PRIVILEGES;
  1. バイナリ ログを有効にする
    メイン データベースの構成ファイル (my.cnf) でバイナリ ログを有効にします。次の設定を my.cnf ファイルに追加します。
log-bin=mysql-bin

次に、MySQL サービスを再起動します。

  1. メイン データベースのステータスを取得する
    次のステートメントを使用して、後で使用するためにメイン データベースのステータス情報を取得します。
SHOW MASTER STATUS;

データベースで使用される「ファイル」フィールドと「位置」フィールドの値を記録します。

3. スレーブ データベースの設定

  1. スレーブ データベースのレプリケーション構成の設定
    スレーブ データベース構成ファイル (my.cnf) を次のように構成します。 # #
    server-id=2  -- 从数据库的唯一标识,不同数据库必须有不同的值
  2. 次に、MySQL サービスを再起動します。

レプリケーションの開始
    スレーブ データベースで次のステートメントを使用してレプリケーションを開始します:

  1. CHANGE MASTER TO
      MASTER_HOST='主库IP', -- 主数据库的IP地址
      MASTER_PORT=主库端口,  -- 主数据库的端口
      MASTER_USER='repl',
      MASTER_PASSWORD='repl账号的密码',
      MASTER_LOG_FILE='主库的File字段值',
      MASTER_LOG_POS=主库的Position字段值;
    
    START SLAVE;
  2. SHOW SLAVE STATUS; コマンドを使用して、スレーブ データベースのレプリケーション ステータスを表示します。スレーブ データベースを作成し、Slave_IO_Running フィールドと Slave_SQL_Running フィールドが両方とも Yes であることを確認します。

4. データ バックアップと災害復旧テスト

データ バックアップ
    メイン データベースにテスト テーブルを作成し、データを挿入します。

  1. CREATE DATABASE test;
    USE test;
    CREATE TABLE tb_test (id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(20));
    
    INSERT INTO tb_test (name) VALUES ('张三'),('李四'),('王五');
    
    SELECT * FROM tb_test;
  2. 次に、マスター データベースのデータが自動的に同期されるかどうかをスレーブ データベースで確認します。

災害復旧テスト
    メイン データベースのダウンタイムをシミュレートするには、メイン データベースの MySQL サービスを停止してシミュレートできます。

  1. マスター データベースが停止した後も、スレーブ データベースは動作し続け、スレーブ データベースの読み取りと書き込みが可能です。

完了後、メイン データベースの MySQL サービスを再起動します。メイン データベースが正常に戻ると、スレーブ データベースはメイン データベースのデータを自動的に同期します。

5. まとめ

MySQL のレプリケーション機能により、データのバックアップや災害復旧を簡単に実現できます。マスター データベースとスレーブ データベースをセットアップするプロセスは比較的単純で、必要な構成とコマンドはわずかです。レプリケーション機能を使用すると、マスター データベースとスレーブ データベースの間でデータの同期を確保し、マスター データベースがダウンした場合でもスレーブ データベースが動作し続けることができるため、システムの可用性が向上します。


コード例:

以上がMySQLのレプリケーション機能を利用してデータのバックアップと災害復旧を実現する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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