AWS Aurora נראה כמו תחליף פשוט ל-RDS עבור אשכולות מסדי נתונים בעלי זמינות גבוהה, עד שמתחילים לחקור איך זה באמת עובד. התקרית הראשונה בייצור קורית לא כי צומת קורס, אלא כי היישום לא יודע לעבור בין כותב לקורא במהלך failover. Aurora אינו MySQL בענן — זה אחסון מבוזר עם נפח משותף לכל צמתי האשכול, ובלי הבנת ההבדל הזה, החלטות ארכיטקטוניות יהיו שגויות. החיסכון במופעי Aurora בהשוואה ל-RDS יכול להגיע ל-30% בזכות אחסון יעיל, אבל רק עם תצורה נכונה. לדוגמה, אשכול טיפוסי עם כותב אחד ושני קוראים יכול לחסוך עד $300 בחודש.
למה Multi-AZ RDS סטנדרטי לא פותר את הבעיה תחת עומס רציני
Multi-AZ RDS מספק failover תוך 30–120 שניות — מקובל לרוב התרחישים, אבל Aurora מקצר את זה ל-20–30 שניות כי ה-standby אינו רק עותק, אלא חבר מלא באשכול עם אותו נפח אחסון. זה הופך את ה-failover של Aurora למהיר עד פי 4 מ-Multi-AZ RDS.
עם Aurora, failover מתרחש תוך 20–30 שניות, עד פי 4 מהר יותר מ-Multi-AZ RDS סטנדרטי.הוסיפו Aurora Replicas (עד 15) — ותעבורת קריאה מתקפלת אופקית בלי להעתיק נתונים בין צמתים. בפרויקט אמיתי — פלטפורמת מסחר אלקטרוני עם ~800 RPS בשיא — נתקלנו במופע הכותב שמגיע לרווית CPU במהלך עסקאות מקבילות בתשלום. הפתרון: נקודת קצה לקורא לאנליטיקה ודוחות, כותב רק למוטציות. זה הפחית את ה-CPU של צומת הכותב מ-85% ל-40% בשעות השיא בלי לשדרג את המופע. זה מייצג הפחתה של 45% בשימוש ב-CPU.
איך אנחנו מתכננים אשכול Aurora
אנחנו מתחילים בבחירת המנוע: Aurora MySQL תואם 8.0 או Aurora PostgreSQL תואם 15. זה לא רק תאימות API — יש להם מגבלות פרמטרים שונות, התנהגות autovacuum שונה (PostgreSQL), ויכולות פעולות JSON שונות. הבחירה תלויה בעומס הקיים, לא בהעדפות. למהנדסי AWS המוסמכים שלנו יש ניסיון של 10+ שנים והם ביצעו 50+ פרויקטי הגירת מסדי נתונים.
הנה השלבים לתכנון אשכול Aurora:
- בחרו את המנוע (Aurora MySQL או Aurora PostgreSQL) בהתאם לעומס שלכם.
- צרו אשכול עם מופע ראשי וקבוצת פרמטרים ראשונית של Aurora.
- הוסיפו עותקי קריאה באזורי זמינות שונים עבור failover.
- הגדירו Auto Scaling עבור צמתי קורא באמצעות מדדים מותאמים אישית.
- הגדירו ניטור עם Enhanced Monitoring ו-Aurora Performance Insights.
- בדקו failover באמצעות פקודת AWS CLI.
מבנה אשכול לייצור:
Primary (writer): db.r7g.xlarge или больше
Read Replica 1: db.r7g.large — тот же AZ, что и writer
Read Replica 2: db.r7g.large — второй AZ (failover candidate)קבוצת פרמטרים של Aurora — הדבר הראשון שאנחנו שמים לב אליו. Aurora משתמש בקבוצות פרמטרים ברמת אשכול וברמת מופע. Primary (writer): db.r7g.xlarge или больше Read Replica 1: db.r7g.large — тот же AZ, что и writer Read Replica 2: db.r7g.large — второй AZ (failover candidate) עבור max_connections Aurora PostgreSQL ברירת המחדל היא ~5000, אבל זה לא אומר שאנחנו משאירים את זה — כשמשתמשים ב-PgBouncer מעל, ההגדרות משתנות. r7g.xlarge ב-Aurora PostgreSQL מנוהל בנפרד מהגדרת קבוצת הפרמטרים.
Aurora Auto Scaling עבור צמתי קורא מוגדר דרך shared_buffers עם מעקב אחר יעד על aws application-autoscaling register-scalable-target או RDSReaderAverageDatabaseConnections. חשוב: זמן קירור לכניסה (scale-in) צריך להיות ארוך מספיק (600+ שניות), אחרת צמתים יתנדנדו תחת תנודות עומס.
איך להגדיר נכון Aurora Global Database?
Aurora Global Database הוא סיפור נפרד. שכפול בין אזורים עובד על רשת שכפול ייעודית עם השהיה בדרך כלל מתחת לשנייה אחת. זה לא תחליף לשכפול תוך-אזורי; זה שחזור מאסון עם RPO ~1s ו-RTO ~1 דקה במהלך failover אזורי. מוגדר דרך RDSReaderAverageCPUUtilization, אזור משני מתווסף כ-create-global-cluster.
פרטים נוספים: Amazon Aurora
איך להגדיר ניטור וגיבוי Aurora?
גיבוי Aurora הוא אוטומטי. Backtrack — תכונה שלעתים קרובות מתעלמים ממנה. היא מאפשרת להחזיר את האשכול בזמן בלי לשחזר מתמונת מצב. עובד רק עם Aurora MySQL. מוגדר ביצירת האשכול, חלון עד 72 שעות. עלות: I/O נוסף לאחסון רשומות שינוי. עבור Aurora PostgreSQL, המקבילה היא PITR (שחזור לנקודת זמן) דרך גיבויים אוטומטיים.
Enhanced Monitoring מספק מדדים ברמת מערכת כל 1–60 שניות: add-region-to-global-cluster, cpuUtilization, diskIO. מופעל דרך תפקיד IAM loadAverageMinute עם מדיניות rds-monitoring-role. Aurora Performance Insights מספק תובנות עמוקות על עומס מסד הנתונים, מציג AmazonRDSEnhancedMonitoringRole ביחידות vCPU, מפרק עומס לפי המתנות (db.load, db.lock, db.io), ומאפשר ירידה לרמת הצהרות SQL ספציפיות. שמירה: 7 ימים בחינם, עד שנתיים בתשלום נוסף.
השוואה בין Aurora MySQL ו-PostgreSQL
| פרמטר | Aurora MySQL | Aurora PostgreSQL |
|---|---|---|
| מנוע | תואם MySQL 8.0 | תואם PostgreSQL 15 |
| Backtrack | כן | לא (PITR) |
| פעולות JSON | JSON/JSONB | JSONB |
| Autovacuum | לא | כן (חשוב לכוונן) |
| גודל DB מקסימלי | 64 TiB | 64 TiB |
לוחות זמנים והיקף עבודה
| תרחיש | לוח זמנים |
|---|---|
| אשכול Aurora חדש בלי הגירה | 1-2 ימים |
| הגירת Aurora מ-RDS/מקומי עם השבתה | 2-3 ימים |
| הגירה חיה דרך DMS | 4-7 ימים |
| Global Database עם ריבוי אזורים | 5-8 ימים |
העלות מחושבת באופן אישי לאחר ביקורת תשתית. הזמינו ביקורת מסד נתונים וקבלו הערכה מדויקת והמלצות.
מה כלול בעבודה
- ייעוץ וביקורת של תשתית מסד הנתונים הנוכחית
- תכנון והקמת אשכול Aurora
- הגדרת ניטור והתראות
- תיעוד (runbook, נהלי גיבוי/שחזור Aurora)
- הכשרת הצוות שלכם לתפעול Aurora
- סובלנות תקלות מובטחת עם RTO < דקה
טעויות נפוצות בתצורת Aurora
טעויות נפוצות בתצורת Aurora
-
לא להגדיר Aurora Connection Pooling. Aurora מתמודד היטב עם חיבורים, אבל תחת פונקציות Lambda או עומסי serverless עם אלפי חיבורים זמניים, מסד הנתונים עדיין נחנק. Aurora Proxy — PgBouncer/ProxySQL מנוהל מ-AWS, משתלב עם Secrets Manager לסיבוב אוטומטי של אישורים.
-
שימוש בנקודת קצה אחת לכל דבר. נקודת הקצה של האשכול תמיד מצביעה על הכותב. אם שאילתות קריאה הולכות לשם גם כן, כל העניין של עותקי קריאה הולך לאיבוד. נקודת הקצה של הקורא מאזנת בין עותקים ב-round-robin; נקודות קצה מותאמות אישית מאפשרות להקדיש צמתים ספציפיים לאנליטיקה.
-
התעלמות ממגבלות ספציפיות ל-Aurora. גודל הטבלה המקסימלי ב-Aurora הוא 64 TiB למנוע. האחסון גדל אוטומטית במרווחים של 10 GiB אבל לא מתכווץ אוטומטית.
db.cpuב-MySQL — פרמטר שכדאי לבדוק אם צמתים מתאתחלים מעת לעת בלי סיבות ברורות.
צרו קשר לייעוץ על הפרויקט שלכם. נעזור לתכנן פתרון סובלני תקלות ולהימנע מטעויות נפוצות.







