這篇文章主要介紹了mysql數據庫表定期備份的實現詳解的相關資料,需要的朋友可以參考下
Mysql數據庫表定期備份的實現
0.背景
實際開發環境中,前端程序需要在給定時間段內,將數據更新/插入到MySQL指定的庫表中。隨著數據量的增多,基礎庫表基數的增長,每更新一次都會有5s左右的卡頓。
改進方案一:批量更新,累計數10條或者100條進行一次更新入庫操作;
改進方案二:將當前日期前1個月之前的數據進行備份操作,并刪除當前庫表中1個月前的數據。經測定,該方法一定程度提高了訪問效率。根因:基礎表基數少,mysql數據庫效率相對提高。
1.庫表的定時備份總結
步驟1:備份Mysql指定數據庫中的制定庫表。
使用 mysqldump,設定周期30天。
步驟2:對于日期60天前的已備份的文件及壓縮包做刪除處理。
步驟3:刪除庫表中在當前日期前30天的數據。(步驟1已經做了備份)。
步驟4:設定定時。
crontab設定。
[root@mysql_bak]#?cat?mysql_bak.sh #!/bin/sh #DATABASE?INFO DB_NAME="ppdb" DB_USER="root" DB_PASS="password" DISPOSE_TABLE="dispose_ticles" RST_TABLE="match_rst" DB_IP=100.55.1.129 BIN_DIR="/usr/bin" BAK_DIR="/home/mysql_bak/data" DATE=`date?+%Y%m%d_%H%M%S` #mkdir?-p?$BAK_DIR #備份包?形成壓縮包 $BIN_DIR/mysqldump?$DB_NAME?$DISPOSE_TABLE?>?$BAK_DIR/$DISPOSE_TABLE.dump_$DATE.sql $BIN_DIR/mysqldump?$DB_NAME?$DISPOSE_TABLE?|?gzip?>?$BAK_DIR/$DISPOSE_TABLE.dump_$DATE.sql.gz $BIN_DIR/mysqldump?$DB_NAME?$RST_TABLE?>?$BAK_DIR/$RST_TABLE.dump_$DATE.sql $BIN_DIR/mysqldump?$DB_NAME?$RST_TABLE?|?gzip?>?$BAK_DIR/$RST_TABLE.dump_$DATE.sql.gz #定期刪除60天的備份包 find?$BAK_DIR?-name?"name_*.sql.gz"?-type?f?-mtime?+60?-exec?rm?{}?;?>?/dev/null?2>&1 #30天前的指定庫表數據刪除操作?(當前時間減去30天) delete_date=`date?--date='30?day?ago'?+%Y-%m-%d` echo?"delete_date=$delete_date" #刪除rst表信息 rst_sql="delete?from?$RST_TABLE?where?update_time?<p><strong>2.定時設置:每隔30天的1點進行備份。</strong></p><pre class="brush:bash;">[root@mysql_bak]#?cat?/etc/crontab SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root HOME=/ #?For?details?see?man?4?crontabs #?Example?of?job?definition: #?.----------------?minute?(0?-?59) #?|?.-------------?hour?(0?-?23) #?|?|?.----------?day?of?month?(1?-?31) #?|?|?|?.-------?month?(1?-?12)?OR?jan,feb,mar,apr?... #?|?|?|?|?.----?day?of?week?(0?-?6)?(Sunday=0?or?7)?OR?sun,mon,tue,wed,thu,fri,sat #?|?|?|?|?| #?*?*?*?*?*?user-name?command?to?be?executed 0?1?*/30?*?*?/home/mysql_bak/mysql_bak.sh?>?/dev/null?2>&1 [root@mysql_bak]#?crontab?-e 0?1?*/30?*?*?/home/mysql_bak/mysql_bak.sh?>?/dev/null?2>&1
重啟crontab服務?
service?crond?restart
? 版權聲明
文章版權歸作者所有,未經允許請勿轉載。
THE END