国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > MySQL > 正文

MySQL定,期自動刪除表

2019-11-02 15:36:31
字體:
來源:轉載
供稿:網友

   單位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;

  +

有內涵網名[www.la240.com/html2017/1/38/]
---------------------------------+

  | 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級別,不能犯迷糊

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 吴堡县| 本溪市| 苏尼特右旗| 崇明县| 巧家县| 即墨市| 津市市| 台山市| 朝阳县| 合肥市| 岳池县| 兴宁市| 尉氏县| 玉山县| 青阳县| 清原| 大渡口区| 临泽县| 榕江县| 常熟市| 海盐县| 闸北区| 美姑县| 清远市| 兴业县| 嵊泗县| 合阳县| 四会市| 乐安县| 渭南市| 许昌县| 陆良县| 石阡县| 襄城县| 民和| 西平县| 肥乡县| 新竹县| 五常市| 望都县| 大同县|