[英]MySQL purging shell script
我有一個具有1.2億行的mysql表,我想編寫一個shell腳本來開始清除該表中不需要的一些無用信息。 問題是我是Shell腳本的超級新手。
我有一個datetime
列,里面有一個unix時間戳。 自最近制定了一項數據保留政策以來,我想刪除過去兩個月內未出現的每一行,該政策只允許我保留2個月的某些數據。
TL; DR需要構建一個shell腳本,該腳本通過使用datetime
列中的unix時間戳來刪除直到最后兩個月數據為止的所有行。
更新:這是我的新shell腳本
#!/bin/sh
i=1
while [ "$i" -ne 0 ]
do
i=mysql -h 127.0.0.1 -u halo_ylh -pCa5d8a88 halo_twittstats < mysqlpurge.sql
sleep 10
done
僅使用current_timestamp和unix_timestamp函數執行會不會更容易:
DELETE FROM Table1
WHERE datetime < unix_timestamp(current_timestamp - interval 2 month)
要從外殼運行它,可以將該命令放在文件script1.sql
,然后使用mysql命令行工具運行它:
mysql db_name < script1.sql
mysql --host ? -user ? -password ? {DB_NAME} < dump_script.sql > data.dat
dump_script.sql將具有SELECT狀態存儲器,以檢索要歸檔的數據。 它將輸出存儲在data.dat中
然后
mysql --host ? -user ? -password ? {DB_NAME} < delete_script.sql
delete_script.sql將使用與dump_script.sql中相同的WHERE子句包含DELETE語句。
確保鎖定表,以免在兩個腳本執行之間寫入任何可能使它進入WHERE子句的腳本,以避免幻影插入被刪除腳本刪除但不包含在轉儲腳本中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.