Rumah  >  Artikel  >  pangkalan data  >  Bagaimana untuk melaksanakan kemas kini tambahan dan penyegerakan data dalam MySQL?

Bagaimana untuk melaksanakan kemas kini tambahan dan penyegerakan data dalam MySQL?

WBOY
WBOYasal
2023-07-30 13:09:274514semak imbas

MySQL ialah sistem pengurusan pangkalan data hubungan yang paling biasa digunakan, digunakan untuk menyimpan dan mengurus sejumlah besar data. Dalam aplikasi praktikal, disebabkan kemas kini dan penyegerakan data yang kerap, kecekapan kemas kini dan penyegerakan data telah menjadi isu penting. Artikel ini akan memperkenalkan cara melaksanakan kemas kini tambahan dan penyegerakan data melalui MySQL, dan menyediakan contoh kod.

1. Kemas kini tambahan data

  1. Konsep kemas kini tambahan

Kemas kini tambahan data merujuk kepada operasi mengemas kini hanya item data yang diubah tanpa mengemas kini sepenuhnya semua data. Ini boleh mengurangkan overhed penghantaran dan pemprosesan data dan meningkatkan kecekapan kemas kini data.

  1. Kaedah pelaksanaan kemas kini tambahan

(1) Gunakan cap masa atau nombor versi

untuk menambah medan yang mewakili masa kemas kini dalam jadual data Setiap kali data dikemas kini, kemas kini medan kepada masa semasa. Semasa kemas kini tambahan, anda hanya perlu membandingkan perbezaan antara cap masa semasa dan cap masa sasaran, dan kemudian mengemas kini data perbezaan.

Kod sampel adalah seperti berikut:

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

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

(2) Gunakan log perubahan rekod

untuk menambah jadual log untuk merekodkan operasi perubahan dalam jadual data Setiap kali data dikemas kini, operasi perubahan ditulis jadual log. Semasa kemas kini tambahan, anda hanya perlu membaca operasi perubahan dalam jadual log, dan kemudian mengemas kini data sasaran dengan sewajarnya.

Kod contoh adalah seperti berikut:

-- 创建日志表
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. Penyegerakan data

  1. Konsep penyegerakan data

Penyegerakan data merujuk kepada proses penyalinan data dalam satu pangkalan data ke pangkalan data yang lain. Senario aplikasi biasa termasuk replikasi tuan-hamba, replikasi berbilang tuan, dsb.

  1. Cara melaksanakan penyegerakan data

(1) Replikasi tuan-hamba

Replikasi tuan-hamba merujuk kepada menggunakan satu pangkalan data sebagai pangkalan data induk, bertanggungjawab untuk menulis data dan menyalin data ke satu atau lebih pangkalan data hamba. Pangkalan data hamba hanya bertanggungjawab untuk membaca data dan tidak melakukan operasi penulisan. Replikasi tuan-hamba boleh dicapai melalui fungsi replikasi MySQL.

Kod sampel adalah seperti berikut:

Laksanakan arahan berikut pada pangkalan data induk:

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

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

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

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

Laksanakan arahan berikut pada pangkalan data hamba:

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

-- 开始复制
START SLAVE;

(2) Replikasi berbilang induk

rujuk replikasi berbilang induk menggunakan berbilang pangkalan data sebagai induk pada masa yang sama Pangkalan data mereplikasi data antara satu sama lain. Replikasi berbilang induk boleh dicapai melalui ciri replikasi kumpulan MySQL.

Kod sampel adalah seperti berikut:

Laksanakan arahan berikut pada setiap pangkalan data induk:

-- 开启组复制
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;

Laksanakan arahan berikut pada setiap pangkalan data hamba:

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

-- 开始复制
START GROUP_REPLICATION;

Di atas adalah kaedah untuk melaksanakan kemas kini tambahan dan penyegerakan data dalam MySQL . Melalui kemas kini tambahan, interaksi dan pemprosesan data yang tidak perlu boleh dielakkan melalui penyegerakan data, data boleh disalin dan dikongsi antara pelbagai pangkalan data. Dalam aplikasi praktikal, kaedah yang sesuai dipilih mengikut keperluan dan senario khusus untuk mencapai kemas kini tambahan dan penyegerakan data untuk meningkatkan prestasi dan kebolehpercayaan pangkalan data.

Atas ialah kandungan terperinci Bagaimana untuk melaksanakan kemas kini tambahan dan penyegerakan data dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn