Files
langflow/enterprise-database-guide.html
github-merge-queue[bot] fc9f1889e5 deploy: 8fff7cc4a4
2025-08-14 19:10:06 +00:00

251 lines
50 KiB
HTML
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!doctype html>
<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-Develop/enterprise-database-guide" data-has-hydrated="false">
<head>
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.8.1">
<title data-rh="true">Langflow database guide for enterprise DBAs | Langflow Documentation</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://docs.langflow.org/enterprise-database-guide"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="docusaurus_version" content="current"><meta data-rh="true" name="docusaurus_tag" content="docs-default-current"><meta data-rh="true" name="docsearch:version" content="current"><meta data-rh="true" name="docsearch:docusaurus_tag" content="docs-default-current"><meta data-rh="true" property="og:title" content="Langflow database guide for enterprise DBAs | Langflow Documentation"><meta data-rh="true" name="description" content="The Langflow database stores data that is essential for more Langflow operations, including startup, flow execution, user interactions, and administrative tasks."><meta data-rh="true" property="og:description" content="The Langflow database stores data that is essential for more Langflow operations, including startup, flow execution, user interactions, and administrative tasks."><link data-rh="true" rel="icon" href="/img/favicon.ico"><link data-rh="true" rel="canonical" href="https://docs.langflow.org/enterprise-database-guide"><link data-rh="true" rel="alternate" href="https://docs.langflow.org/enterprise-database-guide" hreflang="en"><link data-rh="true" rel="alternate" href="https://docs.langflow.org/enterprise-database-guide" hreflang="x-default"><link data-rh="true" rel="preconnect" href="https://UZK6BDPCVY-dsn.algolia.net" crossorigin="anonymous"><script data-rh="true" type="application/ld+json">{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Database guide for enterprise administrators","item":"https://docs.langflow.org/enterprise-database-guide"}]}</script><link rel="preconnect" href="https://www.google-analytics.com">
<link rel="preconnect" href="https://www.googletagmanager.com">
<script async src="https://www.googletagmanager.com/gtag/js?id=G-SLQFLQ3KPT"></script>
<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","G-SLQFLQ3KPT",{})</script>
<link rel="search" type="application/opensearchdescription+xml" title="Langflow Documentation" href="/opensearch.xml">
<script>!function(){var e="analytics",t=window[e]=window[e]||[];if(!t.initialize)if(t.invoked)window.console&&console.error&&console.error("Segment snippet included twice.");else{t.invoked=!0,t.methods=["trackSubmit","trackClick","trackLink","trackForm","pageview","identify","reset","group","track","ready","alias","debug","page","screen","once","off","on","addSourceMiddleware","addIntegrationMiddleware","setAnonymousId","addDestinationMiddleware","register"],t.factory=function(n){return function(){if(window[e].initialized)return window[e][n].apply(window[e],arguments);var r=Array.prototype.slice.call(arguments);if(["track","screen","alias","group","page","identify"].indexOf(n)>-1){var i=document.querySelector("link[rel='canonical']");r.push({__t:"bpc",c:i&&i.getAttribute("href")||void 0,p:location.pathname,u:location.href,s:location.search,t:document.title,r:document.referrer})}return r.unshift(n),t.push(r),t}};for(var n=0;n<t.methods.length;n++){var r=t.methods[n];t[r]=t.factory(r)}t.load=function(n,r){var i=document.createElement("script");i.type="text/javascript",i.async=!0,i.setAttribute("data-global-segment-analytics-key",e),i.src="https://cdn.segment.com/analytics.js/v1/"+n+"/analytics.min.js";var a=document.getElementsByTagName("script")[0];a.parentNode.insertBefore(i,a),t._loadOptions=r},t._writeKey="60AfGDrVxy8nAGJngo3fCYWG4LvhMAlG",t.SNIPPET_VERSION="5.2.0",t.load("60AfGDrVxy8nAGJngo3fCYWG4LvhMAlG"),t.page()}}()</script>
<script>window.__SCROLL_TRACKING_CONFIG__={selectors:[{selector:"h1, h2, h3, h4, h5, h6",eventName:"Docs.langflow.org - Heading Viewed",properties:{element_type:"heading"}},{selector:".ch-codeblock",eventName:"Docs.langflow.org - Codeblock Viewed",properties:{element_type:"code",language:"helper:codeLanguage"}}]}</script>
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Sora:wght@550;600&amp;display=swap">
<script>!function(){window.semaphore=window.semaphore||[],window.ketch=function(){window.semaphore.push(arguments)};var e=document.createElement("script");e.type="text/javascript",e.src="https://global.ketchcdn.com/web/v3/config/datastax/langflow_org_web/boot.js",e.defer=e.async=!0,document.getElementsByTagName("head")[0].appendChild(e)}()</script>
<script defer="true">!function(){const e=e=>{if(window.gtag&&e.purposes&&"analytics"in e.purposes&&"targeted_advertising"in e.purposes){const n=!0===e.purposes.analytics?"granted":"denied",t=!0===e.purposes.targeted_advertising?"granted":"denied",a={analytics_storage:n,ad_personalization:t,ad_storage:t,ad_user_data:t};window.gtag("consent","update",a)}};window.ketch&&window.ketch("on","consent",e)}()</script><link rel="stylesheet" href="/assets/css/styles.e756ed1e.css">
<script src="/assets/js/runtime~main.16a1d68d.js" defer="defer"></script>
<script src="/assets/js/main.6e50f663.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
</defs></svg>
<script>!function(){var t=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",t||(window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light")),document.documentElement.setAttribute("data-theme-choice",t||"system")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="theme-layout-navbar navbar navbar--fixed-top navbarHideable_m1mJ"><div class="navbar__inner"><div class="theme-layout-navbar-left navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navbar__brand" href="/"><div class="navbar__logo"><img src="/img/lf-docs-light.svg" alt="Langflow" class="themedComponent_mlkZ themedComponent--light_NVdE"><img src="/img/lf-docs-dark.svg" alt="Langflow" class="themedComponent_mlkZ themedComponent--dark_xIcU"></div></a></div><div class="theme-layout-navbar-right navbar__items navbar__items--right"><a href="https://github.com/langflow-ai/langflow" target="_blank" class="navbar__item navbar__link header-github-link" data-event="Docs.langflow.org - Social Clicked" data-platform="github"></a><a href="https://twitter.com/langflow_ai" target="_blank" class="navbar__item navbar__link header-twitter-link" data-event="Docs.langflow.org - Social Clicked" data-platform="x"></a><a href="https://discord.gg/EqksyE2EX9" target="_blank" class="navbar__item navbar__link header-discord-link" data-event="Docs.langflow.org - Social Clicked" data-platform="discord"></a><div class="toggle_vylO colorModeToggle_DEke"><button class="clean-btn toggleButton_gllP toggleButtonDisabled_aARS" type="button" disabled="" title="system mode" aria-label="Switch between dark and light mode (currently system mode)"><svg viewBox="0 0 24 24" width="24" height="24" aria-hidden="true" class="toggleIcon_g3eP lightToggleIcon_pyhR"><path fill="currentColor" d="M12,9c1.65,0,3,1.35,3,3s-1.35,3-3,3s-3-1.35-3-3S10.35,9,12,9 M12,7c-2.76,0-5,2.24-5,5s2.24,5,5,5s5-2.24,5-5 S14.76,7,12,7L12,7z M2,13l2,0c0.55,0,1-0.45,1-1s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S1.45,13,2,13z M20,13l2,0c0.55,0,1-0.45,1-1 s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S19.45,13,20,13z M11,2v2c0,0.55,0.45,1,1,1s1-0.45,1-1V2c0-0.55-0.45-1-1-1S11,1.45,11,2z M11,20v2c0,0.55,0.45,1,1,1s1-0.45,1-1v-2c0-0.55-0.45-1-1-1C11.45,19,11,19.45,11,20z M5.99,4.58c-0.39-0.39-1.03-0.39-1.41,0 c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0s0.39-1.03,0-1.41L5.99,4.58z M18.36,16.95 c-0.39-0.39-1.03-0.39-1.41,0c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0c0.39-0.39,0.39-1.03,0-1.41 L18.36,16.95z M19.42,5.99c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06c-0.39,0.39-0.39,1.03,0,1.41 s1.03,0.39,1.41,0L19.42,5.99z M7.05,18.36c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06 c-0.39,0.39-0.39,1.03,0,1.41s1.03,0.39,1.41,0L7.05,18.36z"></path></svg><svg viewBox="0 0 24 24" width="24" height="24" aria-hidden="true" class="toggleIcon_g3eP darkToggleIcon_wfgR"><path fill="currentColor" d="M9.37,5.51C9.19,6.15,9.1,6.82,9.1,7.5c0,4.08,3.32,7.4,7.4,7.4c0.68,0,1.35-0.09,1.99-0.27C17.45,17.19,14.93,19,12,19 c-3.86,0-7-3.14-7-7C5,9.07,6.81,6.55,9.37,5.51z M12,3c-4.97,0-9,4.03-9,9s4.03,9,9,9s9-4.03,9-9c0-0.46-0.04-0.92-0.1-1.36 c-0.98,1.37-2.58,2.26-4.4,2.26c-2.98,0-5.4-2.42-5.4-5.4c0-1.81,0.89-3.42,2.26-4.4C12.92,3.04,12.46,3,12,3L12,3z"></path></svg><svg viewBox="0 0 24 24" width="24" height="24" aria-hidden="true" class="toggleIcon_g3eP systemToggleIcon_QzmC"><path fill="currentColor" d="m12 21c4.971 0 9-4.029 9-9s-4.029-9-9-9-9 4.029-9 9 4.029 9 9 9zm4.95-13.95c1.313 1.313 2.05 3.093 2.05 4.95s-0.738 3.637-2.05 4.95c-1.313 1.313-3.093 2.05-4.95 2.05v-14c1.857 0 3.637 0.737 4.95 2.05z"></path></svg></button></div><div class="navbarSearchContainer_Bca1"><button type="button" class="DocSearch DocSearch-Button" aria-label="Search (Command+K)"><span class="DocSearch-Button-Container"><svg width="20" height="20" class="DocSearch-Search-Icon" viewBox="0 0 20 20" aria-hidden="true"><path d="M14.386 14.386l4.0877 4.0877-4.0877-4.0877c-2.9418 2.9419-7.7115 2.9419-10.6533 0-2.9419-2.9418-2.9419-7.7115 0-10.6533 2.9418-2.9419 7.7115-2.9419 10.6533 0 2.9419 2.9418 2.9419 7.7115 0 10.6533z" stroke="currentColor" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"></path></svg><span class="DocSearch-Button-Placeholder">Search</span></span><span class="DocSearch-Button-Keys"></span></button></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div></nav><div id="__docusaurus_skipToContent_fallback" class="theme-layout-main main-wrapper mainWrapper_z2l0"><div class="docsWrapper_hBAB"><button aria-label="Scroll back to top" class="clean-btn theme-back-to-top-button backToTopButton_sjWU" type="button"></button><div class="docRoot_UBD9"><aside class="theme-doc-sidebar-container docSidebarContainer_YfHR"><div class="sidebarViewport_aRkj"><div class="sidebar_njMd sidebarWithHideableNavbar_wUlq"><a tabindex="-1" class="sidebarLogo_isFc" href="/"><img src="/img/lf-docs-light.svg" alt="Langflow" class="themedComponent_mlkZ themedComponent--light_NVdE"><img src="/img/lf-docs-dark.svg" alt="Langflow" class="themedComponent_mlkZ themedComponent--dark_xIcU"></a><nav aria-label="Docs sidebar" class="menu thin-scrollbar menu_SIkG"><ul class="theme-doc-sidebar-menu menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class="menu__link" href="/">Welcome to Langflow</a></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" role="button" aria-expanded="false" href="/about-langflow">Get started</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" role="button" aria-expanded="false" href="/concepts-overview">Flows</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" role="button" aria-expanded="false" href="/agents">Agents</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" role="button" aria-expanded="false" href="/mcp-client">Model Context Protocol (MCP)</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret menu__link--active" role="button" aria-expanded="true" href="/api-keys-and-authentication">Develop</a></div><ul class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/api-keys-and-authentication">API keys and authentication</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/install-custom-dependencies">Install custom dependencies</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/configuration-global-variables">Global variables</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/environment-variables">Environment variables</a></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret menu__link--active" role="button" aria-expanded="true" tabindex="0" href="/concepts-file-management">Storage and memory</a></div><ul class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class="menu__link" tabindex="0" href="/concepts-file-management">Manage files</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class="menu__link" tabindex="0" href="/memory">Manage memory</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class="menu__link" tabindex="0" href="/session-id">Use Session IDs</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class="menu__link" tabindex="0" href="/configuration-custom-database">Configure an external PostgreSQL database</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class="menu__link menu__link--active" aria-current="page" tabindex="0" href="/enterprise-database-guide">Database guide for enterprise administrators</a></li></ul></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" role="button" aria-expanded="false" tabindex="0" href="/logging">Observability</a></div></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/data-types">Use Langflow data types</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/concepts-voice-mode">Use voice mode</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/configuration-cli">Use the Langflow CLI</a></li></ul></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" role="button" aria-expanded="false" href="/deployment-overview">Deploy</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" role="button" aria-expanded="false" href="/concepts-components">Components reference</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" role="button" aria-expanded="false" href="/api-reference-api-examples">API reference</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" role="button" aria-expanded="false" href="/contributing-community">Contribute</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" role="button" aria-expanded="false" href="/release-notes">Release notes</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" role="button" aria-expanded="false" href="/troubleshoot">Support</a></div></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 sidebar-ad">
<a href="https://www.langflow.org/desktop" target="_blank" class="menu__link">
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_1645_37)">
<path d="M12 17H20C21.1046 17 22 16.1046 22 15V13M12 17H4C2.89543 17 2 16.1046 2 15V5C2 3.89543 2.89543 3 4 3H10M12 17V21M8 21H12M12 21H16M11.75 10.2917H13.2083L16.125 7.375H17.5833L20.5 4.45833H21.9583M16.125 11.75H17.5833L20.5 8.83333H21.9583M11.75 5.91667H13.2083L16.125 3H17.5833" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
</g>
<defs>
<clipPath id="clip0_1645_37">
<rect width="24" height="24" fill="white"/>
</clipPath>
</defs>
</svg>
<div class="sidebar-ad-text-container">
<span class="sidebar-ad-text">Get started in minutes</span>
<span class="sidebar-ad-text sidebar-ad-text-gradient">Download Langflow Desktop</span>
</div>
</a>
</li></ul></nav></div></div></aside><main class="docMainContainer_TBSr"><div class="container padding-top--md padding-bottom--lg"><div class="row"><div class="col docItemCol_VOVn"><div class="docItemContainer_Djhp"><article><nav class="theme-doc-breadcrumbs breadcrumbsContainer_Z_bl" aria-label="Breadcrumbs"><ul class="breadcrumbs"><li class="breadcrumbs__item"><a aria-label="Home page" class="breadcrumbs__link" href="/"><svg viewBox="0 0 24 24" class="breadcrumbHomeIcon_YNFT"><path d="M10 19v-5h4v5c0 .55.45 1 1 1h3c.55 0 1-.45 1-1v-7h1.7c.46 0 .68-.57.33-.87L12.67 3.6c-.38-.34-.96-.34-1.34 0l-8.36 7.53c-.34.3-.13.87.33.87H5v7c0 .55.45 1 1 1h3c.55 0 1-.45 1-1z" fill="currentColor"></path></svg></a></li><li class="breadcrumbs__item"><span class="breadcrumbs__link">Develop</span></li><li class="breadcrumbs__item"><span class="breadcrumbs__link">Storage and memory</span></li><li class="breadcrumbs__item breadcrumbs__item--active"><span class="breadcrumbs__link">Database guide for enterprise administrators</span></li></ul></nav><div class="tocCollapsible_ETCw theme-doc-toc-mobile tocMobile_ITEo"><button type="button" class="clean-btn tocCollapsibleButton_TO0P">On this page</button></div><div class="theme-doc-markdown markdown"><header><h1>Langflow database guide for enterprise DBAs</h1></header><style>[data-ch-theme="github-dark"] { --ch-t-colorScheme: dark;--ch-t-foreground: #c9d1d9;--ch-t-background: #0d1117;--ch-t-lighter-inlineBackground: #0d1117e6;--ch-t-editor-background: #0d1117;--ch-t-editor-foreground: #c9d1d9;--ch-t-editor-lineHighlightBackground: #6e76811a;--ch-t-editor-rangeHighlightBackground: #ffffff0b;--ch-t-editor-infoForeground: #3794FF;--ch-t-editor-selectionBackground: #264F78;--ch-t-focusBorder: #1f6feb;--ch-t-tab-activeBackground: #0d1117;--ch-t-tab-activeForeground: #c9d1d9;--ch-t-tab-inactiveBackground: #010409;--ch-t-tab-inactiveForeground: #8b949e;--ch-t-tab-border: #30363d;--ch-t-tab-activeBorder: #0d1117;--ch-t-editorGroup-border: #30363d;--ch-t-editorGroupHeader-tabsBackground: #010409;--ch-t-editorLineNumber-foreground: #6e7681;--ch-t-input-background: #0d1117;--ch-t-input-foreground: #c9d1d9;--ch-t-input-border: #30363d;--ch-t-icon-foreground: #8b949e;--ch-t-sideBar-background: #010409;--ch-t-sideBar-foreground: #c9d1d9;--ch-t-sideBar-border: #30363d;--ch-t-list-activeSelectionBackground: #6e768166;--ch-t-list-activeSelectionForeground: #c9d1d9;--ch-t-list-hoverBackground: #6e76811a;--ch-t-list-hoverForeground: #c9d1d9; }</style>
<!-- -->
<p>The Langflow database stores data that is essential for more Langflow operations, including startup, flow execution, user interactions, and administrative tasks.
The database supports both frontend (visual editor) and backend (API) operations, making its availability critical to Langflow&#x27;s stability and functionality.
For details about the database schema, see <a href="/memory">Memory management options</a>.</p>
<p>This guide is designed for enterprise database administrators (DBAs) and operators responsible for deploying and managing Langflow in production environments.
It explains how to configure Langflow to use PostgreSQL, including high availability (HA) and active-active configurations, as well as best practices for monitoring, maintenance, and security.</p>
<h2 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="configure-langflow-with-postgresql">Configure Langflow with PostgreSQL<a href="#configure-langflow-with-postgresql" class="hash-link" aria-label="Direct link to Configure Langflow with PostgreSQL" title="Direct link to Configure Langflow with PostgreSQL"></a></h2>
<p>Langflow&#x27;s default database is SQLite.
However, PostgreSQL is recommended for production deployments due to its scalability, performance, and robustness.</p>
<p>The following steps explain how to configure Langflow to use PostgreSQL for a standalone or containerized deployment.
For more information, see <a href="/configuration-custom-database">Configure an external PostgreSQL database</a>.</p>
<ol>
<li>
<p>Set up PostgreSQL:</p>
<ol>
<li>Deploy a PostgreSQL instance (version 12 or higher recommended) using a local server, Docker, or a managed cloud service.</li>
<li>Create a database for Langflow.</li>
<li>Create a PostgreSQL user with appropriate, minimal permissions to manage and write to the database, such as CREATE, SELECT, INSERT, UPDATE, DELETE on your Langflow tables.</li>
</ol>
</li>
<li>
<p>Obtain the connection string in the format <code>postgresql://user:password@host:port/dbname</code>, such as<code>postgresql://langflow:securepassword@postgres:5432/langflow</code>.</p>
<p>For High Availability, use the virtual IP or proxy hostname instead of the direct database host.
For more information, see <a href="#high-availability-for-postgresql">High Availability for PostgreSQL</a>.</p>
</li>
<li>
<p>Configure Langflow with the <code>.env</code> or <code>docker-compose.yml</code> files.</p>
<div class="tabs-container tabList__CuJ"><ul role="tablist" aria-orientation="horizontal" class="tabs"><li role="tab" tabindex="0" aria-selected="true" class="tabs__item tabItem_LNqP tabs__item--active">.env</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_LNqP">docker-compose.yml</li></ul><div class="margin-top--md"><div role="tabpanel" class="tabItem_Ymn6"><ol>
<li>
<p>Create a <code>.env</code> file in the <code>langflow</code> directory:</p>
<div class="ch-codeblock not-prose" data-ch-theme="github-dark"><div class="ch-code-wrapper ch-code" data-ch-measured="false"><code class="ch-code-scroll-parent"><br><div><span class="ch-code-line-number">_<!-- -->10</span><div style="display:inline-block;margin-left:16px"><span>touch .env</span></div></div><br></code></div></div>
</li>
<li>
<p>Add the connection string to the <code>.env</code> file:</p>
<div class="ch-codeblock not-prose" data-ch-theme="github-dark"><div class="ch-code-wrapper ch-code" data-ch-measured="false"><code class="ch-code-scroll-parent"><br><div><span class="ch-code-line-number">_<!-- -->10</span><div style="display:inline-block;margin-left:16px"><span>LANGFLOW_DATABASE_URL=&quot;postgresql://langflow:securepassword@postgres:5432/langflow&quot;</span></div></div><br></code></div></div>
</li>
</ol><p>For more environment variables, see the <code>.env.example</code> file in the Langflow repository.</p></div><div role="tabpanel" class="tabItem_Ymn6" hidden=""><p>Use the sample <code>docker-compose.yml</code> from the Langflow Repository.
You can use the default values or customize them as needed.</p><div class="ch-codeblock not-prose" data-ch-theme="github-dark"><div class="ch-code-wrapper ch-code" data-ch-measured="false"><code class="ch-code-scroll-parent"><br><div><span class="ch-code-line-number">_<!-- -->20</span><div style="display:inline-block;margin-left:16px"><span>version: &#x27;3&#x27;</span></div></div><div><span class="ch-code-line-number">_<!-- -->20</span><div style="display:inline-block;margin-left:16px"><span>services:</span></div></div><div><span class="ch-code-line-number">_<!-- -->20</span><div style="display:inline-block;margin-left:16px"><span> langflow:</span></div></div><div><span class="ch-code-line-number">_<!-- -->20</span><div style="display:inline-block;margin-left:16px"><span> image: langflowai/langflow:latest</span></div></div><div><span class="ch-code-line-number">_<!-- -->20</span><div style="display:inline-block;margin-left:16px"><span> ports:</span></div></div><div><span class="ch-code-line-number">_<!-- -->20</span><div style="display:inline-block;margin-left:16px"><span> - &quot;7860:7860&quot;</span></div></div><div><span class="ch-code-line-number">_<!-- -->20</span><div style="display:inline-block;margin-left:16px"><span> environment:</span></div></div><div><span class="ch-code-line-number">_<!-- -->20</span><div style="display:inline-block;margin-left:16px"><span> - LANGFLOW_DATABASE_URL=postgresql://langflow:langflow@postgres:5432/langflow</span></div></div><div><span class="ch-code-line-number">_<!-- -->20</span><div style="display:inline-block;margin-left:16px"><span> postgres:</span></div></div><div><span class="ch-code-line-number">_<!-- -->20</span><div style="display:inline-block;margin-left:16px"><span> image: postgres:16</span></div></div><div><span class="ch-code-line-number">_<!-- -->20</span><div style="display:inline-block;margin-left:16px"><span> ports:</span></div></div><div><span class="ch-code-line-number">_<!-- -->20</span><div style="display:inline-block;margin-left:16px"><span> - &quot;5432:5432&quot;</span></div></div><div><span class="ch-code-line-number">_<!-- -->20</span><div style="display:inline-block;margin-left:16px"><span> environment:</span></div></div><div><span class="ch-code-line-number">_<!-- -->20</span><div style="display:inline-block;margin-left:16px"><span> - POSTGRES_USER=langflow</span></div></div><div><span class="ch-code-line-number">_<!-- -->20</span><div style="display:inline-block;margin-left:16px"><span> - POSTGRES_PASSWORD=langflow</span></div></div><div><span class="ch-code-line-number">_<!-- -->20</span><div style="display:inline-block;margin-left:16px"><span> - POSTGRES_DB=langflow</span></div></div><div><span class="ch-code-line-number">_<!-- -->20</span><div style="display:inline-block;margin-left:16px"><span> volumes:</span></div></div><div><span class="ch-code-line-number">_<!-- -->20</span><div style="display:inline-block;margin-left:16px"><span> - langflow-postgres:/var/lib/postgresql/data</span></div></div><div><span class="ch-code-line-number">_<!-- -->20</span><div style="display:inline-block;margin-left:16px"><span>volumes:</span></div></div><div><span class="ch-code-line-number">_<!-- -->20</span><div style="display:inline-block;margin-left:16px"><span> - langflow-postgres:</span></div></div><br></code></div></div></div></div></div>
</li>
<li>
<p>Start Langflow with your PostgreSQL connection:</p>
<div class="tabs-container tabList__CuJ"><ul role="tablist" aria-orientation="horizontal" class="tabs"><li role="tab" tabindex="0" aria-selected="true" class="tabs__item tabItem_LNqP tabs__item--active">.env</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_LNqP">docker-compose.yml</li></ul><div class="margin-top--md"><div role="tabpanel" class="tabItem_Ymn6"><div class="ch-codeblock not-prose" data-ch-theme="github-dark"><div class="ch-code-wrapper ch-code" data-ch-measured="false"><code class="ch-code-scroll-parent"><br><div><span class="ch-code-line-number">_<!-- -->10</span><div style="display:inline-block;margin-left:16px"><span>uv run langflow run --env-file .env</span></div></div><br></code></div></div></div><div role="tabpanel" class="tabItem_Ymn6" hidden=""><p>Navigate to the directory containing <code>docker-compose.yml</code>, and then run <code>docker-compose up</code>.</p></div></div></div>
</li>
<li>
<p>Optional: Run migrations.</p>
<p>Langflow uses migrations to manage its database schema.
When you first connect to PostgreSQL, Langflow automatically runs migrations to create the necessary tables.</p>
<p>Direct schema modification can cause conflicts with Langflow&#x27;s built-in schema management.
If you need to update the schema, you can manually run migrations with the Langflow CLI:</p>
<ol>
<li>
<p>Run <code>langflow migration</code> to preview the changes.</p>
</li>
<li>
<p>Review the changes to ensure that it&#x27;s safe to proceed with the migration.</p>
</li>
<li>
<p>Run <code>langflow migration --fix</code> to run the migration and permanently apply the changes.</p>
<p>This is a destructive operation that can delete data.
For more information, see <a href="/configuration-cli#langflow-migration"><code>langflow migration</code></a>.</p>
</li>
</ol>
</li>
<li>
<p>To verify the configuration, create any flow using the Langflow visual editor or API, and then query your database to confirm the tables and activity are recorded there. The content of the flow doesn&#x27;t matter; you only need to confirm that the flow is stored in your PostgreSQL database.
You can query the database in two ways:</p>
<ul>
<li>
<p>Query the database container:</p>
<div class="ch-codeblock not-prose" data-ch-theme="github-dark"><div class="ch-code-wrapper ch-code" data-ch-measured="false"><code class="ch-code-scroll-parent"><br><div><span class="ch-code-line-number">_<!-- -->10</span><div style="display:inline-block;margin-left:16px"><span>docker exec -it &lt;postgres-container&gt; psql -U langflow -d langflow</span></div></div><br></code></div></div>
</li>
<li>
<p>Use SQL:</p>
<div class="ch-codeblock not-prose" data-ch-theme="github-dark"><div class="ch-code-wrapper ch-code" data-ch-measured="false"><code class="ch-code-scroll-parent"><br><div><span class="ch-code-line-number">_<!-- -->10</span><div style="display:inline-block;margin-left:16px"><span>SELECT * FROM pg_stat_activity WHERE datname = &#x27;langflow&#x27;;</span></div></div><br></code></div></div>
</li>
</ul>
</li>
</ol>
<h3 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="high-availability-for-postgresql">High Availability for PostgreSQL<a href="#high-availability-for-postgresql" class="hash-link" aria-label="Direct link to High Availability for PostgreSQL" title="Direct link to High Availability for PostgreSQL"></a></h3>
<p>To further improve performance, reliability, and scalability, use a High Availability (HA) or Active-Active HA PostgreSQL configuration.
This is recommended for production deployments to minimize downtime and ensure continuous operations if your database server fails, especially when multiple Langflow instances rely on the same database.</p>
<div class="tabs-container tabList__CuJ"><ul role="tablist" aria-orientation="horizontal" class="tabs"><li role="tab" tabindex="0" aria-selected="true" class="tabs__item tabItem_LNqP tabs__item--active">High Availability (HA)</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_LNqP">Active-Active HA</li></ul><div class="margin-top--md"><div role="tabpanel" class="tabItem_Ymn6"><ol>
<li>
<p>Set up streaming replication:</p>
<ol>
<li>
<p>Configure one primary database for writes.</p>
</li>
<li>
<p>Configure one or more replicas for reads and failover.</p>
<p>Select either synchronous or asynchronous replication based on your latency and consistency requirements.</p>
</li>
</ol>
</li>
<li>
<p>Implement automatic failover using one of the following options:</p>
<ul>
<li>Use an HA orchestrator, distributed configuration store, and traffic router, such as <a href="https://patroni.readthedocs.io/en/latest/" target="_blank" rel="noopener noreferrer">Patroni</a>, etcd or <a href="https://developer.hashicorp.com/consul" target="_blank" rel="noopener noreferrer">Consul</a>, and <a href="https://www.haproxy.org/" target="_blank" rel="noopener noreferrer">HAProxy</a>.</li>
<li>Use <a href="https://www.pgpool.net/docs/46/en/html/index.html" target="_blank" rel="noopener noreferrer">Pgpool-II</a> alone or add supporting services for more robust HA support.</li>
<li>Use managed services that provide built-in HA with automatic failover, such as AWS RDS or Google Cloud SQL.</li>
</ul>
</li>
<li>
<p>Update your PostgreSQL connection string to point to the HA setup.
If you have a multi-instance deployment, make sure all of your Langflow instances connect to the same HA PostgreSQL database.</p>
<p>The connection string you use depends on your HA configuration and services.</p>
<ul>
<li>Use a virtual IP or DNS name that resolves to the current primary database, such as <code>postgresql://langflow:securepassword@db-proxy:5432/langflow?sslmode=require</code>.</li>
<li>Use the provided endpoint for a managed service, such as <code>langflow.cluster-xyz.us-east-1.rds.amazonaws.com</code>.</li>
</ul>
</li>
<li>
<p>Optional: Implement load balancing for read-heavy workloads:</p>
<ol>
<li>Use a connection pooler like <a href="https://www.pgbouncer.org/" target="_blank" rel="noopener noreferrer">PgBouncer</a> to distribute read queries across replicas.</li>
<li>Configure Langflow to use a single connection string pointing to the primary PostgreSQL database or proxy.</li>
</ol>
</li>
</ol></div><div role="tabpanel" class="tabItem_Ymn6" hidden=""><p>To implement Active-Active HA, you must deploy multiple Langflow instances, use load balancing to distribute traffic across the instances, and ensure all instances connect to the same HA PostgreSQL database:</p><ol>
<li>
<p>Deploy multiple Langflow instances using Kubernetes or Docker Swarm.</p>
<p>You must configure your instances to use a shared PostgreSQL database.
For more information, see <a href="/deployment-prod-best-practices">Best practices for Langflow on Kubernetes</a>.</p>
</li>
<li>
<p>Set up streaming replication:</p>
<ol>
<li>
<p>Configure one primary database for writes.</p>
</li>
<li>
<p>Configure one or more replicas for reads and failover.</p>
<p>Select either synchronous or asynchronous replication based on your latency and consistency requirements.</p>
</li>
</ol>
</li>
<li>
<p>Implement automatic failover using one of the following options:</p>
<ul>
<li>Use an HA orchestrator, distributed configuration store, and traffic router, such as <a href="https://patroni.readthedocs.io/en/latest/" target="_blank" rel="noopener noreferrer">Patroni</a>, etcd or <a href="https://developer.hashicorp.com/consul" target="_blank" rel="noopener noreferrer">Consul</a>, and <a href="https://www.haproxy.org/" target="_blank" rel="noopener noreferrer">HAProxy</a>.</li>
<li>Use <a href="https://www.pgpool.net/docs/46/en/html/index.html" target="_blank" rel="noopener noreferrer">Pgpool-II</a> alone or add supporting services for more robust HA support.</li>
<li>Use managed services that provide built-in HA with automatic failover, such as AWS RDS or Google Cloud SQL.</li>
</ul>
</li>
<li>
<p>Update your PostgreSQL connection string to point to the HA setup.
Make sure all of your Langflow instances connect to the same HA PostgreSQL database.</p>
<p>The connection string you use depends on your HA configuration and services:</p>
<ul>
<li>Use a virtual IP or DNS name that resolves to the current primary database, such as <code>postgresql://langflow:securepassword@db-proxy:5432/langflow?sslmode=require</code>.</li>
<li>Use the provided endpoint for a managed service, such as <code>langflow.cluster-xyz.us-east-1.rds.amazonaws.com</code>.</li>
</ul>
</li>
<li>
<p>Use a load balancer to distribute requests across your instances.</p>
</li>
</ol><p>The following example configuration is for a production deployment that has three <code>langflow-runtime</code> replicas, uses the Kubernetes load balancer service to distribute traffic to healthy pods, and uses the HA PostgreSQL database connection string.</p><div class="ch-codeblock not-prose" data-ch-theme="github-dark"><div class="ch-code-wrapper ch-code" data-ch-measured="false"><code class="ch-code-scroll-parent"><br><div><span class="ch-code-line-number">_<!-- -->34</span><div style="display:inline-block;margin-left:16px"><span>apiVersion: apps/v1</span></div></div><div><span class="ch-code-line-number">_<!-- -->34</span><div style="display:inline-block;margin-left:16px"><span>kind: Deployment</span></div></div><div><span class="ch-code-line-number">_<!-- -->34</span><div style="display:inline-block;margin-left:16px"><span>metadata:</span></div></div><div><span class="ch-code-line-number">_<!-- -->34</span><div style="display:inline-block;margin-left:16px"><span> name: langflow-runtime</span></div></div><div><span class="ch-code-line-number">_<!-- -->34</span><div style="display:inline-block;margin-left:16px"><span>spec:</span></div></div><div><span class="ch-code-line-number">_<!-- -->34</span><div style="display:inline-block;margin-left:16px"><span> replicas: 3</span></div></div><div><span class="ch-code-line-number">_<!-- -->34</span><div style="display:inline-block;margin-left:16px"><span> selector:</span></div></div><div><span class="ch-code-line-number">_<!-- -->34</span><div style="display:inline-block;margin-left:16px"><span> matchLabels:</span></div></div><div><span class="ch-code-line-number">_<!-- -->34</span><div style="display:inline-block;margin-left:16px"><span> app: langflow-runtime</span></div></div><div><span class="ch-code-line-number">_<!-- -->34</span><div style="display:inline-block;margin-left:16px"><span> template:</span></div></div><div><span class="ch-code-line-number">_<!-- -->34</span><div style="display:inline-block;margin-left:16px"><span> metadata:</span></div></div><div><span class="ch-code-line-number">_<!-- -->34</span><div style="display:inline-block;margin-left:16px"><span> labels:</span></div></div><div><span class="ch-code-line-number">_<!-- -->34</span><div style="display:inline-block;margin-left:16px"><span> app: langflow-runtime</span></div></div><div><span class="ch-code-line-number">_<!-- -->34</span><div style="display:inline-block;margin-left:16px"><span> spec:</span></div></div><div><span class="ch-code-line-number">_<!-- -->34</span><div style="display:inline-block;margin-left:16px"><span> containers:</span></div></div><div><span class="ch-code-line-number">_<!-- -->34</span><div style="display:inline-block;margin-left:16px"><span> - name: langflow</span></div></div><div><span class="ch-code-line-number">_<!-- -->34</span><div style="display:inline-block;margin-left:16px"><span> image: langflowai/langflow:latest</span></div></div><div><span class="ch-code-line-number">_<!-- -->34</span><div style="display:inline-block;margin-left:16px"><span> ports:</span></div></div><div><span class="ch-code-line-number">_<!-- -->34</span><div style="display:inline-block;margin-left:16px"><span> - containerPort: 7860</span></div></div><div><span class="ch-code-line-number">_<!-- -->34</span><div style="display:inline-block;margin-left:16px"><span> env:</span></div></div><div><span class="ch-code-line-number">_<!-- -->34</span><div style="display:inline-block;margin-left:16px"><span> - name: LANGFLOW_DATABASE_URL</span></div></div><div><span class="ch-code-line-number">_<!-- -->34</span><div style="display:inline-block;margin-left:16px"><span> value: &quot;postgresql://langflow:securepassword@db-proxy:5432/langflow?sslmode=require&quot;</span></div></div><div><span class="ch-code-line-number">_<!-- -->34</span><div style="display:inline-block;margin-left:16px"><span>---</span></div></div><div><span class="ch-code-line-number">_<!-- -->34</span><div style="display:inline-block;margin-left:16px"><span>apiVersion: v1</span></div></div><div><span class="ch-code-line-number">_<!-- -->34</span><div style="display:inline-block;margin-left:16px"><span>kind: Service</span></div></div><div><span class="ch-code-line-number">_<!-- -->34</span><div style="display:inline-block;margin-left:16px"><span>metadata:</span></div></div><div><span class="ch-code-line-number">_<!-- -->34</span><div style="display:inline-block;margin-left:16px"><span> name: langflow-runtime</span></div></div><div><span class="ch-code-line-number">_<!-- -->34</span><div style="display:inline-block;margin-left:16px"><span>spec:</span></div></div><div><span class="ch-code-line-number">_<!-- -->34</span><div style="display:inline-block;margin-left:16px"><span> selector:</span></div></div><div><span class="ch-code-line-number">_<!-- -->34</span><div style="display:inline-block;margin-left:16px"><span> app: langflow-runtime</span></div></div><div><span class="ch-code-line-number">_<!-- -->34</span><div style="display:inline-block;margin-left:16px"><span> ports:</span></div></div><div><span class="ch-code-line-number">_<!-- -->34</span><div style="display:inline-block;margin-left:16px"><span> - port: 80</span></div></div><div><span class="ch-code-line-number">_<!-- -->34</span><div style="display:inline-block;margin-left:16px"><span> targetPort: 7860</span></div></div><div><span class="ch-code-line-number">_<!-- -->34</span><div style="display:inline-block;margin-left:16px"><span> type: LoadBalancer</span></div></div><br></code></div></div></div></div></div>
<p>After implementing HA or Active-Active HA, monitor failover events and ensure replicas are in sync.
Langflow, through <a href="https://docs.sqlalchemy.org/en/20/" target="_blank" rel="noopener noreferrer">SQLAlchemy</a>, supports reconnection attempts if <code>LANGFLOW_DATABASE_CONNECTION_RETRY=True</code>, ensures recovery after failover, and reduces disruption once the database is back online.</p>
<p>Although PostgreSQL handles concurrent connections well, you must still monitor for contention, deadlocks, or other performance degradation during high load.</p>
<h2 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="impact-of-database-failure">Impact of database failure<a href="#impact-of-database-failure" class="hash-link" aria-label="Direct link to Impact of database failure" title="Direct link to Impact of database failure"></a></h2>
<p>If the PostgreSQL database becomes unavailable, the following Langflow functions will fail:</p>
<ul>
<li><strong>Flow Retrieval</strong>: Cannot load new or existing flows from the database.</li>
<li><strong>Flow Saving</strong>: Unable to save new flows or updates to existing flows.</li>
<li><strong>User Authentication</strong>: Login and user management functions fail.</li>
<li><strong>Project Collection Access</strong>: Cannot access or share community/custom project collections.</li>
<li><strong>Configuration Retrieval</strong>: Unable to load application settings.</li>
<li><strong>Configuration Updates</strong>: Changes to settings cannot be saved.</li>
<li><strong>Execution Log Access</strong>: Cannot retrieve historical flow execution logs.</li>
<li><strong>Log Writing</strong>: New execution or system activity logs cannot be recorded.</li>
<li><strong>Multi-User Collaboration</strong>: Sharing flows or projects across users fails.</li>
<li><strong>API Flow Loading</strong>: API requests to load new flows (non-cached) fail.</li>
</ul>
<p>Flows already loaded in memory may continue to function with cached configurations.
However, any operation requiring database access fails until the database is restored.
For example, a cached flow might run, but it won&#x27;t record logs or message history to the database.</p>
<p>To minimize the possibility and impact of database failure, use <a href="#high-availability-for-postgresql">HA configurations</a> and record backups regularly.
For example, you can use <code>pg_dump</code> to create logical backups or set up continuous archiving with write-ahead logs (WAL) for point-in-time recovery.
Test restoration procedures regularly to ensure your team understands how to execute them in a disaster recovery scenario.</p>
<h2 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="database-monitoring">Database monitoring<a href="#database-monitoring" class="hash-link" aria-label="Direct link to Database monitoring" title="Direct link to Database monitoring"></a></h2>
<p>Monitor your PostgreSQL database to ensure optimal performance and reliability:</p>
<ul>
<li>Use tools like pgAdmin, Prometheus with PostgreSQL exporter, or cloud-based monitoring for PostgreSQL.</li>
<li>Track performance metrics such as CPU, memory, and disk I/O usage.</li>
<li>Monitor replica health, availability, lag, and synchronization.
For example, use <code>pg_stat_activity</code> to monitor connection counts and contention.</li>
<li>Set up alerts and notifications for high latency, failover events, or replication issues.</li>
<li>Enable PostgreSQL logging, such as <code>log_connections</code> and <code>log_statements</code>, to track access and changes.</li>
</ul>
<h2 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="see-also">See also<a href="#see-also" class="hash-link" aria-label="Direct link to See also" title="Direct link to See also"></a></h2>
<ul>
<li><a href="/configuration-custom-database">Configure an external PostgreSQL database</a></li>
<li><a href="/deployment-architecture">Langflow architecture on Kubernetes</a></li>
<li><a href="/deployment-kubernetes-prod">Deploy the Langflow production environment on Kubernetes</a></li>
</ul></div></article><nav class="docusaurus-mt-lg pagination-nav" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/configuration-custom-database"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">Configure an external PostgreSQL database</div></a><a class="pagination-nav__link pagination-nav__link--next" href="/logging"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Logs</div></a></nav></div></div><div class="col col--3"><div class="tableOfContents_bqdL thin-scrollbar theme-doc-toc-desktop"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#configure-langflow-with-postgresql" class="table-of-contents__link toc-highlight">Configure Langflow with PostgreSQL</a><ul><li><a href="#high-availability-for-postgresql" class="table-of-contents__link toc-highlight">High Availability for PostgreSQL</a></li></ul></li><li><a href="#impact-of-database-failure" class="table-of-contents__link toc-highlight">Impact of database failure</a></li><li><a href="#database-monitoring" class="table-of-contents__link toc-highlight">Database monitoring</a></li><li><a href="#see-also" class="table-of-contents__link toc-highlight">See also</a></li></ul></div></div></div></div></main></div></div></div><footer class="theme-layout-footer footer"><div class="container container-fluid"><div class="row footer__links"><div class="theme-layout-footer-column col footer__col"><div class="footer__title"></div><ul class="footer__items clean-list"><li class="footer__item"><div class="footer-links">
<span>© 2025 Langflow</span>
<span id="preferenceCenterContainer"> ·&nbsp; <a href="https://langflow.org/preferences">Manage Privacy Choices</a></span>
</div></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><img src="/img/lf-docs-light.svg" alt="Langflow" class="footer__logo themedComponent_mlkZ themedComponent--light_NVdE" width="160" height="40"><img src="/img/lf-docs-dark.svg" alt="Langflow" class="footer__logo themedComponent_mlkZ themedComponent--dark_xIcU" width="160" height="40"></div></div></div></footer><div style="position:fixed;right:20px;bottom:20px;z-index:100;display:flex;align-items:center;gap:10px;cursor:pointer"><div style="background-color:#f6f6f6;border-radius:50%;width:48px;height:48px;display:flex;align-items:center;justify-content:center;box-shadow:0 2px 4px rgba(0,0,0,0.1)"><img src="/img/langflow-icon-black-transparent.svg" style="width:40px" alt="Search"></div></div></div>
</body>
</html>