එක් වරක් මම මගේ නිෂ්පාදන DB විනාශ කරන ලදී නින්දක් UPDATE හා කිසිදු අළුත් Backups. අහිමි ~30% ආදායම්, සෑහෙන ශරීර හා පැය බොහෝ. Table of content Open-Source PostgreSQL Backup ව් යාපෘතිය මම කොහොමද DB බිඳ දැම්මා හා සම්පූර්ණයෙන්ම ප්රතිරෝධ කළ නොහැකි බව කතාව මම කොහොමද ව් යාපෘතිය ගොඩනැගීමට පටන් ගත්තේ Roadmap & අනාගත සැලසුම් DB ආරක්ෂක නීති මම දැන් සෑම ව්යාපෘතියකටම අනුගමනය Wrap-Up Open Source PostgreSQL Backup ව් යාපෘතිය PostgreSQL අනුගමනය කිරීම සහ backup කිරීම සඳහා මම මගේම මෙවලම විවෘත කර ඇත. මම එය ගොඩනැගීම හා භාවිතා කර ඇත වසර දෙකකට වඩා. ආරම්භයේදී, මම මගේ දිනපතා රැකියාව සඳහා එය සංවර්ධනය කර ඇති අතර කිහිපයක් සතුන් ව්යාපෘති. මෑතකදී පමණක් මෙම ව්යාපෘතිය ඇත්ත වශයෙන්ම ප්රකාශයට පෙන්වීමට හොඳින් පෙනේ, එය දැනටමත් මගේ මිතුරන්ට උපකාරී වන අතර සමාජයට ප්රයෝජනවත් විය හැකිය. Go, gin, gorm, React, TypeScript, PostgreSQL — සියල්ල Docker හි ඇතුළත් විය. Stack: මූලික වශයෙන්, එය සම්මතය වටා UI wrapper වේ පරිශීලක ආකෘතියකින්, UX අඩු වේදනාකාරී කිරීම සහ බාහිර ගබඩා සහ දැනුම් පණිවුඩ සේවා සමඟ සම්මත කිරීම සඳහා අමතර ආකෘති කිහිපයක් සමඟ. pg_dump What it can do: PostgreSQL 13-17 සඳහා සෑම දිනකම උදෑසන 4 ට හෝ සෑම සෙනසුරාදා රාත් රී 12 ට (උදාහරණයක් ලෙස) ස්කෑන් කරන්න. පරිගණකයේ, S3 හෝ Google Drive (NS සේවාදායකයන් සහ FTP මාර්ගෝපදේශය මත වේ) මත ස්ථාපිතව පරිගණකයේ පරිගණකයක් තබා ගන්න. ඔබ සෑම backup එකකට පසු ඔබට පණිවිඩයක් එවන්න, සෑම දෙයක්ම නිවැරදි වේ ... හෝ නැත. DB ප්රතිචාරය නතර වන විට Discord, ඊ-තැපැල්, Telegram සහ Slack හි ඔබව Ping.It පමණක් අනතුරු ඇඟවීමෙන් පසු n අසාර්ථක පරීක්ෂණ (රජය අවුල් නිසා බොරු ප්රතිඵල වළක්වා ගැනීමට) සහ ලබා ගත හැකිතා ග්රැෆික් පෙන්වයි. ස්වාභාවිකව, ව්යාපෘතිය නොමිලේ, විවෘත මූලාශ්රය (MIT), ස්වාධීන hosted වන අතර, මානව වෙබ් UI සමඟ පැමිණේ. ව් යාපෘති වෙබ් අඩවිය: https://postgresus.com/ https://postgresus.com/ GitHub වෙත: https://github.com/RostislavDugin/postgresus https://github.com/RostislavDugin/postgresus P.S. ව් යාපෘතිය ඔබට ප් රයෝජනවත් බව පෙනේ නම් සහ ඔබට GitHub ගිණුමක් තිබේ නම්, සැබවින්ම පළමු තරු ලබා ගැනීමට වඩාත් දුෂ්කර වේ. I’d really appreciate a මම කොහොමද DB බිඳ දැම්මා හා සම්පූර්ණයෙන්ම ප්රතිරෝධ කළ නොහැකි බව කතාව 2023 දී මම ChatGPT (3.5) ආකර්ෂණය කරන ලද සුරතල් ව්යාපෘතියක් තිබුණා. මූලික වශයෙන්, එය ලස්සන UI සහ කෙටි කට්ටයන් සහිත API ප්රවේශය නැවත විකිණීම පමණි. ව්යාපෘතිය වර්ධනය විය, පසුව එය පහත වැටීමට පටන් ගත්තේය. වෙනත් සේවාදායකයට PgBackRest මෙම ව්යාපෘතිය $ 1,500 කට ආසන්නව ආයෝජනය කරන අතර එහි ආදායම ඉහළට වැටෙන විට, නරක දෙයක් සිදු විය: . I broke the data in the DB එය සිකුරාදා රාත්රී විය.මම මහන්සි විය, මම වහාම coding සිට පණිවිඩ පිළිතුරු, සම්පූර්ණයෙන්ම නොසලකා. SSH සහ මම නිෂ්පාදන VPS වෙත පිවිසුණා සහ එවැනි දෙයක් ටයිප් කළා: psql UPDATE users SET email = 'customer@email.com' WHERE email ILIKE '%%'; ඉන්පසු මම චැට් වලින් නිවැරදි ඊ-තැපැල් පිටපත් කිරීම හා ... "Autopilot" මත Enter ක්ලික් කරන්න. . AFFECTED ROWS: 10 000 එය බොහෝ, බොහෝ වසරවලදී මම සැබවින්ම මගේ පිටුපස සීතල ශීතකරණය දැනෙන එකම අවස්ථාව විය. : ඔව්, මම දැනගෙන හිටියේ මම කළ යුත්තේ පළමුව, සමහර විට A නමුත් ඕනෑම භයානක කතාවක මෙන්, මූලික ආරක්ෂක නීති නොසලකා බැලූ අතර, එය සියලුම කුණාටුවක් බවට පත් විය. Disclaimers SELECT SAVEPOINT සියලුම පරිශීලක ඊ-තැපැල් පරිවර්තනය කර ඇත.මෙම ප්රධාන විස්තරය මෙන්න: ගෙවීම් පද්ධති දැඩි නීති ඇත - පරිශීලකයා ගෙවීම් සේවා වෙත පිවිසීමට නොහැකි නම්, එය විශාල දූෂණය වේ. මම backup වලට ගිහිල්ලා - සහ සීතල ශීතය තවදුරටත් නරක වුණා. අවසාන backup එක මාසයක් පමණ විය . එයින් ආපසු යාමට කිසිදු ක්රමයක් නැත. ඒ වෙද්දි නව ගෙවීම් ආවා, ලියාපදිංචි කිරීම් අවලංගු විය (ඒ කියන්නේ මම සෑම කෙනෙකුටම ආපසු යාමට නොහැකි විය - සමහර අය දැනටමත් අතහැර ගියේය) ආදිය. කෙසේ වෙතත්, රාත්රී සහ උදෑසන ඉතිරි කාලය තුළ, මම පරිශීලක ID භාවිතා කරන ස්ක්රිප්ති හරහා DB හි 65% ක් පමණ නැවත ගොඩනඟා ගැනීමට සාර්ථක විය. පාඩම ඉගෙන ගත්තා. මම කොහොමද ව් යාපෘතිය ගොඩනැගීමට පටන් ගත්තේ තීරණ කාලය: මම හැමදාම හැමදේම හොඳයි කියලා මට පිංතූරයක් උපකරණයක් ගොඩනැගීමට යනවා! සහ කිහිපයක් ක්ලික් කිරීමෙන් ආපසු ලබා ගන්න! සහ බ්ලැක් ජැක් සහ මයික්රෝසර්විස්! මම Postgresus හි පළමු අනුවාදය Java හි මාසයක් ඇතුළත නිර්මාණය කර ඇත. එය භාවිතා කිරීමට ආරම්භ කර ඇත. මිතුරන් කිහිප දෙනෙකු එය උත්සාහ කරන්න. මගේ අවශ්යතා සහ ඔවුන්ගේ ප්රතිචාර මත පදනම්ව එය පොල් කරන්න. ප්රතිඵල: එය ප්රයෝජනවත් වේ. කීප වතාවක් ඒ backups මට බේරා ගෙන (එය මට පමණක් නොවේ). නාමය "Postgresus" මාස දෙකකට පෙර පමණක් පෙනී සිටියා, ප්රතිපත්තිය පමණක් කැඳවා ගැනීමට පෙර . “pg-web-backup” පිලිබදව දැනට Postgresus මා වෙනුවෙන් මෙම ගැටළු විසඳා ඇත: ව්යාපෘතිය කුඩා නම් හෝ Cloud DB සේවා වෙනුවට VPS මත ජීවත් වන විට එය ප්රධාන backup මෙවලමක් වේ. එය පරාජය backup toolif ව්යාපෘතිය විශාල වන අතර එහිම cloud backups සමග DBaaS ජීවත් වේ.It backup “ඔබේම අවස්ථාවේදී” (ඔබේ cloud මැරෙනවා නම්, bloked වේ, DB අසාධාරණයෙන් ඉවත් කර ඇත නිසා cloud backups නොමිලේ ගෙවීම්, ආදිය).It is always better to have a duplicate backup than to end up in that unfortunate 0.01% when even the cloud disappears and there is no Plan B. මාර්ගය සහ අනාගත සැලසුම් මම මෙම ව්යාපෘතිය මෙම ප්රවේශයන් වෙත යොමු කිරීමට සැලසුම් කරමි: Add more PostgreSQL-specific load monitoring (pg_stat_activity, pg_stat_system, pg_locks) with a friendly UI. Think of it as an alternative to postgres_exporter + Grafana, but bundled out of the box with backups. Observe and alert on slowdown of key queries. In my work project, there are tables and specific functions that are too early to optimize (if the hypothesis fails, we might drop them), but they could grow and slow down. For example, if INSERT INTO users (...) VALUES (...) starts taking more than 100 ms while the flow of new users is growing - we'll get a notification and go optimize. Collect query stats by CPU time and execution frequency to see where resources are actually going and what’s worth improving. Add more channels for notifications and more storage providers. DB ආරක්ෂක නීති මම දැන් සෑම ව්යාපෘතියකටම අනුගමනය මම ඔබව ජනතාවගේ බුද්ධිමය කොටස් දෙකක් මතක් කරමි: පද්ධති පරිපාලකයින් දෙවැනි ප්රවර්ගයට ඇතුළත් වේ: තවමත් backups නොකරන අය සහ දැනටමත් කරන අය. පද්ධති පරිපාලකයින් දෙවැනි ප්රවර්ගයට ඇතුළත් වේ: තවමත් backups නොකරන අය සහ දැනටමත් කරන අය. සැබෑවටම Backups කරන්න එපා - නිතර පරීක්ෂා කරන්න, ඔබ ඇත්තටම ඔවුන්ගෙන් ආපසු ලබා ගත හැකි බව. සැබෑවටම Backups කරන්න එපා - නිතර පරීක්ෂා කරන්න, ඔබ ඇත්තටම ඔවුන්ගෙන් ආපසු ලබා ගත හැකි බව. මගේ ව්යාපෘතියගේ DB යැවීමෙන් පසු, මම විශේෂයක් නොමැතිව මෙම නීති අනුගමනය කරමි: ඕනෑම යාවත්කාලීන කිරීමකට පෙර, සෑම විටම SELECT ක්රියාත්මක කරන්න සහ ඔබ නිවැරදිව 1-2 රේඛා සකස් කරන බව තහවුරු කරන්න. වෙනස් කිරීම විශාල නම්, SAVEPOINT අතින් ස්ථාපනය කරන්න. අවම වශයෙන් මාස තුනකට වරක් ප් රතිසංස්කරණය සහිත "පන්ධ අනතුරු ඇඟවීම" සිදු කරන්න: වලාකුළු පිටුවකින් සහ දේශීය පිටුවකින් ප් රතිසංස්කරණය කරන්න.එබැවින් එය වැදගත් වන විට, ඔබ දත්ත නොමැති බව සොයා ගන්නේ නැත, සහතික වැඩ කරන්නේ නැත, හෝ ප් රතිසංස්කරණ සදාකාලිකව ගත වේ. ' පසුගිය වසර දෙක තුළ අපි backups වලින් ආපසු ලබා ගැනීමට අවශ්ය වූ අවස්ථා කිහිපයක් තිබේ - සෑම අවස්ථාවකදීම එය ක්රියාකාරී වන අතර, Cloud සහ Postgresus හරහා. කිසිදු ප්රශ්නයක් නොමැත, ක්රියාවලිය පරීක්ෂා කිරීමේදී දැනටමත් ඉවත් කර ඇති නිසා. Wrap-Up මම මෙම ව්යාපෘතිය සංවර්ධකයින්, DBAs සහ DevOps ජනතාව සඳහා ප්රයෝජනවත් වනු ඇත. මම එය සැබෑ ලෝකයේ තත්වයන් තුළ තවදුරටත් ප්රයෝජනවත් කිරීමට එය වර්ධනය කිරීමට සැලසුම් කරමි.