ホームページ  >  記事  >  データベース  >  MySQL でデータの増分更新と同期を実装するにはどうすればよいですか?

MySQL でデータの増分更新と同期を実装するにはどうすればよいですか?

WBOY
WBOYオリジナル
2023-07-30 13:09:274515ブラウズ

MySQL は、最も一般的に使用されているリレーショナル データベース管理システムの 1 つで、大量のデータを保存および管理するために使用されます。実際のアプリケーションでは、データの更新と同期が頻繁に行われるため、データの更新と同期の効率が重要な問題となっています。この記事では、MySQL を介してデータの増分更新と同期を実装する方法を紹介し、コード例を示します。

1. データ増分更新

  1. 増分更新の概念

データ増分更新とは、変更されたデータ項目のみを更新することを指し、すべてのデータが更新されます。完全には更新されていません。これにより、データ送信と処理のオーバーヘッドが削減され、データ更新の効率が向上します。

  1. インクリメンタル更新の実装方法

(1) タイムスタンプまたはバージョン番号を使用

データテーブルに更新時刻を示すフィールドを追加します。データが更新されると、このフィールドを現在時刻に更新します。インクリメンタル更新では、現在のタイムスタンプとターゲットのタイムスタンプの差分を比較し、差分データを更新するだけで済みます。

サンプル コードは次のとおりです:

-- 添加时间戳字段
ALTER TABLE table_name ADD COLUMN update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;

-- 增量更新
SELECT * FROM table_name WHERE update_time > '目标时间戳';

(2) レコード変更ログを使用する

データ テーブルに変更操作を記録するためのログ テーブルを追加します。データが更新され、変更操作がログ テーブルに書き込まれます。増分更新中は、ログ テーブル内の変更操作を読み取り、それに応じてターゲット データを更新するだけで済みます。

サンプル コードは次のとおりです:

-- 创建日志表
CREATE TABLE log_table (
    id INT AUTO_INCREMENT PRIMARY KEY,
    table_name VARCHAR(100),
    record_id INT,
    operation VARCHAR(10),
    update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

-- 添加记录变更操作
INSERT INTO log_table (table_name, record_id, operation) VALUES ('table_name', record_id, 'update');

-- 增量更新
SELECT * FROM table_name WHERE id IN (SELECT record_id FROM log_table WHERE table_name = 'table_name' AND operation = 'update');

2. データ同期

  1. データ同期の概念

データ同期とは、データベースの同期 データベースから別のデータベースにデータをコピーするプロセス。一般的なアプリケーション シナリオには、マスター/スレーブ レプリケーション、マルチマスター レプリケーションなどが含まれます。

  1. データ同期の実装方法

(1) マスター/スレーブ レプリケーション

マスター/スレーブ レプリケーションとは、1 つのデータベースをマスター データベースとして使用し、データの書き込みを担当し、データを 1 つ以上のスレーブ データベースにコピーします。スレーブ データベースはデータの読み取りのみを担当し、書き込み操作は実行しません。マスター/スレーブのレプリケーションは、MySQL のレプリケーション機能によって実現できます。

サンプル コードは次のとおりです。

マスター データベースで次のコマンドを実行します。

-- 开启二进制日志
SET GLOBAL log_bin = ON;

-- 创建复制用户
CREATE USER 'repl' IDENTIFIED BY 'password';

-- 授予复制权限
GRANT REPLICATION SLAVE ON *.* TO 'repl';

-- 查看当前主数据库的状态
SHOW MASTER STATUS;

スレーブ データベースで次のコマンドを実行します。

-- 设置从数据库的复制参数
CHANGE MASTER TO 
    MASTER_HOST = '主数据库的IP地址',
    MASTER_USER = 'repl',
    MASTER_PASSWORD = 'password',
    MASTER_LOG_FILE = '主数据库的二进制日志文件名',
    MASTER_LOG_POS = 主数据库的二进制日志位置;

-- 开始复制
START SLAVE;

(2) マスター レプリケーションの詳細

マルチマスター レプリケーションとは、複数のデータベースを同時にマスター データベースとして使用し、相互にデータをレプリケートすることを指します。マルチマスター レプリケーションは、MySQL のグループ レプリケーション機能を通じて実現できます。

サンプル コードは次のとおりです。

各マスター データベースで次のコマンドを実行します。

-- 开启组复制
SET GLOBAL group_replication_bootstrap_group = ON;

-- 创建组复制用户
CREATE USER 'repl' IDENTIFIED BY 'password';

-- 授予组复制权限
GRANT REPLICATION SLAVE ON *.* TO 'repl';

-- 查看当前主数据库的状态
SHOW MASTER STATUS;

-- 结束组复制
SET GLOBAL group_replication_bootstrap_group = OFF;

各スレーブ データベースで次のコマンドを実行します。

-- 设置从数据库的复制参数
SET GLOBAL group_replication_group_seeds = '主数据库1的IP地址:端口,主数据库2的IP地址:端口,...';

-- 开始复制
START GROUP_REPLICATION;

上記は、MySQL でデータの増分更新と同期を実現する方法です。増分更新により、不必要なデータの対話と処理を回避でき、データの同期により、複数のデータベース間でデータをコピーして共有できます。実際のアプリケーションでは、特定のニーズとシナリオに応じて適切な方法が選択され、データの増分更新と同期を実現して、データベースのパフォーマンスと信頼性を向上させます。

以上がMySQL でデータの増分更新と同期を実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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