环境准备

见 《数据库恢复环境搭建-MySQL8.4.md》

基础数据准备

新建阿里云数据库实例

使用DTS将whcenter数据库部分表迁移至新实例
alt text
alt text

设置新实例备份策略

alt text

更新数据

# 更新数据
UPDATE `whcenter`.`tb_instockdetail` SET `InStockNum` = 20, `InStockedNum` = 20 WHERE `Id` = 'ID9992087803';
UPDATE `whcenter`.`tb_instockdetail` SET `InStockNum` = 10, `InStockedNum` = 10, `InStockSurplus` = 10 WHERE `Id` = 'ID9992087835';
UPDATE `whcenter`.`tb_instockdetail` SET `InStockNum` = 80, `InStockedNum` = 80 WHERE `Id` = 'ID9992088000';
UPDATE `whcenter`.`tb_outstockdetail` SET `OutStockNum` = 50 WHERE `Id` = 'OD9969345444';
UPDATE `whcenter`.`tb_outstockdetail` SET `OutStockNum` = 60 WHERE `Id` = 'OD9969345487';
UPDATE `whcenter`.`tb_outstockdetail` SET `OutStockNum` = 500 WHERE `Id` = 'OD9969345773';
UPDATE `whcenter`.`tb_stockinfo` SET `StockNum` = 21, `RealityNum` = 21 WHERE `Id` = 104;
UPDATE `whcenter`.`tb_stockinfo` SET `StockNum` = 31, `RealityNum` = 31 WHERE `Id` = 191;
UPDATE `whcenter`.`tb_stockinfo` SET `RealityNum` = 20 WHERE `Id` = 298;
UPDATE `whcenter`.`tb_stockinfo` SET `StockNum` = 48 WHERE `Id` = 4792;

# 删除数据
DELETE FROM whcenter.tb_instockdetail WHERE Id IN ('ID9999040178','ID9999040179','ID9999040180','ID9999040181',
'ID9999040182','ID9999040183','ID9999040184','ID9999040185','ID9999040186','ID9999040187');
DELETE FROM whcenter.tb_instockinfo WHERE Id IN ('IN9999067312','IN9999067313','IN9999067314','IN9999067315',
'IN9999067316','IN9999067317','IN9999067318','IN9999067319','IN9999067320','IN9999067321');
DELETE FROM whcenter.tb_outstockdetail WHERE Id IN ('OD9999881772','OD9999881779','OD9999881780','OD9999881781',
'OD9999881782','OD9999881783','OD9999881784','OD9999881785','OD9999881786','OD9999881787');
DELETE FROM whcenter.tb_outstockinfo WHERE Id IN ('OT9999906003','OT9999906012','OT9999906013','OT9999906014',
'OT9999906015');
DELETE FROM whcenter.tb_wharea WHERE Id >= 523 AND Id <= 532;

# 截断、清空数据(不能还原)
TRUNCATE TABLE tb_whcustinfo;

# 添加数据
DELETE FROM `whcenter`.`tb_warehouse` WHERE Id='WH9999997790';
DELETE FROM `whcenter`.`tb_warehouse` WHERE Id='WH9999997791';
DELETE FROM `whcenter`.`tb_warehouse` WHERE Id='WH9999997792';
DELETE FROM `whcenter`.`tb_warehouse` WHERE Id='WH9999997793';
DELETE FROM `whcenter`.`tb_warehouse` WHERE Id='WH9999997794';
DELETE FROM `whcenter`.`tb_warehouse` WHERE Id='WH9999997795';
DELETE FROM `whcenter`.`tb_warehouse` WHERE Id='WH9999997796';
DELETE FROM `whcenter`.`tb_warehouse` WHERE Id='WH9999997797';
DELETE FROM `whcenter`.`tb_warehouse` WHERE Id='WH9999997798';
DELETE FROM `whcenter`.`tb_warehouse` WHERE Id='WH9999997799';
INSERT INTO `whcenter`.`tb_warehouse` (`Id`, `Name`, `ParentId`, `MainPartId`, `Type`, `Mode`, `LevelCode`, `CustId`, `CustName`, `CustStoreId`, `CustStoreCode`, `CustStoreName`, `IsWaitTransfer`, `Enable`, `IsMultiCheck`, `IsReceipt`, `IsAllowTrans`, `NameSort`, `LastCloseTime`, `Remark`, `CreatedById`, `CreatedAt`, `UpdatedById`, `UpdatedAt`, `DeletedById`, `DeletedAt`, `Deleted`) VALUES ('WH9999997790', '测试3', 'WH9999998006', 'DT0000000001', 0, 4, 2, NULL, NULL, NULL, NULL, NULL, 0, 0, 1, 1, 1, 3, NULL, '123', '76a20000-3e08-0016-598d-08d7f3f2461a', '2020-08-13 15:44:55', NULL, NULL, NULL, NULL, 0);
INSERT INTO `whcenter`.`tb_warehouse` (`Id`, `Name`, `ParentId`, `MainPartId`, `Type`, `Mode`, `LevelCode`, `CustId`, `CustName`, `CustStoreId`, `CustStoreCode`, `CustStoreName`, `IsWaitTransfer`, `Enable`, `IsMultiCheck`, `IsReceipt`, `IsAllowTrans`, `NameSort`, `LastCloseTime`, `Remark`, `CreatedById`, `CreatedAt`, `UpdatedById`, `UpdatedAt`, `DeletedById`, `DeletedAt`, `Deleted`) VALUES ('WH9999997791', '测试2', 'WH9999998006', 'DT0000000001', 0, 4, 2, NULL, NULL, NULL, NULL, NULL, 0, 0, 1, 1, 1, 3, NULL, '123', '76a20000-3e08-0016-598d-08d7f3f2461a', '2020-08-13 15:42:02', NULL, NULL, NULL, NULL, 0);
INSERT INTO `whcenter`.`tb_warehouse` (`Id`, `Name`, `ParentId`, `MainPartId`, `Type`, `Mode`, `LevelCode`, `CustId`, `CustName`, `CustStoreId`, `CustStoreCode`, `CustStoreName`, `IsWaitTransfer`, `Enable`, `IsMultiCheck`, `IsReceipt`, `IsAllowTrans`, `NameSort`, `LastCloseTime`, `Remark`, `CreatedById`, `CreatedAt`, `UpdatedById`, `UpdatedAt`, `DeletedById`, `DeletedAt`, `Deleted`) VALUES ('WH9999997792', '测试1', 'WH9999998006', 'DT0000000001', 0, 4, 2, NULL, NULL, NULL, NULL, NULL, 0, 0, 1, 1, 1, 3, NULL, '123', '76a20000-3e08-0016-598d-08d7f3f2461a', '2020-08-13 15:33:07', NULL, NULL, NULL, NULL, 0);
INSERT INTO `whcenter`.`tb_warehouse` (`Id`, `Name`, `ParentId`, `MainPartId`, `Type`, `Mode`, `LevelCode`, `CustId`, `CustName`, `CustStoreId`, `CustStoreCode`, `CustStoreName`, `IsWaitTransfer`, `Enable`, `IsMultiCheck`, `IsReceipt`, `IsAllowTrans`, `NameSort`, `LastCloseTime`, `Remark`, `CreatedById`, `CreatedAt`, `UpdatedById`, `UpdatedAt`, `DeletedById`, `DeletedAt`, `Deleted`) VALUES ('WH9999997793', '优工ZR20080006李钰泽', 'WH9999998559', 'DT0000000001', 0, 1, 2, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, 1, 1, 15, NULL, NULL, NULL, '2020-08-12 19:00:22', NULL, NULL, NULL, NULL, 0);
INSERT INTO `whcenter`.`tb_warehouse` (`Id`, `Name`, `ParentId`, `MainPartId`, `Type`, `Mode`, `LevelCode`, `CustId`, `CustName`, `CustStoreId`, `CustStoreCode`, `CustStoreName`, `IsWaitTransfer`, `Enable`, `IsMultiCheck`, `IsReceipt`, `IsAllowTrans`, `NameSort`, `LastCloseTime`, `Remark`, `CreatedById`, `CreatedAt`, `UpdatedById`, `UpdatedAt`, `DeletedById`, `DeletedAt`, `Deleted`) VALUES ('WH9999997794', '测试二级仓0028', 'WH9999999998', 'DT0000000001', 0, 0, 2, NULL, NULL, NULL, NULL, NULL, 0, 1, NULL, 1, 1, 9, NULL, '不找零', '4f500000-4c4f-0200-7208-08d30c1369fa', '2020-08-12 14:22:44', '5f2cdd40-1b38-4519-96c4-8fb582a79185', '2020-08-12 14:25:46', NULL, NULL, 0);
INSERT INTO `whcenter`.`tb_warehouse` (`Id`, `Name`, `ParentId`, `MainPartId`, `Type`, `Mode`, `LevelCode`, `CustId`, `CustName`, `CustStoreId`, `CustStoreCode`, `CustStoreName`, `IsWaitTransfer`, `Enable`, `IsMultiCheck`, `IsReceipt`, `IsAllowTrans`, `NameSort`, `LastCloseTime`, `Remark`, `CreatedById`, `CreatedAt`, `UpdatedById`, `UpdatedAt`, `DeletedById`, `DeletedAt`, `Deleted`) VALUES ('WH9999997795', 'G实体二级租赁啊', 'WH9999999998', 'DT0000000001', 0, 4, 2, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 0, 8, NULL, NULL, '76a20000-3e08-0016-9b00-08d81b48e69e', '2020-08-12 13:44:47', NULL, NULL, '7e351f96-d9d9-4504-89d4-41323a0ee321', '2020-08-14 15:04:57', 1);
INSERT INTO `whcenter`.`tb_warehouse` (`Id`, `Name`, `ParentId`, `MainPartId`, `Type`, `Mode`, `LevelCode`, `CustId`, `CustName`, `CustStoreId`, `CustStoreCode`, `CustStoreName`, `IsWaitTransfer`, `Enable`, `IsMultiCheck`, `IsReceipt`, `IsAllowTrans`, `NameSort`, `LastCloseTime`, `Remark`, `CreatedById`, `CreatedAt`, `UpdatedById`, `UpdatedAt`, `DeletedById`, `DeletedAt`, `Deleted`) VALUES ('WH9999997796', 'G实体二级门店啊', 'WH9999999998', 'DT0000000001', 0, 2, 2, 'CR0000005458', 'Fay', NULL, NULL, NULL, 0, 0, 1, 0, 0, 8, NULL, NULL, '76a20000-3e08-0016-9b00-08d81b48e69e', '2020-08-12 13:44:47', NULL, NULL, '7e351f96-d9d9-4504-89d4-41323a0ee321', '2020-08-14 15:05:00', 1);
INSERT INTO `whcenter`.`tb_warehouse` (`Id`, `Name`, `ParentId`, `MainPartId`, `Type`, `Mode`, `LevelCode`, `CustId`, `CustName`, `CustStoreId`, `CustStoreCode`, `CustStoreName`, `IsWaitTransfer`, `Enable`, `IsMultiCheck`, `IsReceipt`, `IsAllowTrans`, `NameSort`, `LastCloseTime`, `Remark`, `CreatedById`, `CreatedAt`, `UpdatedById`, `UpdatedAt`, `DeletedById`, `DeletedAt`, `Deleted`) VALUES ('WH9999997797', 'G实体二级优工啊', 'WH9999999998', 'DT0000000001', 0, 1, 2, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, 0, 0, 8, NULL, NULL, '76a20000-3e08-0016-9b00-08d81b48e69e', '2020-08-12 11:15:33', NULL, NULL, '7e351f96-d9d9-4504-89d4-41323a0ee321', '2020-08-14 15:05:05', 1);
INSERT INTO `whcenter`.`tb_warehouse` (`Id`, `Name`, `ParentId`, `MainPartId`, `Type`, `Mode`, `LevelCode`, `CustId`, `CustName`, `CustStoreId`, `CustStoreCode`, `CustStoreName`, `IsWaitTransfer`, `Enable`, `IsMultiCheck`, `IsReceipt`, `IsAllowTrans`, `NameSort`, `LastCloseTime`, `Remark`, `CreatedById`, `CreatedAt`, `UpdatedById`, `UpdatedAt`, `DeletedById`, `DeletedAt`, `Deleted`) VALUES ('WH9999997798', '二级数据仓测试的呀', 'WH9999998745', 'DT0000000001', 0, 3, 2, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, 1, 1, 9, NULL, NULL, '5fac0000-3e0a-0016-8f6e-08d70b4d97cd', '2020-08-11 20:29:34', NULL, NULL, NULL, NULL, 0);
INSERT INTO `whcenter`.`tb_warehouse` (`Id`, `Name`, `ParentId`, `MainPartId`, `Type`, `Mode`, `LevelCode`, `CustId`, `CustName`, `CustStoreId`, `CustStoreCode`, `CustStoreName`, `IsWaitTransfer`, `Enable`, `IsMultiCheck`, `IsReceipt`, `IsAllowTrans`, `NameSort`, `LastCloseTime`, `Remark`, `CreatedById`, `CreatedAt`, `UpdatedById`, `UpdatedAt`, `DeletedById`, `DeletedAt`, `Deleted`) VALUES ('WH9999997799', '二级数据仓测试的', 'WH9999998745', 'DT0000000001', 0, 3, 2, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, 1, 1, 8, NULL, NULL, '5fac0000-3e0a-0016-8f6e-08d70b4d97cd', '2020-08-11 20:26:05', NULL, NULL, NULL, NULL, 0);

场景1 : 还原整个实例为完备时间点后的某个具体时间点

场景2 : 按库、表还原为完备时间点后的某个具体时间点;

场景3 : 快速还原使用DELETE语句误删除的数据(给出最终生成反向SQL的脚本);

场景4 : 快速还原某个时间点后,使用UPDATE更新过的行数据–合并更新字段;

场景5 : 快速还原某个时间点后,使用UPDATE/REPLACE更新过的行数据,只保留非NULL与非空数据;