mysql 分表同步,Mysql分库分表/自动同步数据

1、Mysql 分表

---创建 pfsa_pana_trace_data_c201711 子表

CREATE TABLE `pfsa_pana_trace_data_c201711` (

`LineNum` int(11) DEFAULT NULL,

`LineName` varchar(20) DEFAULT NULL,

`CellNum` int(11) DEFAULT NULL,

`CellName` varchar(40) DEFAULT NULL,

`Lane` varchar(7) DEFAULT NULL,

`Stage` varchar(7) DEFAULT NULL,

`PCBName` varchar(255) DEFAULT NULL,

`SetupName` varchar(100) DEFAULT NULL,

`ProdId` varchar(100) DEFAULT NULL,

`PanelBarCode` varchar(200) DEFAULT NULL,

`Side` varchar(7) DEFAULT NULL,

`SerialNum` varchar(100) DEFAULT NULL,

`BoardEntryTime` datetime DEFAULT NULL,

`ReleaseTime` datetime DEFAULT NULL,

`ZNum` int(11) DEFAULT NULL,

`SlotNum` int(11) DEFAULT NULL,

`SubSlotNum` int(11) DEFAULT NULL,

`PartNum` varchar(40) DEFAULT NULL,

`ExpectedPart` varchar(40) DEFAULT NULL,

`LotNum` varchar(40) DEFAULT NULL,

`Vendor` varchar(40) DEFAULT NULL,

`Feeder` varchar(30) DEFAULT NULL,

`Quantity` float DEFAULT NULL,

`PartTimeOn` datetime DEFAULT NULL,

`PartTimeOff` datetime DEFAULT NULL,

`MountOperator` varchar(60) DEFAULT NULL,

`UserData` varchar(40) DEFAULT NULL,

`PrimaryProductID` varchar(40) DEFAULT NULL,

`MATERIALID` varchar(30) DEFAULT NULL,

`MCID` varchar(30) DEFAULT NULL,

`PARTCLASS` varchar(30) DEFAULT NULL,

`PATTERNSERIALNUM` varchar(40) DEFAULT NULL,

`LOCATION` varchar(30) DEFAULT NULL,

`UserData2` varchar(40) DEFAULT NULL,

`UserData3` varchar(40) DEFAULT NULL,

`UserData4` varchar(40) DEFAULT NULL,

`UserData5` varchar(40) DEFAULT NULL,

`SideCopy` varchar(7) DEFAULT NULL,

KEY `PanelBarCode` (`PanelBarCode`)

) ENGINE=MyISAM DEFAULT CHARSET=utf8;

-- 存储引擎 必须为 MyISAM

--创建 pfsa_pana_trace_data_c201712 子表

create table if not exists pfsa_pana_trace_data_c201712 like pfsa_pana_trace_data_c201711;

-- 将大表 指定数据 克隆到指定子表

INSERT pfsa_pana_trace_data_c201711 SELECT * FROM pfsa_pana_trace_data where ReleaseTime>='2017-11-01 00:00:00' and ReleaseTime

-- 重新创建一个和 原来大表一样的 merge 表(此表类似于视图,其内不存任何数据)

CREATE TABLE `pfsa_pana_trace_data` (

`LineNum` int(11) DEFAULT NULL,

`LineName` varchar(20) DEFAULT NULL,

`CellNum` int(11) DEFAULT NULL,

`CellName` varchar(40) DEFAULT NULL,

`Lane` varchar(7) DEFAULT NULL,

`Stage` varchar(7) DEFAULT NULL,

`PCBName` varchar(255) DEFAULT NULL,

`SetupName` varchar(100) DEFAULT NULL,

`ProdId` varchar(100) DEFAULT NULL,

`PanelBarCode` varchar(200) DEFAULT NULL,

`Side` varchar(7) DEFAULT NULL,

`SerialNum` varchar(100) DEFAULT NULL,

`BoardEntryTime` datetime DEFAULT NULL,

`ReleaseTime` datetime DEFAULT NULL,

`ZNum` int(11) DEFAULT NULL,

`SlotNum` int(11) DEFAULT NULL,

`SubSlotNum` int(11) DEFAULT NULL,

`PartNum` varchar(40) DEFAULT NULL,

`ExpectedPart` varchar(40) DEFAULT NULL,

`LotNum` varchar(40) DEFAULT NULL,

`Vendor` varchar(40) DEFAULT NULL,

`Feeder` varchar(30) DEFAULT NULL,

`Quantity` float DEFAULT NULL,

`PartTimeOn` datetime DEFAULT NULL,

`PartTimeOff` datetime DEFAULT NULL,

`MountOperator` varchar(60) DEFAULT NULL,

`UserData` varchar(40) DEFAULT NULL,

`PrimaryProductID` varchar(40) DEFAULT NULL,

`MATERIALID` varchar(30) DEFAULT NULL,

`MCID` varchar(30) DEFAULT NULL,

`PARTCLASS` varchar(30) DEFAULT NULL,

`PATTERNSERIALNUM` varchar(40) DEFAULT NULL,

`LOCATION` varchar(30) DEFAULT NULL,

`UserData2` varchar(40) DEFAULT NULL,

`UserData3` varchar(40) DEFAULT NULL,

`UserData4` varchar(40) DEFAULT NULL,

`UserData5` varchar(40) DEFAULT NULL,

`SideCopy` varchar(7) DEFAULT NULL,

KEY `PanelBarCode` (`PanelBarCode`)

) ENGINE = MRG_MyISAM -- 存储引擎 必须为 MRG_MyISAM

UNION = (`pfsa_pana_trace_data_c201711`,`pfsa_pana_trace_data_c201712`,`pfsa_pana_trace_data_c201801`) -- 要 merge 的子表

DROP PROCEDURE if EXISTS `update_merge_pro`;

DELIMITER //

CREATE PROCEDURE `update_merge_pro`()

BEGIN

declare tableNames varchar(1000);

declare newTableName varchar(100);

-- 方便测试 改为以秒命名表名

select date_format(now(),'%Y%m%d%H%i%s') into newTableName;

set @createsql=concat('create table if not exists `pfsa_pana_trace_data_c',newTableName,'` like pfsa_pana_trace_data_c201711;');

-- select @createsql;

prepare createsql from @createsql;

EXECUTE createsql;

SELECT group_concat(distinct TABLE_NAME) into tableNames FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME LIKE 'pfsa_pana_trace_data_c%' ;

set @altersql=concat('alter table pfsa_pana_trace_data UNION=(',tableNames,') ;');

select @altersql;

prepare altersql from @altersql;

EXECUTE altersql;

END;

//

DELIMITER ;

-- call update_merge_pro();

-- 定时事件

use `test_myisam_db`;

use `test_myisam_db`;

# 如果原来存在该名字的任务计划则先删除

drop event if exists merge_job;

# 设置分隔符为 '$$' ,mysql默认的语句分隔符为 ';' ,这样在后续的 create 到 end 这段代码都会看成是一条语句来执行

DELIMITER $$

# 创建计划任务,设置第一次执行时间为'2014-07-30 10:00:00',并且每天执行一次

create event merge_job

on schedule every 10 SECOND -- 每十秒一次 方便测试

do

# 开始该计划任务要做的事

begin

-- do something 编写你的计划任务要做的事

call update_merge_pro();

-- 结束计划任务

end $$

# 将语句分割符设置回 ';'

DELIMITER ;

-- 查询事件状态

select * from mysql.event ;

-- 关闭事件:

ALTER EVENT merge_job DISABLE;

-- 开启事件:

ALTER EVENT merge_job ENABLE;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值