2015-05-30
单位8亿多条的日志表,经过自动分表之后,需要自动删除30天前创建的日志表。
但是只是在Master下线这些日志表,而Slave还需要保持在线,以备查询。
由于Master-Slave结构,在Drop表之前,设置@@session.sql_log_bin=0,那么Drop的行为就没有记录到binlog,所以Slave的日志表就会被保留。
模拟环境如下,
mysql> show tables;
+---------------------------------+
| Tables_in_edmond |
+---------------------------------+
| sod_song_log_2014_1_22_13_18_20 |
| sod_song_log_2014_2_22_13_18_20 |
| sod_song_log_2014_3_22_13_18_20 |
| sod_song_log_2014_4_22_13_18_20 |
+---------------------------------+
4 rows in set (0.00 sec)
过程如下:
delimiter $$
CREATE procedure drop_table()
BEGIN
declare t_name varchar(64);
declare isFinished int default false;
declare log_table_list cursor for (select table_name from information_schema.tables where table_schema ='EDMOND' and table_name like'sod_song_log_%');
declare continue handler for not found set isFinished=true;
open log_table_list;
repeat
fetch log_table_list into t_name;
if isFinished = false then
if datediff(now(),replace(t_name,'sod_song_log_',''))>30 then
set @@session.sql_log_bin=0;
set @sqltext=concat('drop table ',t_name,';');
PREPARE c_tab_stat from @sqltext;
execute c_tab_stat;
set @@session.sql_log_bin=1;
end if;
end if;
until isFinished
end repeat;
close log_table_list;
END $$
delimiter ;
执行过程,结果如下
mysql> call drop_table();
Query OK, 0 rows affected (0.28 sec)
mysql> show tables;
+---------------------------------+
| Tables_in_edmond |
+---------------------------------+
| sod_song_log_2014_4_22_13_18_20 |
+---------------------------------+
1 row in set (0.00 sec)
mysql> select now() from dual;
+---------------------+
| now() |
+---------------------+
| 2014-04-22 17:58:24 |
+---------------------+
1 row in set (0.00 sec)
并且binlog中没有记录这个Drop的行为。
配合Linux crontab即可实现定期自动删除表的功能。
一定不要把sql_log_bin设置为global级别,不能犯迷糊
大球吃小球大作战单机版(fightball)下载v2.25 安卓版
其它手游 30.41MB
下载大球吃小球大作战单机破解版(fightball)下载v2.25 安卓最新版
其它手游 30.41MB
下载现代战争2中文直装版下载v1.34.0 安卓破解版
其它手游 59.67MB
下载现代战争2单机破解版下载v1.34.0 安卓版
其它手游 59.67MB
下载现代战争2世界大战单机版下载v1.34.0 安卓版
其它手游 59.67MB
下载萌宠娃娃机游戏下载v1.0.1 安卓版
其它手游 139.1M
下载神圣塔防手机版下载v1.52 安卓版
其它手游 95.94MB
下载第二次世界大战联合组织td游戏下载v1.7.383 安卓版
其它手游 84.99MB
下载给我也整一个吃货姐姐无限提示版下载v1.21 安卓完整版
下载
策略军团破解版下载v1.1.53 安卓版
下载
会说话的安吉拉2中文版下载v2.0.0.529 安卓版
下载
狂冲之路游戏下载v1.4.11 安卓版
下载
二战西方战争手机版下载v1.3 安卓版
下载
动物王国保卫战模拟器2018最新版下载v1.3 安卓版
下载
合成龙的游戏(Merge Dragons!)下载v12.12.2 安卓中文官方版
下载
合成龙破解版无限钻石高阶区最新版本下载v12.12.2 安卓无敌版本
下载