FusionAuth
    • Home
    • Categories
    • Recent
    • Popular
    • Pricing
    • Contact us
    • Docs
    • Login

    Struggling to backup selfhosted fusionAuth.

    Scheduled Pinned Locked Moved Unsolved
    Q&A
    3
    5
    1.9k
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • S
      spydmobile
      last edited by

      Hi folks, new user here, and love this IAM. Its working great in all respects, however, i recently decide to test disaster recovery and spun up a local version in containers running on postgresql. I backed up everything using pg_dumpall and then tried to restore that to a new postgres instance container using psql, which it did without any errors, when I brought fusionAuth up again pointing to the restored database, it would not launch, instead it gave me, hundreds of errors in fusionauth container log like:

      2025-01-31 16:33:44 fusionauth-1  | Starting fusionauth-app...
      2025-01-31 16:33:44 fusionauth-1  |   --> Logging to /usr/local/fusionauth/logs/fusionauth-app.log
      2025-01-31 16:33:44 fusionauth-1  | 2025-01-31 11:33:44.600 PM INFO  io.fusionauth.api.configuration.DefaultFusionAuthConfiguration - Loading FusionAuth configuration file [/usr/local/fusionauth/config/fusionauth.properties]
      2025-01-31 16:33:44 fusionauth-1  | 2025-01-31 11:33:44.611 PM INFO  io.fusionauth.api.configuration.DefaultFusionAuthConfiguration - Set property [fusionauth-app.url] set to [http://fusionauth:9011] using configured value.
      2025-01-31 16:33:44 fusionauth-1  | 2025-01-31 11:33:44.612 PM INFO  com.inversoft.configuration.BasePropertiesFileInversoftConfiguration - 
      2025-01-31 16:33:44 fusionauth-1  |   - Overriding default value of property [database.mysql.enforce-utf8mb4] with value [true]
      2025-01-31 16:33:44 fusionauth-1  |   - Overriding default value of property [FUSIONAUTH_APP_RUNTIME_MODE] with value [development]
      2025-01-31 16:33:44 fusionauth-1  |   - Overriding default value of property [SEARCH_TYPE] with value [elasticsearch]
      2025-01-31 16:33:44 fusionauth-1  | 
      2025-01-31 16:33:44 fusionauth-1  | 2025-01-31 11:33:44.629 PM INFO  io.fusionauth.api.configuration.DefaultFusionAuthConfiguration - Loading FusionAuth configuration file [/usr/local/fusionauth/config/fusionauth.properties]
      2025-01-31 16:33:44 fusionauth-1  | 2025-01-31 11:33:44.629 PM INFO  io.fusionauth.api.configuration.DefaultFusionAuthConfiguration - Set property [fusionauth-app.url] set to [http://fusionauth:9011] using configured value.
      2025-01-31 16:33:44 fusionauth-1  | 2025-01-31 11:33:44.629 PM INFO  com.inversoft.configuration.BasePropertiesFileInversoftConfiguration - 
      2025-01-31 16:33:44 fusionauth-1  |   - Overriding default value of property [database.mysql.enforce-utf8mb4] with value [true]
      2025-01-31 16:33:44 fusionauth-1  |   - Overriding default value of property [FUSIONAUTH_APP_RUNTIME_MODE] with value [development]
      2025-01-31 16:33:44 fusionauth-1  |   - Overriding default value of property [SEARCH_TYPE] with value [elasticsearch]
      2025-01-31 16:33:44 fusionauth-1  | 
      2025-01-31 16:33:44 fusionauth-1  | 2025-01-31 11:33:44.682 PM INFO  com.inversoft.maintenance.DefaultMaintenanceModeWorkflow - 
      2025-01-31 16:33:44 fusionauth-1  | 
      2025-01-31 16:33:44 fusionauth-1  | ---------------------------------------------------------------------------------------------------------
      2025-01-31 16:33:44 fusionauth-1  | ---------------------------------- Entering Silent Configuration Mode -----------------------------------
      2025-01-31 16:33:44 fusionauth-1  | ---------------------------------------------------------------------------------------------------------
      2025-01-31 16:33:44 fusionauth-1  | 
      2025-01-31 16:33:44 fusionauth-1  | 2025-01-31 11:33:44.773 PM INFO  com.inversoft.maintenance.db.JDBCMaintenanceModeDatabaseService - [b5TD7Q] Attempting to lock database to support multi-node configurations
      2025-01-31 16:33:44 fusionauth-1  | 2025-01-31 11:33:44.778 PM INFO  com.inversoft.maintenance.db.JDBCMaintenanceModeDatabaseService - [b5TD7Q] Obtained a database lock
      2025-01-31 16:33:44 fusionauth-1  | 2025-01-31 11:33:44.800 PM INFO  com.inversoft.maintenance.db.JDBCMaintenanceModeDatabaseService - [b5TD7Q] Database Version [1.55.1]
      2025-01-31 16:33:44 fusionauth-1  | 2025-01-31 11:33:44.802 PM INFO  com.inversoft.maintenance.db.JDBCMaintenanceModeDatabaseService - [b5TD7Q] Latest Migration Version [1.55.1]
      2025-01-31 16:33:44 fusionauth-1  | 2025-01-31 11:33:44.803 PM INFO  com.inversoft.maintenance.db.JDBCMaintenanceModeDatabaseService - [b5TD7Q] Attempting to unlock database to support multi-node configurations
      2025-01-31 16:33:44 fusionauth-1  | 2025-01-31 11:33:44.803 PM INFO  com.inversoft.maintenance.db.JDBCMaintenanceModeDatabaseService - [b5TD7Q] Unlock completed
      2025-01-31 16:33:44 fusionauth-1  | 2025-01-31 11:33:44.804 PM INFO  com.inversoft.search.ElasticRestClientHelper - Connecting to Elasticsearch at [http://search:9200]
      2025-01-31 16:33:44 fusionauth-1  | 2025-01-31 11:33:44.996 PM INFO  io.fusionauth.api.configuration.DefaultFusionAuthConfiguration - Loading FusionAuth configuration file [/usr/local/fusionauth/config/fusionauth.properties]
      2025-01-31 16:33:44 fusionauth-1  | 2025-01-31 11:33:44.996 PM INFO  io.fusionauth.api.configuration.DefaultFusionAuthConfiguration - Set property [fusionauth-app.url] set to [http://fusionauth:9011] using configured value.
      2025-01-31 16:33:44 fusionauth-1  | 2025-01-31 11:33:44.996 PM INFO  com.inversoft.configuration.BasePropertiesFileInversoftConfiguration - 
      2025-01-31 16:33:44 fusionauth-1  |   - Overriding default value of property [database.mysql.enforce-utf8mb4] with value [true]
      2025-01-31 16:33:44 fusionauth-1  |   - Overriding default value of property [FUSIONAUTH_APP_RUNTIME_MODE] with value [development]
      2025-01-31 16:33:44 fusionauth-1  |   - Overriding default value of property [SEARCH_TYPE] with value [elasticsearch]
      2025-01-31 16:33:44 fusionauth-1  | 
      2025-01-31 16:33:45 fusionauth-1  | 2025-01-31 11:33:45.040 PM INFO  com.inversoft.maintenance.MaintenanceModePoller - Poller started to Wait for configuration to be completed.
      2025-01-31 16:33:45 fusionauth-1  | 2025-01-31 11:33:45.041 PM INFO  io.fusionauth.app.primeframework.FusionHTTPContextAuthSetup - Initializing the FusionAuth HTTP Context.
      2025-01-31 16:33:45 fusionauth-1  | 2025-01-31 11:33:45.071 PM INFO  com.inversoft.maintenance.db.JDBCMaintenanceModeDatabaseService - [b5TD7Q] Database Version [1.55.1]
      2025-01-31 16:33:45 fusionauth-1  | 2025-01-31 11:33:45.071 PM INFO  com.inversoft.maintenance.db.JDBCMaintenanceModeDatabaseService - [b5TD7Q] Latest Migration Version [1.55.1]
      2025-01-31 16:33:45 fusionauth-1  | 2025-01-31 11:33:45.072 PM INFO  com.inversoft.search.ElasticRestClientHelper - Connecting to Elasticsearch at [http://search:9200]
      2025-01-31 16:33:45 fusionauth-1  | 2025-01-31 11:33:45.078 PM INFO  io.fusionauth.app.guice.FusionAuthModule - 
      2025-01-31 16:33:45 fusionauth-1  | 
      2025-01-31 16:33:45 fusionauth-1  | ---------------------------------------------------------------------------------------------------------
      2025-01-31 16:33:45 fusionauth-1  | --------------------------------- Starting FusionAuth version [1.55.1] ----------------------------------
      2025-01-31 16:33:45 fusionauth-1  | ---------------------------------------------------------------------------------------------------------
      2025-01-31 16:33:45 fusionauth-1  | 
      2025-01-31 16:33:45 fusionauth-1  | 2025-01-31 11:33:45.171 PM INFO  io.fusionauth.api.plugin.guice.PluginModule - No plugins found
      2025-01-31 16:33:45 fusionauth-1  | 2025-01-31 11:33:45.219 PM INFO  io.fusionauth.api.service.system.NodeService - Node [ee607efc-5736-480b-b3ad-3308126a8fbb] started.
      2025-01-31 16:33:45 fusionauth-1  | 2025-01-31 11:33:45.380 PM INFO  io.fusionauth.api.configuration.DefaultFusionAuthConfiguration - Loading FusionAuth configuration file [/usr/local/fusionauth/config/fusionauth.properties]
      2025-01-31 16:33:45 fusionauth-1  | 2025-01-31 11:33:45.380 PM INFO  io.fusionauth.api.configuration.DefaultFusionAuthConfiguration - Set property [fusionauth-app.url] set to [http://fusionauth:9011] using configured value.
      2025-01-31 16:33:45 fusionauth-1  | 2025-01-31 11:33:45.381 PM INFO  com.inversoft.configuration.BasePropertiesFileInversoftConfiguration - 
      2025-01-31 16:33:45 fusionauth-1  |   - Overriding default value of property [database.mysql.enforce-utf8mb4] with value [true]
      2025-01-31 16:33:45 fusionauth-1  |   - Overriding default value of property [FUSIONAUTH_APP_RUNTIME_MODE] with value [development]
      2025-01-31 16:33:45 fusionauth-1  |   - Overriding default value of property [SEARCH_TYPE] with value [elasticsearch]
      2025-01-31 16:33:45 fusionauth-1  | 
      2025-01-31 16:33:45 fusionauth-1  | 2025-01-31 11:33:45.381 PM INFO  com.inversoft.jdbc.hikari.DataSourceProvider - Connecting to PostgreSQL database at [jdbc:postgresql://db2:5432/fusionauth]
      2025-01-31 16:33:45 fusionauth-1  | 2025-01-31 11:33:45.384 PM INFO  com.zaxxer.hikari.HikariDataSource - Database-background - Starting...
      2025-01-31 16:33:45 fusionauth-1  | 2025-01-31 11:33:45.398 PM INFO  com.zaxxer.hikari.HikariDataSource - Database-background - Start completed.
      2025-01-31 16:33:45 fusionauth-1  | 2025-01-31 11:33:45.673 PM INFO  com.inversoft.jdbc.hikari.DataSourceProvider - Connecting to PostgreSQL database at [jdbc:postgresql://db2:5432/fusionauth]
      2025-01-31 16:33:45 fusionauth-1  | 2025-01-31 11:33:45.673 PM INFO  com.zaxxer.hikari.HikariDataSource - Database-primary - Starting...
      2025-01-31 16:33:45 fusionauth-1  | 2025-01-31 11:33:45.678 PM INFO  com.zaxxer.hikari.pool.HikariPool - Database-primary - Added connection org.postgresql.jdbc.PgConnection@175f859e
      2025-01-31 16:33:45 fusionauth-1  | 2025-01-31 11:33:45.678 PM INFO  com.zaxxer.hikari.HikariDataSource - Database-primary - Start completed.
      2025-01-31 16:33:45 fusionauth-1  | 2025-01-31 11:33:45.754 PM INFO  com.inversoft.jdbc.hikari.DataSourceProvider - Connecting to PostgreSQL database at [jdbc:postgresql://db2:5432/fusionauth]
      2025-01-31 16:33:45 fusionauth-1  | 2025-01-31 11:33:45.755 PM INFO  com.zaxxer.hikari.HikariDataSource - Database-secondary - Starting...
      2025-01-31 16:33:45 fusionauth-1  | 2025-01-31 11:33:45.759 PM INFO  com.zaxxer.hikari.pool.HikariPool - Database-secondary - Added connection org.postgresql.jdbc.PgConnection@21f91efa
      2025-01-31 16:33:45 fusionauth-1  | 2025-01-31 11:33:45.759 PM INFO  com.zaxxer.hikari.HikariDataSource - Database-secondary - Start completed.
      2025-01-31 16:33:45 fusionauth-1  | 2025-01-31 11:33:45.921 PM INFO  com.inversoft.scheduler.DefaultScheduler - Starting up scheduler
      2025-01-31 16:33:45 fusionauth-1  | 2025-01-31 11:33:45.922 PM INFO  com.inversoft.scheduler.DefaultScheduler - Scheduler is running
      2025-01-31 16:33:45 fusionauth-1  | 2025-01-31 11:33:45.952 PM ERROR com.inversoft.scheduler.LogAndRetainFailureHandler - The scheduled service [class io.fusionauth.api.service.cache.CORSConfigurationCacheLoader] failed but will be re-run.
      2025-01-31 16:33:45 fusionauth-1  | org.apache.ibatis.exceptions.TooManyResultsException: Expected one result (or null) to be returned by selectOne(), but found: 2
      2025-01-31 16:33:45 fusionauth-1  |     at org.apache.ibatis.session.defaults.DefaultSqlSession.selectOne(DefaultSqlSession.java:81)
      2025-01-31 16:33:45 fusionauth-1  |     at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
      2025-01-31 16:33:45 fusionauth-1  |     at java.base/java.lang.reflect.Method.invoke(Method.java:580)
      2025-01-31 16:33:45 fusionauth-1  |     at org.apache.ibatis.session.SqlSessionManager$SqlSessionInterceptor.invoke(SqlSessionManager.java:355)
      2025-01-31 16:33:45 fusionauth-1  |     at jdk.proxy2/jdk.proxy2.$Proxy61.selectOne(Unknown Source)
      2025-01-31 16:33:45 fusionauth-1  |     at org.apache.ibatis.session.SqlSessionManager.selectOne(SqlSessionManager.java:164)
      2025-01-31 16:33:45 fusionauth-1  |     at org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:87)
      2025-01-31 16:33:45 fusionauth-1  |     at org.apache.ibatis.binding.MapperProxy$PlainMethodInvoker.invoke(MapperProxy.java:141)
      2025-01-31 16:33:45 fusionauth-1  |     at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:86)
      2025-01-31 16:33:45 fusionauth-1  |     at jdk.proxy2/jdk.proxy2.$Proxy63.retrieve(Unknown Source)
      2025-01-31 16:33:45 fusionauth-1  |     at io.fusionauth.api.service.cache.CORSConfigurationCacheLoader.internalLoad(CORSConfigurationCacheLoader.java:36)
      2025-01-31 16:33:45 fusionauth-1  |     at com.inversoft.cache.BaseSingleValueCacheLoader.load(BaseSingleValueCacheLoader.java:13)
      2025-01-31 16:33:45 fusionauth-1  |     at io.fusionauth.api.service.cache.CORSConfigurationCacheLoader.run(CORSConfigurationCacheLoader.java:30)
      2025-01-31 16:33:45 fusionauth-1  |     at com.inversoft.scheduler.InjectableRunnable.run(InjectableRunnable.java:56)
      2025-01-31 16:33:45 fusionauth-1  |     at com.inversoft.scheduler.DefaultScheduler.<init>(DefaultScheduler.java:70)
      2025-01-31 16:33:45 fusionauth-1  |     at com.inversoft.scheduler.DefaultScheduler$$FastClassByGuice$$9ed33ea.GUICE$TRAMPOLINE(<generated>)
      2025-01-31 16:33:45 fusionauth-1  |     at com.inversoft.scheduler.DefaultScheduler$$FastClassByGuice$$9ed33ea.apply(<generated>)
      2025-01-31 16:33:45 fusionauth-1  |     at com.google.inject.internal.DefaultConstructionProxyFactory$FastClassProxy.newInstance(DefaultConstructionProxyFactory.java:82)
      2025-01-31 16:33:45 fusionauth-1  |     at com.google.inject.internal.ConstructorInjector.provision(ConstructorInjector.java:114)
      2025-01-31 16:33:45 fusionauth-1  |     at com.google.inject.internal.ConstructorInjector.construct(ConstructorInjector.java:91)
      2025-01-31 16:33:45 fusionauth-1  |     at com.google.inject.internal.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:300)
      2025-01-31 16:33:45 fusionauth-1  |     at com.google.inject.internal.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:40)
      2025-01-31 16:33:45 fusionauth-1  |     at com.google.inject.internal.SingletonScope$1.get(SingletonScope.java:169)
      2025-01-31 16:33:45 fusionauth-1  |     at com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:45)
      2025-01-31 16:33:45 fusionauth-1  |     at com.google.inject.internal.FactoryProxy.get(FactoryProxy.java:60)
      2025-01-31 16:33:45 fusionauth-1  |     at com.google.inject.internal.InternalInjectorCreator.loadEagerSingletons(InternalInjectorCreator.java:213)
      2025-01-31 16:33:45 fusionauth-1  |     at com.google.inject.internal.InternalInjectorCreator.injectDynamically(InternalInjectorCreator.java:186)
      2025-01-31 16:33:45 fusionauth-1  |     at com.google.inject.internal.InternalInjectorCreator.build(InternalInjectorCreator.java:113)
      2025-01-31 16:33:45 fusionauth-1  |     at com.google.inject.Guice.createInjector(Guice.java:87)
      2025-01-31 16:33:45 fusionauth-1  |     at com.google.inject.Guice.createInjector(Guice.java:69)
      2025-01-31 16:33:45 fusionauth-1  |     at com.google.inject.Guice.createInjector(Guice.java:59)
      2025-01-31 16:33:45 fusionauth-1  |     at org.primeframework.mvc.guice.GuiceBootstrap.initialize(GuiceBootstrap.java:60)
      2025-01-31 16:33:45 fusionauth-1  |     at org.primeframework.mvc.BasePrimeMain.hup(BasePrimeMain.java:69)
      2025-01-31 16:33:45 fusionauth-1  |     at org.primeframework.mvc.BasePrimeMain.start(BasePrimeMain.java:100)
      2025-01-31 16:33:45 fusionauth-1  |     at io.fusionauth.app.FusionAuthMain.main(FusionAuthMain.java:27)
      2025-01-31 16:33:45 fusionauth-1  | 2025-01-31 11:33:45.958 PM INFO  com.inversoft.search.ElasticRestClientHelper - Connecting to Elasticsearch at [http://search:9200]
      2025-01-31 16:33:45 fusionauth-1  | 2025-01-31 11:33:45.961 PM ERROR com.inversoft.scheduler.LogAndRetainFailureHandler - The scheduled service [class io.fusionauth.api.service.cache.IdentityProviderCacheLoader] failed but will be re-run.
      2025-01-31 16:33:45 fusionauth-1  | com.google.inject.ProvisionException: Unable to provision, see the following errors:
      2025-01-31 16:33:45 fusionauth-1  | 
      2025-01-31 16:33:45 fusionauth-1  | 1) [Guice/ErrorInCustomProvider]: TooManyResultsException: Expected one result (or null) to be returned by selectOne(), but found: 2
      2025-01-31 16:33:45 fusionauth-1  |   at FusionAuthMVCModule.configure(FusionAuthMVCModule.java:31)
      2025-01-31 16:33:45 fusionauth-1  |       \_ installed by: FusionAuthModule -> Modules$OverrideModule -> FusionAuthMVCModule
      2025-01-31 16:33:45 fusionauth-1  |   at FusionAuthObjectMapperProvider.<init>(FusionAuthObjectMapperProvider.java:24)
      2025-01-31 16:33:45 fusionauth-1  |       \_ for 2nd parameter
      2025-01-31 16:33:45 fusionauth-1  |   while locating FusionAuthObjectMapperProvider
      2025-01-31 16:33:45 fusionauth-1  |   at FusionAuthContentModule.bindObjectMapper(FusionAuthContentModule.java:24)
      2025-01-31 16:33:45 fusionauth-1  |       \_ installed by: FusionAuthModule -> Modules$OverrideModule -> FusionAuthContentModule
      2025-01-31 16:33:45 fusionauth-1  |   at DefaultCipherService.<init>(DefaultCipherService.java:37)
      2025-01-31 16:33:45 fusionauth-1  |       \_ for 1st parameter
      2025-01-31 16:33:45 fusionauth-1  |   while locating DefaultCipherService
      2025-01-31 16:33:45 fusionauth-1  |   at DefaultReactorCore.<init>(DefaultReactorCore.java:66)
      2025-01-31 16:33:45 fusionauth-1  |       \_ for 1st parameter
      2025-01-31 16:33:45 fusionauth-1  |   while locating DefaultReactorCore
      2025-01-31 16:33:45 fusionauth-1  |   at InstanceManager.<init>(InstanceManager.java:38)
      2025-01-31 16:33:45 fusionauth-1  |       \_ for 3rd parameter
      2025-01-31 16:33:45 fusionauth-1  |   at DefaultReactorService.<init>(DefaultReactorService.java:90)
      2025-01-31 16:33:45 fusionauth-1  |       \_ for 5th parameter
      2025-01-31 16:33:45 fusionauth-1  |   while locating DefaultReactorService
      2025-01-31 16:33:45 fusionauth-1  |   at DefaultPasswordService.<init>(DefaultPasswordService.java:52)
      2025-01-31 16:33:45 fusionauth-1  |       \_ for 3rd parameter
      2025-01-31 16:33:45 fusionauth-1  |   while locating DefaultPasswordService
      2025-01-31 16:33:45 fusionauth-1  |   at FusionAuthConnector.<init>(FusionAuthConnector.java:43)
      2025-01-31 16:33:45 fusionauth-1  |       \_ for 2nd parameter
      2025-01-31 16:33:45 fusionauth-1  |   while locating FusionAuthConnector
      2025-01-31 16:33:45 fusionauth-1  |   while locating Connector annotated with @Element(setName=,uniqueId=56, type=MAPBINDER, keyType=ConnectorType)
      2025-01-31 16:33:45 fusionauth-1  |   at DefaultAuthenticationService.<init>(DefaultAuthenticationService.java:140)
      2025-01-31 16:33:45 fusionauth-1  |       \_ for 4th parameter
      2025-01-31 16:33:45 fusionauth-1  |   while locating DefaultAuthenticationService
      2025-01-31 16:33:45 fusionauth-1  |   at AppleIdentityProviderAuthenticationService.<init>(AppleIdentityProviderAuthenticationService.java:76)
      2025-01-31 16:33:45 fusionauth-1  |       \_ for 2nd parameter
      2025-01-31 16:33:45 fusionauth-1  |   while locating AppleIdentityProviderAuthenticationService
      2025-01-31 16:33:45 fusionauth-1  |   while locating IdentityProviderAuthenticationService annotated with @Element(setName=,uniqueId=114, type=MAPBINDER, keyType=IdentityProviderType)
      2025-01-31 16:33:45 fusionauth-1  |   at IdentityProviderCacheLoader.<init>(IdentityProviderCacheLoader.java:39)
      2025-01-31 16:33:45 fusionauth-1  |       \_ for 4th parameter
      2025-01-31 16:33:45 fusionauth-1  |   while locating IdentityProviderCacheLoader
      2025-01-31 16:33:45 fusionauth-1  | 
      2025-01-31 16:33:45 fusionauth-1  | Learn more:
      2025-01-31 16:33:45 fusionauth-1  |   https://github.com/google/guice/wiki/ERROR_IN_CUSTOM_PROVIDER
      2025-01-31 16:33:45 fusionauth-1  | 
      2025-01-31 16:33:45 fusionauth-1  | 1 error
      

      These appear to be duplicates create during restore, but i was hoping conventional backup logic would work with postgres & fusionAuth.

      Im i missing something obvious? what do other folks do using pg and FA?

      Thanks in advance
      Franco

      mark.robustelliM 1 Reply Last reply Reply Quote 0
      • mark.robustelliM
        mark.robustelli @spydmobile
        last edited by

        @spydmobile Are all the errors specifically about the CORSConfigurationCacheLoader or are there others?

        @spydmobile said in Struggling to backup selfhosted fusionAuth.:

        2025-01-31 16:33:45 fusionauth-1 | 2025-01-31 11:33:45.952 PM ERROR com.inversoft.scheduler.LogAndRetainFailureHandler - The scheduled service [class io.fusionauth.api.service.cache.CORSConfigurationCacheLoader] failed but will be re-run.
        2025-01-31 16:33:45 fusionauth-1 | org.apache.ibatis.exceptions.TooManyResultsException: Expected one result (or null) to be returned by selectOne(), but found: 2

        1 Reply Last reply Reply Quote 0
        • R
          ralph
          last edited by

          Did you ever get a solution to this? I've just hit the same problem.

          In my case, I have a single server which failed, so I've re-installed (with the same version of FusionAuth as was on there before). I can let it run up as normal and it works fine, but if I restore my pg_dumpall backup, then I get the same errors as you.

          I rather assumed that a postgres full backup was all I needed to do for DR, but are there other steps as well? This seems surprisingly under-documented 😉

          mark.robustelliM R 2 Replies Last reply Reply Quote 0
          • mark.robustelliM
            mark.robustelli @ralph
            last edited by

            @ralph Are you getting the same errors? I did see a reference to trying pg_dump vs pg_dumpall. Can you try that and let us know if it works?

            1 Reply Last reply Reply Quote 0
            • R
              ralph @ralph
              last edited by

              Answering my own question here... turns out there was a version mismatch. Oh dear 😞

              To summarise...

              Perform backups using pg_dumpall and hive them off the server somewhere. This gives you textual SQL files, if you prefer, pg_dump can do different things, but works on an individual database at a time.

              I'd also recommend you setup your server using something like Ansible. It means that things like your properties file and other details will be the same next time you need to (re)install.

              To restore:

              • Stop FusionAuth if it's running
              • Make certain FusionAuth is the same version as was used when the backup took place!
              • Go double-check those versions 😉
              • Restore by running sudo -u postgres psql < dump.sql
              • Restart FusionAuth (not in silent mode)

              For More sensitive environments, you may want to consider database replication and making a warm-standby server.

              1 Reply Last reply Reply Quote 0
              • First post
                Last post