真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

MySQL定期自動(dòng)刪除表

單位8億多條的日志表,經(jīng)過自動(dòng)分表之后,需要自動(dòng)刪除30天前創(chuàng)建的日志表。
但是只是在Master下線這些日志表,而Slave還需要保持在線,以備查詢。
http://blog.itpub.net/29254281/viewspace-1141985/

由于Master-Slave結(jié)構(gòu),在Drop表之前,設(shè)置@@session.sql_log_bin=0,那么Drop的行為就沒有記錄到binlog,所以Slave的日志表就會(huì)被保留。

模擬環(huán)境如下,

  1. MySQL> show tables;
  2. +---------------------------------+
  3. | Tables_in_edmond|
  4. +---------------------------------+
  5. | sod_song_log_2014_1_22_13_18_20|
  6. | sod_song_log_2014_2_22_13_18_20|
  7. | sod_song_log_2014_3_22_13_18_20|
  8. | sod_song_log_2014_4_22_13_18_20|
  9. +---------------------------------+
  10. 4 rowsin set (0.00 sec)
過程如下:

  1. delimiter $$
  2. CREATE procedure drop_table()
  3. BEGIN
  4.             declare t_namevarchar(64);
  5.             declare isFinishedint default false;
  6.             declare log_table_list cursorfor (select table_namefrom information_schema.tableswhere table_schema='EDMOND' and table_namelike'sod_song_log_%');
  7.             declare continue handlerfor not foundset isFinished=true;
  8.             open log_table_list;
  9.             repeat
  10.                 fetch log_table_listinto t_name;
  11.                 if isFinished= falsethen
  12.                     ifdatediff(now(),replace(t_name,'sod_song_log_',''))>30then
  13.                         set @@session.sql_log_bin=0;
  14.                         set @sqltext=concat('drop table ',t_name,';');
  15.                         PREPARE c_tab_statfrom @sqltext;
  16.                         execute c_tab_stat;
  17.                         set @@session.sql_log_bin=1;
  18.                     end if;
  19.                 end if;
  20.                 until isFinished
  21.             end repeat;
  22.             close log_table_list;
  23. END $$
  24. delimiter;
執(zhí)行過程,結(jié)果如下

  1. mysql> call drop_table();
  2. Query OK, 0 rows affected(0.28 sec)

  3. mysql> show tables;
  4. +---------------------------------+
  5. | Tables_in_edmond|
  6. +---------------------------------+
  7. | sod_song_log_2014_4_22_13_18_20|
  8. +---------------------------------+
  9. 1 rowin set (0.00 sec)

  10. mysql> select now() from dual;
  11. +---------------------+
  12. | now() |
  13. +---------------------+
  14. | 2014-04-22 17:58:24|
  15. +---------------------+
  16. 1 rowin set (0.00 sec)
并且binlog中沒有記錄這個(gè)Drop的行為。
配合Linux crontab即可實(shí)現(xiàn)定期自動(dòng)刪除表的功能。

一定不要把sql_log_bin設(shè)置為global級別,不能犯迷糊


分享名稱:MySQL定期自動(dòng)刪除表
網(wǎng)頁鏈接:http://weahome.cn/article/jgcogj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部