sqlå®¡æ ¸ä¸»è¦å®æ两æ¹é¢çç®ç.
1ãé¿å
æ§è½å¤ªå·®çsqlè¿å
¥ç产系ç»,导è´æ´ä½æ§è½éä½
2ãæ£æ¥å¼å设计çç´¢å¼æ¯å¦åç,æ¯å¦éè¦æ·»å ç´¢å¼
第ä¸ç¹æ¯SQLå®¡æ ¸ææ ¸å¿çå°æ¹,é¿å
ä¹±ä¸å
«ç³çsqlå½±å线ä¸æ§è½,çè³å¯¼è´çº¿ä¸ç³»ç»å´©æº.
第äºç¹æ¯å±äºå»ºæ¨¡çèç´,è¦è§£å³å»ºæ¨¡çæ好åæ³æ¯DBAåä¸é¡¹ç®åæå®¡æ ¸,ç±DBA建模,å¦æDBA人åèµæºä¸è¶³,é£ä¹å°±å®æç±DBA对å¼å人åè¿è¡å¹è®.ç¶ååç°å»ºæ¨¡å¤ªççå°±æ£KPI.
ç°å¨å¾å¤å
¬å¸é½æ¯äººèæ¥å®æSQLå®¡æ ¸ç,人èå®¡æ ¸å¯¹dbaçè¦æ±è¾é«,éè¦æä¸äºä»£ç ,å¦å¤æ¯è´¹æ¶è´¹å,æ¯ç«ä¸è¬å
¬å¸å å个å¼å,对åºä¸ä¸ªDBAï¼èä¸DBAè¿è¦å¹²å¾å¤å
¶ä»çäºæ
.
å¦ä½å°DBAä»äººèSQLå®¡æ ¸ä¸è§£æ¾åºæ¥å¢?
æè·¯å
¶å®å¾ç®å:
1ãè·åç¨åºè¦æ§è¡çSQL
2ã对è¦æ§è¡çSQLååæ,å¯ä»¥å åç§åææ¡ä»¶æ¥å¤æè¿ä¸ªSQLæ¯å¦å¯ä»¥èªå¨å®¡æ ¸éè¿,æªéè¿å®¡æ ¸çéè¦äººå·¥å¤ç.
3ãé
ååæçæ
¢æ¥è¯¢æ¥å¿åæç³»ç»å®æé¿æççæ§.
å¼æºç解å³æ¹æ¡ä¸»è¦ææ·å®ä¸¹è£sqlautoreviewç³»ç».å¯ä»¥å¨githubä¸æç´¢å°.
ä½æ¯è¿ä¸ªç³»ç»ä¸»è¦æ¯åºäºjava sqlmapfile.xml解å³èªå¨å建索å¼çé®é¢,对æºæ°æ®æè¦æ±,并ä¸æ¯éè¿è§£æSQLç»ææ¥å设SQLçæ§è¡è®¡å,ä¸æ¯ç¹å«åç¡®,并ä¸ä¸è½å¤å¾å¥½çåºåæ°sqlè¿æ¯èsql.
æ以产çäºä¸ä¸ªæ°çæ¹æ¡:
1ã为ææçæ§è¡è¿çsql产çä¸ä¸ªfigerprint
2ãåºäºæ
¢æ¥è¯¢æä¾çæ°æ®,å ä¸explain æä¾çæ°æ®æ¥å¤æè¿ä¸ªsqlçæ§è½æ¯å¦å¯æ¥å,æè
å¯ä¼å.
3ãèªå¨å®¡æ ¸éè¿æ§è½å¯æ¥åçé¨å,ç»DBAå±ç¤ºæ§è½è¾å·®çsql,ç¶åè¿è¡ä¼å.
æ¹æ¡çä¼ç¹å¨äº:
åºäºç¨æ·çæ£æ§è¡çSQL,并ä¸å¯ä»¥è§å¯SQLæ§è¡é¢ç.
åºäºMySQLçæ£çæ§è¡è®¡ååæ§è¡ç»æ,åææ´åç¡®.
æ¯ä¸ªSQLé½æä¸ä¸ªfingerprint,åªéè¦å¢éå¤çæ°å çSQL,æçåæ§è½æé«.
åºäºBox anemometeräºæ¬¡å¼å,让æ
¢æ¥è¯¢åsqlå®¡æ ¸åå¹³å°,å¢å å·¥å
·éææ§,æé«ç¨æ·ä½éª(DBAåå¼å人å)ã
æ¹æ¡å®æ½:
æ¢ç¶å±æ¯DBAï¼è¯å®ä¼ææ´DBAçæç»´æ¹å¼.åºäºç°æ软件äºæ¬¡å¼åå®æ,åå°å¼åææ¬,æ´å管çå¹³å°.
åºäºBox anemometer.å®è£
Box anemometer
Box anemometeræ¯ä¸æ¬¾B/Sæ¶æ,å¾å½¢åçMySQLæ
¢æ¥è¯¢åæå·¥å
·.åè½å¼ºå¤§æç¨,设计ç®åç´æ¥.anemometeræ¯åºäºpt-query-digestçäºæ¬¡å°è£
å¾æ¥.
æ ¸å¿å¤çæµç¨:
mysql nodeâ>计åä»»å¡éè¿pt-query-digestæ¶éæ
¢æ¥è¯¢ä¿¡æ¯â>ç»æåå
¥å°æ°æ®åºä¸â>anemometerææ¡ä»¶å»å±ç¤ºæ
¢æ¥è¯¢çç»æ,并ä¸æä¾äºå¾å½¢ååè¶å¿åå¸å¾çåè½.
æ以anemometerå·²ç»å¸®æ们å®æäºæ°æ®æ¶é,å
æ¬æ¯ä¸ªsqlçfingerprintä¿¡æ¯,以åç¸å
³çä¿¡æ¯,æ们å¨æµè¯ç¯å¢,åºäºanemometer,å°long_query_time设置为0,å°±å¯ä»¥æ¶éå°æ以çSQLåç¸å
³ä¿¡æ¯.
å¨æ们æ¶éå°ææSQL以å,æ们就è¦æ¥åæè¿ä¸ªSQLæ¯å¦å¯ä»¥èªå¨å®¡æ ¸éè¿.è¿éå¼å§æ们就è¦å®å¶äº.
å®å¶å
容å¦ä¸:
ä¸ã
设置ä¸ä¸ªåç¬çdatasources,å¯ä»¥å½å为audit_sql.
è¿ä¸ªdatasourceséé¢åªæ¾ç½®å¼åç¯å¢æè
æµè¯ç¯å¢çæ
¢æ¥è¯¢(ä½ è¦åsqlå®¡æ ¸åºäºåªä¸ªç¯å¢),å°æ¤ç¯å¢çlong_query_time设置为0,æ¥æ¶ææçsqlæ¥è¯¢.
äºãä¿®æ¹anemometer
ALTER TABLE `global_query_review` ADD audit_status VARCHAR(255) NOT
NULL DEFAULT ârefuseâ comment âsql审计çç¶æ refuseæªéè¿ passå®¡æ ¸éè¿â;
ä¿®æ¹PHP代ç .
å¨report模åçwhereæ¡ä»¶ä¸å¢å ä¸ä¸ªAduit Statusçé项æ¡,å¯ä»¥è¿æ»¤audit_statusçç¶æ
å¨show_query模åä¸å¢å ä¸ä¸ªAudit Statusçé项æ¡,å¯ä»¥äººå·¥è®¾ç½®audit_statusçç¶æ
ä¸ãå¢å 两个é¢å¤çèæ¬,åå®æ¶çåæaudit_status为refuseçsql,å¦æsqlç满足èªå¨å®¡æ ¸éè¿çæ¡ä»¶,é£ä¹å°±è®¾ç½®audit_status为pass,表示èªå¨å®¡æ ¸éè¿.
èªå¨å®¡æ ¸æªéè¿çsql,ç±DBA人工å¨anemometerä¸æ£ç´¢åå¤ç.
è¿éå°±æ¶åå°ä¸ä¸ªèªå¨å®¡æ ¸éè¿çç®æ³:
ç®æ³å两ç§.
第ä¸ç§æ¯åå®æ¶,ä¹å°±æ¯å¯ä»¥å åéæè
ä¸ä¸ªå°æ¶è¿è¡ä¸æ¬¡,主è¦æ¯æ ¹æ®æ¯ä¸ªsqlçæ§è¡æçå¤ææ¯å¦pass.
对åºçèæ¬ååå«å:audit_sql.py
第äºç§æ¯ä¸å¤©ä¸æ¬¡,å¼±åæ§è¡æçå¤æ,å¢å ä¸å¤©æ§è¡çé¢çå¤æ.
对åºçèæ¬ååå«å:audit_sql_day.py
åå®¶æ ¹æ®èªå·±çå®é
æ
åµè°æ´æè
ä¼åè¿ä¸¤ä¸ªèæ¬.
è³æ¤,ä½ å·²ç»å¯ä»¥è®©99%以ä¸ç代ç èªå¨å®¡æ ¸éè¿äº,å®¡æ ¸ä¸éè¿ç代ç ä½ å¯ä»¥è®©å¼åèªå·±æ¥trackingä¹å¯ä»¥ä¸»å¨æ¨ç»å¼å.
对äºææ建çç¯å¢,å¯è½ä¼æä¸äºä¹±ä¸å
«ç³çsql,ä¸è¿ä½¿ç¨ä¸æ®µæ¶é´ç¨³å®ä»¥å,å¼å¸¸çsqlæ纹é½æäº,é£ä¹æ¯å¤©äº§ççsqlæ纹就æ¯è¾å°äº,èè¿é¨åSQLæ纹ä¹å°±æ¯ç¨åºåç¼åæ°ç代ç 产çç.
温馨提示:答案为网友推荐,仅供参考