# To create schema and table: CREATE SCHEMA virtual_test; USE SCHEMA virtual_test; CREATE TABLE `virtual_test`.`log_data` ( `ID` int unsigned NOT NULL AUTO_INCREMENT, `TM_TS` varchar(14) DEFAULT NULL, `DATA` blob, PRIMARY KEY (`ID`) ) ENGINE=InnoDB; # To modify table on replica: ALTER TABLE log_data ADD COLUMN `s_date` date GENERATED ALWAYS AS (cast(`tm_ts` as date)) STORED, ADD COLUMN `v_date` date GENERATED ALWAYS AS (cast(`tm_ts` as date)) VIRTUAL, ADD COLUMN `s_hash` char(40) GENERATED ALWAYS AS (sha(hex(`DATA`))) STORED, ADD COLUMN `v_hash` char(40) GENERATED ALWAYS AS (sha(hex(`DATA`))) VIRTUAL, ADD KEY `k_s_date`(s_date), ADD KEY `k_v_date`(v_date), ADD KEY `k_s_hash`(s_hash), ADD KEY `k_v_hash`(v_hash) ; # To insert random data on primary: INSERT INTO virtual_test.log_data (TM_TS,DATA) SELECT * FRoM (WITH RECURSIVE sequence AS ( SELECT 1 AS level UNION ALL SELECT level + 1 AS value FROM sequence WHERE sequence.level < 10 ) SELECT CURDATE()+0,REPEAT(rand(), 3) FROM sequence) AS F; # To rebuild generated columns & indexes on replica: ALTER TABLE virtual_test.log_data DROP COLUMN `s_date`,DROP COLUMN `v_date`,DROP COLUMN `s_hash`,DROP COLUMN `v_hash`, DROP KEY `k_s_date`,DROP KEY `k_v_date`,DROP KEY `k_s_hash`,DROP KEY `k_v_hash`, ADD COLUMN `s_date` date GENERATED ALWAYS AS (cast(`tm_ts` as date)) STORED, ADD COLUMN `v_date` date GENERATED ALWAYS AS (cast(`tm_ts` as date)) VIRTUAL, ADD COLUMN `s_hash` char(40) GENERATED ALWAYS AS (sha(hex(`DATA`))) STORED, ADD COLUMN `v_hash` char(40) GENERATED ALWAYS AS (sha(hex(`DATA`))) VIRTUAL, ADD KEY `k_s_date`(s_date), ADD KEY `k_v_date`(v_date), ADD KEY `k_s_hash`(s_hash), ADD KEY `k_v_hash`(v_hash) ;