[{"data":1,"prerenderedAt":1128},["ShallowReactive",2],{"navigation_docs":3,"-engineering-database-connection":369,"-engineering-database-connection-surround":1124},[4,8,72,102,220,266,280,301,365],{"title":5,"path":6,"stem":7},"Introduction","\u002Fintroduction","0.introduction",{"title":9,"icon":10,"path":11,"stem":12,"children":13,"page":67},"Company","i-lucide-building-2","\u002Fcompany","1.company",[14,18,22,26,30,34,38,42,46,50,54,68],{"title":15,"path":16,"stem":17},"About","\u002Fcompany\u002Fabout","1.company\u002F0.about",{"title":19,"path":20,"stem":21},"Values","\u002Fcompany\u002Fvalues","1.company\u002F1.values",{"title":23,"path":24,"stem":25},"Communication","\u002Fcompany\u002Fcommunication","1.company\u002Fcommunication",{"title":27,"path":28,"stem":29},"Competition","\u002Fcompany\u002Fcompetition","1.company\u002Fcompetition",{"title":31,"path":32,"stem":33},"Hybrid Working","\u002Fcompany\u002Fhybrid-working","1.company\u002Fhybrid-working",{"title":35,"path":36,"stem":37},"Manchester Office","\u002Fcompany\u002Foffice","1.company\u002Foffice",{"title":39,"path":40,"stem":41},"Operations","\u002Fcompany\u002Foperations","1.company\u002Foperations",{"title":43,"path":44,"stem":45},"Policies","\u002Fcompany\u002Fpolicies","1.company\u002Fpolicies",{"title":47,"path":48,"stem":49},"Problem Statement","\u002Fcompany\u002Fproblem-statement","1.company\u002Fproblem-statement",{"title":51,"path":52,"stem":53},"Product Strategy","\u002Fcompany\u002Fproduct-strategy","1.company\u002Fproduct-strategy",{"title":55,"path":56,"stem":57,"children":58,"page":67},"Products","\u002Fcompany\u002Fproducts","1.company\u002Fproducts",[59,63],{"title":60,"path":61,"stem":62},"Capability Exchange","\u002Fcompany\u002Fproducts\u002Fcapability-exchange","1.company\u002Fproducts\u002Fcapability-exchange",{"title":64,"path":65,"stem":66},"ESProfiler Platform","\u002Fcompany\u002Fproducts\u002Fesprofiler","1.company\u002Fproducts\u002Fesprofiler",false,{"title":69,"path":70,"stem":71},"Security","\u002Fcompany\u002Fsecurity","1.company\u002Fsecurity",{"title":73,"icon":74,"path":75,"stem":76,"children":77,"page":67},"People Ops","i-lucide-users","\u002Fpeople-ops","2.people-ops",[78,82,86,90,94,98],{"title":79,"path":80,"stem":81},"Compensation","\u002Fpeople-ops\u002Fcompensation","2.people-ops\u002Fcompensation",{"title":83,"path":84,"stem":85},"Education","\u002Fpeople-ops\u002Feducation","2.people-ops\u002Feducation",{"title":87,"path":88,"stem":89},"Expenses","\u002Fpeople-ops\u002Fexpenses","2.people-ops\u002Fexpenses",{"title":91,"path":92,"stem":93},"Holiday & Leave","\u002Fpeople-ops\u002Fleave","2.people-ops\u002Fleave",{"title":95,"path":96,"stem":97},"Onboarding","\u002Fpeople-ops\u002Fonboarding","2.people-ops\u002Fonboarding",{"title":99,"path":100,"stem":101},"Recruitment","\u002Fpeople-ops\u002Frecruitment","2.people-ops\u002Frecruitment",{"title":103,"icon":104,"path":105,"stem":106,"children":107,"page":67},"Engineering","i-lucide-rocket","\u002Fengineering","3.engineering",[108,151,155,175,196,200,208,212,216],{"title":109,"path":110,"stem":111,"children":112,"page":67},"Contributing","\u002Fengineering\u002Fcontributing","3.engineering\u002Fcontributing",[113,117,121,125,129,142],{"title":114,"path":115,"stem":116},"Development Setup","\u002Fengineering\u002Fcontributing\u002Fdevelopment-setup","3.engineering\u002Fcontributing\u002F1.development-setup",{"title":118,"path":119,"stem":120},"Engineering Operations","\u002Fengineering\u002Fcontributing\u002Fengineering-operations","3.engineering\u002Fcontributing\u002F2.engineering-operations",{"title":122,"path":123,"stem":124},"Documentation","\u002Fengineering\u002Fcontributing\u002Fdocumentation","3.engineering\u002Fcontributing\u002F3.documentation",{"title":126,"path":127,"stem":128},"Agentic Coding","\u002Fengineering\u002Fcontributing\u002Fagentic-coding","3.engineering\u002Fcontributing\u002Fagentic-coding",{"title":130,"path":131,"stem":132,"children":133,"page":67},"Back End","\u002Fengineering\u002Fcontributing\u002Fback-end","3.engineering\u002Fcontributing\u002Fback-end",[134,138],{"title":135,"path":136,"stem":137},"API Guidelines","\u002Fengineering\u002Fcontributing\u002Fback-end\u002Fapi-guidelines","3.engineering\u002Fcontributing\u002Fback-end\u002Fapi-guidelines",{"title":139,"path":140,"stem":141},"LLM Prompts & Langfuse Integration","\u002Fengineering\u002Fcontributing\u002Fback-end\u002Fllm-prompts","3.engineering\u002Fcontributing\u002Fback-end\u002Fllm-prompts",{"title":143,"path":144,"stem":145,"children":146,"page":67},"Front End","\u002Fengineering\u002Fcontributing\u002Ffront-end","3.engineering\u002Fcontributing\u002Ffront-end",[147],{"title":148,"path":149,"stem":150},"Testing","\u002Fengineering\u002Fcontributing\u002Ffront-end\u002Ftesting","3.engineering\u002Fcontributing\u002Ffront-end\u002Ftesting",{"title":152,"path":153,"stem":154},"Production Database","\u002Fengineering\u002Fdatabase-connection","3.engineering\u002Fdatabase-connection",{"title":156,"path":157,"stem":158,"children":159},"Deployment","\u002Fengineering\u002Fdeployment","3.engineering\u002Fdeployment",[160,163,167,171],{"title":60,"path":161,"stem":162},"\u002Fengineering\u002Fdeployment\u002Fcapability-exchange","3.engineering\u002Fdeployment\u002Fcapability-exchange",{"title":164,"path":165,"stem":166},"Langfuse Deployment","\u002Fengineering\u002Fdeployment\u002Fecs-langfuse-deployment","3.engineering\u002Fdeployment\u002Fecs-langfuse-deployment",{"title":168,"path":169,"stem":170},"ESP Platform Configuration","\u002Fengineering\u002Fdeployment\u002Fesp-platform-configuration","3.engineering\u002Fdeployment\u002Fesp-platform-configuration",{"title":172,"path":173,"stem":174},"Platform","\u002Fengineering\u002Fdeployment\u002Fplatform","3.engineering\u002Fdeployment\u002Fplatform",{"title":176,"path":177,"stem":178,"children":179,"page":67},"Github","\u002Fengineering\u002Fgithub","3.engineering\u002Fgithub",[180,184,188,192],{"title":181,"path":182,"stem":183},"Packages","\u002Fengineering\u002Fgithub\u002Fpackages","3.engineering\u002Fgithub\u002Fpackages",{"title":185,"path":186,"stem":187},"Personal Access Token","\u002Fengineering\u002Fgithub\u002Fpersonal-access-token","3.engineering\u002Fgithub\u002Fpersonal-access-token",{"title":189,"path":190,"stem":191},"Troubleshooting","\u002Fengineering\u002Fgithub\u002Ftroubleshooting","3.engineering\u002Fgithub\u002Ftroubleshooting",{"title":193,"path":194,"stem":195},"Workflows","\u002Fengineering\u002Fgithub\u002Fworkflows","3.engineering\u002Fgithub\u002Fworkflows",{"title":197,"path":198,"stem":199},"Platform Ops","\u002Fengineering\u002Fplatform-ops","3.engineering\u002Fplatform-ops",{"title":172,"path":201,"stem":202,"children":203,"page":67},"\u002Fengineering\u002Fplatform","3.engineering\u002Fplatform",[204],{"title":205,"path":206,"stem":207},"useAPI","\u002Fengineering\u002Fplatform\u002Fuse-api","3.engineering\u002Fplatform\u002Fuse-api",{"title":209,"path":210,"stem":211},"Project Management","\u002Fengineering\u002Fproject-management","3.engineering\u002Fproject-management",{"title":213,"path":214,"stem":215},"Releases","\u002Fengineering\u002Frelease","3.engineering\u002Frelease",{"title":217,"path":218,"stem":219},"Tools","\u002Fengineering\u002Ftools","3.engineering\u002Ftools",{"title":221,"icon":222,"path":223,"stem":224,"children":225,"page":67},"Design","i-lucide-palette","\u002Fdesign","4.design",[226,247,251,255,259,262],{"title":227,"path":228,"stem":229,"children":230,"page":67},"Personas","\u002Fdesign\u002Fpersonas","4.design\u002F0.personas",[231,235,239,243],{"title":232,"path":233,"stem":234},"CISO - Simon","\u002Fdesign\u002Fpersonas\u002F01-ciso-simon","4.design\u002F0.personas\u002F01-ciso-simon",{"title":236,"path":237,"stem":238},"Head of Cyber - Harry","\u002Fdesign\u002Fpersonas\u002F02-head-of-cyber-harry","4.design\u002F0.personas\u002F02-head-of-cyber-harry",{"title":240,"path":241,"stem":242},"Security Architect - Sasha","\u002Fdesign\u002Fpersonas\u002F03-security-architect-sasha","4.design\u002F0.personas\u002F03-security-architect-sasha",{"title":244,"path":245,"stem":246},"Procurement Officer - Paige","\u002Fdesign\u002Fpersonas\u002F04-procurement-officer-paige","4.design\u002F0.personas\u002F04-procurement-officer-paige",{"title":248,"path":249,"stem":250},"Design Thinking","\u002Fdesign\u002Fdesign-thinking","4.design\u002F1.design-thinking",{"title":252,"path":253,"stem":254},"Design & Development","\u002Fdesign\u002Fdesign-and-development","4.design\u002F3.design-and-development",{"title":256,"path":257,"stem":258},"Branding","\u002Fdesign\u002Fbranding","4.design\u002F4.branding",{"title":217,"path":260,"stem":261},"\u002Fdesign\u002Ftools","4.design\u002F5.tools",{"title":263,"path":264,"stem":265},"Customer Success","\u002Fdesign\u002Fworking-with-customers","4.design\u002F6.working-with-customers",{"title":267,"icon":268,"path":269,"stem":270,"children":271,"page":67},"Sales","i-lucide-dollar-sign","\u002Fsales","4.sales",[272,276],{"title":273,"path":274,"stem":275},"Customer Onboarding","\u002Fsales\u002Fonboarding","4.sales\u002Fonboarding",{"title":277,"path":278,"stem":279},"Sales Tools","\u002Fsales\u002Ftools","4.sales\u002Ftools",{"title":281,"icon":282,"path":283,"stem":284,"children":285,"page":67},"Marketing","i-lucide-book-image","\u002Fmarketing","5.marketing",[286,290,294,297],{"title":287,"path":288,"stem":289},"Content","\u002Fmarketing\u002Fcontent","5.marketing\u002Fcontent",{"title":291,"path":292,"stem":293},"Messaging","\u002Fmarketing\u002Fmessaging","5.marketing\u002Fmessaging",{"title":217,"path":295,"stem":296},"\u002Fmarketing\u002Ftools","5.marketing\u002Ftools",{"title":298,"path":299,"stem":300},"Website","\u002Fmarketing\u002Fwebsite","5.marketing\u002Fwebsite",{"title":302,"icon":303,"path":304,"stem":305,"children":306,"page":67},"AI & Data Ops","i-lucide-database","\u002Fdata-ops","6.data-ops",[307,315,319,344,361],{"title":60,"path":308,"stem":309,"children":310,"page":67},"\u002Fdata-ops\u002Fcapability-exchange","6.data-ops\u002FCapability Exchange",[311],{"title":312,"path":313,"stem":314},"Leaderboard Calculation","\u002Fdata-ops\u002Fcapability-exchange\u002Fleaderboard-calculation","6.data-ops\u002FCapability Exchange\u002Fleaderboard-calculation",{"title":316,"path":317,"stem":318},"Account Portal (CAS)","\u002Fdata-ops\u002Faccount-portal","6.data-ops\u002Faccount-portal",{"title":320,"path":321,"stem":322,"children":323,"page":67},"Data Management","\u002Fdata-ops\u002Fdata-management","6.data-ops\u002Fdata-management",[324,328,332,336,340],{"title":325,"path":326,"stem":327},"Adding Products","\u002Fdata-ops\u002Fdata-management\u002Fadding-products","6.data-ops\u002Fdata-management\u002Fadding-products",{"title":329,"path":330,"stem":331},"Adding Vendors","\u002Fdata-ops\u002Fdata-management\u002Fadding-vendors","6.data-ops\u002Fdata-management\u002Fadding-vendors",{"title":333,"path":334,"stem":335},"Framework Mapping","\u002Fdata-ops\u002Fdata-management\u002Fframework-mapping","6.data-ops\u002Fdata-management\u002Fframework-mapping",{"title":337,"path":338,"stem":339},"Refreshing Vendors","\u002Fdata-ops\u002Fdata-management\u002Frefreshing-vendors","6.data-ops\u002Fdata-management\u002Frefreshing-vendors",{"title":341,"path":342,"stem":343},"Reviewing Draft Vendors","\u002Fdata-ops\u002Fdata-management\u002Freviewing-draft-vendors","6.data-ops\u002Fdata-management\u002Freviewing-draft-vendors",{"title":345,"path":346,"stem":347,"children":348,"page":67},"LLM Ops","\u002Fdata-ops\u002Fllm-ops","6.data-ops\u002Fllm-ops",[349,353,357],{"title":350,"path":351,"stem":352},"Agents","\u002Fdata-ops\u002Fllm-ops\u002Fagents","6.data-ops\u002Fllm-ops\u002F1.agents",{"title":354,"path":355,"stem":356},"ESPi Architecture & Query Flow","\u002Fdata-ops\u002Fllm-ops\u002Fespi-architecture","6.data-ops\u002Fllm-ops\u002F2.espi-architecture",{"title":358,"path":359,"stem":360},"Evaluating Agents","\u002Fdata-ops\u002Fllm-ops\u002Fevaluations","6.data-ops\u002Fllm-ops\u002F3.evaluations",{"title":362,"path":363,"stem":364},"Message Queues","\u002Fdata-ops\u002Fmessage-queues","6.data-ops\u002Fmessage-queues",{"title":366,"path":367,"stem":368},"Glossary","\u002Fglossary","glossary",{"id":370,"title":152,"body":371,"description":1117,"extension":1118,"links":1119,"meta":1120,"navigation":1121,"path":153,"seo":1122,"stem":154,"__hash__":1123},"docs\u002F3.engineering\u002Fdatabase-connection.md",{"type":372,"value":373,"toc":1081},"minimark",[374,379,383,386,389,393,396,412,415,417,421,424,449,451,455,460,502,505,507,511,523,529,531,535,549,552,560,562,566,618,621,623,627,631,645,649,660,663,665,669,672,675,685,693,699,701,705,709,741,745,757,759,763,766,769,773,780,822,826,851,856,858,862,865,882,884,888,906,909,917,923,925,929,932,941,944,958,960,964,977,981,989,993,1004,1006,1010,1029,1031,1035,1047,1049,1053,1056],[375,376,378],"h2",{"id":377},"accessing-production-databases-via-the-aws-jump-box","Accessing Production Databases via the AWS Jump Box",[380,381,382],"p",{},"Use this process when you need temporary direct access to a production database for investigation, emergency fixes, Prisma migrations, or rollback support.",[380,384,385],{},"This method creates an SSH tunnel from your machine to the AWS network through the jump box, so your local tools can connect to a production database as though it were running locally.",[387,388],"hr",{},[375,390,392],{"id":391},"when-to-use-this","When to use this",[380,394,395],{},"Use this only when necessary, for example:",[397,398,399,403,406,409],"ul",{},[400,401,402],"li",{},"connecting local tools to a production database",[400,404,405],{},"running Prisma migrations against production",[400,407,408],{},"inspecting production data in MySQL Workbench or another client",[400,410,411],{},"connecting to a restored snapshot during rollback work",[380,413,414],{},"This is not the preferred long-term workflow. It is a temporary access path for operational needs.",[387,416],{},[375,418,420],{"id":419},"prerequisites","Prerequisites",[380,422,423],{},"You will need:",[397,425,426,434,437,440,443,446],{},[400,427,428,429,433],{},"AWS access to the ",[430,431,432],"code",{},"ESProfiler"," account with Administrator Access",[400,435,436],{},"PuTTY installed",[400,438,439],{},"PuTTYgen installed",[400,441,442],{},"your SSH public key added to the jump box user",[400,444,445],{},"your home or office IP address whitelisted in the jump box security group",[400,447,448],{},"a database client (e.g. MySQL Workbench)",[387,450],{},[375,452,454],{"id":453},"_1-generate-an-ssh-key-if-you-dont-already-have-one","1. Generate an SSH key (if you don’t already have one)",[456,457,459],"h3",{"id":458},"using-puttygen","Using PuTTYgen",[461,462,463,469,475,482,485,488,491],"ol",{},[400,464,465,466],{},"Open Start menu → search ",[430,467,468],{},"PuTTYgen",[400,470,471,472],{},"Set key size to ",[430,473,474],{},"4096",[400,476,477,478],{},"Click ",[479,480,481],"strong",{},"Generate",[400,483,484],{},"Move your mouse to generate entropy",[400,486,487],{},"Add a key comment (your name or username)",[400,489,490],{},"Set a memorable passphrase",[400,492,493,494],{},"Save:\n",[397,495,496,499],{},[400,497,498],{},"Private key",[400,500,501],{},"Public key",[380,503,504],{},"Store securely (e.g. a personal \"Security\" folder in Google Drive).",[387,506],{},[375,508,510],{"id":509},"_2-share-your-public-key","2. Share your public key",[461,512,513,520],{},[400,514,515,516,519],{},"Copy the ",[479,517,518],{},"public key text"," from PuTTYgen",[400,521,522],{},"Send it to whoever manages jump box access",[380,524,525,528],{},[479,526,527],{},"Important:"," send the full key text, not just a file.",[387,530],{},[375,532,534],{"id":533},"_3-get-your-ip-address-whitelisted","3. Get your IP address whitelisted",[461,536,537,543,546],{},[400,538,539,540],{},"Google: ",[430,541,542],{},"what's my IP",[400,544,545],{},"Copy your IPv4 address",[400,547,548],{},"Send it to the AWS admin",[380,550,551],{},"You may need:",[397,553,554,557],{},[400,555,556],{},"office IP",[400,558,559],{},"home IP",[387,561],{},[375,563,565],{"id":564},"_4-add-ip-to-aws-security-group","4. Add IP to AWS security group",[461,567,568,573,579,585,589,595,598],{},[400,569,570,571],{},"Open AWS → ",[430,572,432],{},[400,574,575,576],{},"Go to ",[430,577,578],{},"EC2",[400,580,581,582],{},"Select instance: ",[430,583,584],{},"ESP1 connector",[400,586,575,587],{},[479,588,69],{},[400,590,591,592],{},"Open security group: ",[430,593,594],{},"DHCP ssh",[400,596,597],{},"Edit inbound rules",[400,599,600,601],{},"Add:\n",[397,602,603,609,612],{},[400,604,605,606],{},"Port: ",[430,607,608],{},"22",[400,610,611],{},"Source: your IP",[400,613,614,615],{},"Description: e.g. ",[430,616,617],{},"Joe home",[380,619,620],{},"Save.",[387,622],{},[375,624,626],{"id":625},"_5-configure-putty-connection","5. Configure PuTTY connection",[456,628,630],{"id":629},"session-setup","Session setup",[397,632,633,639],{},[400,634,635,636],{},"Host: ",[430,637,638],{},"your-username@X.X.X.X",[400,640,641,642],{},"Save session as: ",[430,643,644],{},"ESP AWS",[456,646,648],{"id":647},"add-private-key","Add private key",[397,650,651,654,657],{},[400,652,653],{},"Connection → SSH → Credentials",[400,655,656],{},"Load your private key",[400,658,659],{},"Save session again",[380,661,662],{},"Open the session.",[387,664],{},[375,666,668],{"id":667},"_6-log-in-and-change-password","6. Log in and change password",[380,670,671],{},"After login:",[380,673,674],{},"Run:",[676,677,682],"pre",{"className":678,"code":680,"language":681},[679],"language-text","passwd\n","text",[430,683,680],{"__ignoreMap":684},"",[397,686,687,690],{},[400,688,689],{},"Enter your assigned temporary password",[400,691,692],{},"Set your own password",[380,694,695,698],{},[479,696,697],{},"Tip:"," Right-click = paste in PuTTY.",[387,700],{},[375,702,704],{"id":703},"_7-get-database-endpoint-aws-rds","7. Get database endpoint (AWS RDS)",[456,706,708],{"id":707},"mysql-services","MySQL (services)",[461,710,711,714,720,727,733,736],{},[400,712,713],{},"AWS → RDS",[400,715,716,717],{},"Region: ",[430,718,719],{},"eu-west-2",[400,721,722,723,726],{},"DB Instances → select DB (e.g. ",[430,724,725],{},"service8",")",[400,728,729,730],{},"Open ",[479,731,732],{},"Endpoints",[400,734,735],{},"Copy endpoint",[400,737,605,738],{},[430,739,740],{},"3306",[456,742,744],{"id":743},"postgresql-pcx","PostgreSQL (PCX)",[461,746,747,750,752],{},[400,748,749],{},"Open PostgreSQL instance",[400,751,735],{},[400,753,605,754],{},[430,755,756],{},"5432",[387,758],{},[375,760,762],{"id":761},"_8-configure-ssh-tunnels-in-putty","8. Configure SSH tunnels in PuTTY",[380,764,765],{},"Path:",[380,767,768],{},"Connection → SSH → Tunnels",[456,770,772],{"id":771},"recommended-ports","Recommended ports",[380,774,775,776,779],{},"These map a local port on your machine (e.g. ",[430,777,778],{},"13306",") to the remote port\u002Fhost",[781,782,783,799],"table",{},[784,785,786],"thead",{},[787,788,789,793,796],"tr",{},[790,791,792],"th",{},"DB Type",[790,794,795],{},"Local Port",[790,797,798],{},"Remote Port",[800,801,802,812],"tbody",{},[787,803,804,808,810],{},[805,806,807],"td",{},"MySQL",[805,809,778],{},[805,811,740],{},[787,813,814,817,820],{},[805,815,816],{},"PostgreSQL",[805,818,819],{},"15432",[805,821,756],{},[456,823,825],{"id":824},"setup","Setup",[461,827,828,831,837,842,845,848],{},[400,829,830],{},"Enter source port",[400,832,833,834],{},"Enter destination: ",[430,835,836],{},"\u003Cendpoint>:port",[400,838,477,839],{},[479,840,841],{},"Add",[400,843,844],{},"Repeat if needed",[400,846,847],{},"Go to Session → Save",[400,849,850],{},"Open session",[380,852,853,855],{},[479,854,527],{}," tunnel only works while PuTTY is open.",[387,857],{},[375,859,861],{"id":860},"_9-connect-via-local-tools","9. Connect via local tools",[380,863,864],{},"Example for Platform DB (MySQL Workbench):",[397,866,867,872,876],{},[400,868,635,869],{},[430,870,871],{},"127.0.0.1",[400,873,605,874],{},[430,875,778],{},[400,877,878,879],{},"Username: ",[430,880,881],{},"espadministrator",[387,883],{},[375,885,887],{"id":886},"_10-get-database-password-secrets-manager","10. Get database password (Secrets Manager)",[461,889,890,893,898,901],{},[400,891,892],{},"Open DB in AWS",[400,894,575,895],{},[479,896,897],{},"Configuration",[400,899,900],{},"Open linked secret",[400,902,477,903],{},[479,904,905],{},"Retrieve secret value",[380,907,908],{},"Copy:",[397,910,911,914],{},[400,912,913],{},"username",[400,915,916],{},"password",[380,918,919,922],{},[479,920,921],{},"Note:"," password rotates regularly — do not store permanently.",[387,924],{},[375,926,928],{"id":927},"_11-using-with-apps-prisma","11. Using with apps \u002F Prisma",[380,930,931],{},"Use:",[397,933,934,938],{},[400,935,635,936],{},[430,937,871],{},[400,939,940],{},"Port: forwarded port",[380,942,943],{},"Examples:",[397,945,946,952],{},[400,947,948,949],{},"MySQL: ",[430,950,951],{},"127.0.0.1:13306",[400,953,954,955],{},"Postgres: ",[430,956,957],{},"127.0.0.1:15432",[387,959],{},[375,961,963],{"id":962},"_12-rollback-via-snapshots","12. Rollback via snapshots",[461,965,966,969,974],{},[400,967,968],{},"Open snapshot in AWS",[400,970,477,971],{},[479,972,973],{},"Restore",[400,975,976],{},"Give new DB name",[456,978,980],{"id":979},"key-behaviour","Key behaviour",[397,982,983,986],{},[400,984,985],{},"Does NOT overwrite production DB",[400,987,988],{},"Creates a new cluster",[456,990,992],{"id":991},"workflow","Workflow",[461,994,995,998,1001],{},[400,996,997],{},"Connect to restored DB",[400,999,1000],{},"Extract required data\u002Fschema",[400,1002,1003],{},"Apply to live DB",[387,1005],{},[375,1007,1009],{"id":1008},"operational-notes","Operational notes",[397,1011,1012,1015,1018,1021,1026],{},[400,1013,1014],{},"Keep PuTTY open while connected",[400,1016,1017],{},"Check IP whitelist if connection fails",[400,1019,1020],{},"Check SSH key if auth fails",[400,1022,1023,1024],{},"Ensure region is ",[430,1025,719],{},[400,1027,1028],{},"Avoid port clashes with local dev",[387,1030],{},[375,1032,1034],{"id":1033},"standard-ports","Standard ports",[397,1036,1037,1042],{},[400,1038,1039,1040],{},"MySQL production: ",[430,1041,778],{},[400,1043,1044,1045],{},"PostgreSQL production: ",[430,1046,819],{},[387,1048],{},[375,1050,1052],{"id":1051},"new-starter-checklist","New starter checklist",[380,1054,1055],{},"Ensure:",[397,1057,1058,1061,1064,1067,1070,1072,1075,1078],{},[400,1059,1060],{},"AWS access granted",[400,1062,1063],{},"Correct AWS roles assigned",[400,1065,1066],{},"SSH key created + added",[400,1068,1069],{},"IP whitelisted",[400,1071,436],{},[400,1073,1074],{},"Database access tested",[400,1076,1077],{},"Google Cloud access granted (if needed)",[400,1079,1080],{},"Remote support tooling installed",{"title":684,"searchDepth":1082,"depth":1082,"links":1083},2,[1084,1085,1086,1087,1091,1092,1093,1094,1098,1099,1103,1107,1108,1109,1110,1114,1115,1116],{"id":377,"depth":1082,"text":378},{"id":391,"depth":1082,"text":392},{"id":419,"depth":1082,"text":420},{"id":453,"depth":1082,"text":454,"children":1088},[1089],{"id":458,"depth":1090,"text":459},3,{"id":509,"depth":1082,"text":510},{"id":533,"depth":1082,"text":534},{"id":564,"depth":1082,"text":565},{"id":625,"depth":1082,"text":626,"children":1095},[1096,1097],{"id":629,"depth":1090,"text":630},{"id":647,"depth":1090,"text":648},{"id":667,"depth":1082,"text":668},{"id":703,"depth":1082,"text":704,"children":1100},[1101,1102],{"id":707,"depth":1090,"text":708},{"id":743,"depth":1090,"text":744},{"id":761,"depth":1082,"text":762,"children":1104},[1105,1106],{"id":771,"depth":1090,"text":772},{"id":824,"depth":1090,"text":825},{"id":860,"depth":1082,"text":861},{"id":886,"depth":1082,"text":887},{"id":927,"depth":1082,"text":928},{"id":962,"depth":1082,"text":963,"children":1111},[1112,1113],{"id":979,"depth":1090,"text":980},{"id":991,"depth":1090,"text":992},{"id":1008,"depth":1082,"text":1009},{"id":1033,"depth":1082,"text":1034},{"id":1051,"depth":1082,"text":1052},"Accessing the production database in rollback situations.","md",null,{},true,{"title":152,"description":1117},"o7eOm7BtpnYGZu273xmLC9YSlIVCVNvtG0CvHDdo268",[1125,1126],{"title":148,"path":149,"stem":150,"description":684,"children":-1},{"title":156,"path":157,"stem":158,"children":-1,"description":1127},"A comprehensive overview of the deployment process for new ESProfiler tenants",1790076747062]