I
Immich•5mo ago
Bubba

[SOLVED] pg_restore immich backup into new CNPG instance

1. gunzip immich-db-backup-1735542000019.sql.gz 2. sed "s/SELECT pg_catalog.set_config('search_path', '', false);/SELECT pg_catalog.set_config('search_path', 'public, pg_catalog', true);/g" immich-db-backup-1735542000019.sql > immich-db-backup.sql 3. kubectl -n databases cp ./immich-db-backup.sql postgres-16-1:/var/lib/postgresql/data/ 4. kubectl -n databases exec -it postgres-16-1 -- bash 5. pg_restore -S postgres -U immich -Cev -f /var/lib/postgresql/data/immich-db-backup.sql The last command just hangs with no output. I've tried with a variety of pg_restore options. Any suggestions?
17 Replies
Immich
Immich•5mo ago
:wave: Hey @Bubba, Thanks for reaching out to us. Please carefully read this message and follow the recommended actions. This will help us be more effective in our support effort and leave more time for building Immich :immich:. References - Container Logs: docker compose logs docs - Container Status: docker ps -a docs - Reverse Proxy: https://immich.app/docs/administration/reverse-proxy - Code Formatting https://support.discord.com/hc/en-us/articles/210298617-Markdown-Text-101-Chat-Formatting-Bold-Italic-Underline#h_01GY0DAKGXDEHE263BCAYEGFJA Checklist I have... 1. :ballot_box_with_check: verified I'm on the latest release(note that mobile app releases may take some time). 2. :ballot_box_with_check: read applicable release notes. 3. :ballot_box_with_check: reviewed the FAQs for known issues. 4. :ballot_box_with_check: reviewed Github for known issues. 5. :ballot_box_with_check: tried accessing Immich via local ip (without a custom reverse proxy). 6. :ballot_box_with_check: uploaded the relevant information (see below). 7. :ballot_box_with_check: tried an incognito window, disabled extensions, cleared mobile app cache, logged out and back in, different browsers, etc. as applicable (an item can be marked as "complete" by reacting with the appropriate number) Information In order to be able to effectively help you, we need you to provide clear information to show what the problem is. The exact details needed vary per case, but here is a list of things to consider: - Your docker-compose.yml and .env files. - Logs from all the containers and their status (see above). - All the troubleshooting steps you've tried so far. - Any recent changes you've made to Immich or your system. - Details about your system (both software/OS and hardware). - Details about your storage (filesystems, type of disks, output of commands like fdisk -l and df -h). - The version of the Immich server, mobile app, and other relevant pieces. - Any other information that you think might be relevant. Please paste files and logs with proper code formatting, and especially avoid blurry screenshots. Without the right information we can't work out what the problem is. Help us help you ;) If this ticket can be closed you can use the /close command, and re-open it later if needed. Successfully submitted, a tag has been added to inform contributors. :white_check_mark:
bo0tzz
bo0tzz•5mo ago
Try with the psql command from the docs
Bubba
BubbaOP•5mo ago
I assume you mean this command gunzip < "/path/to/backup/dump.sql.gz" \ | sed "s/SELECT pg_catalog.set_config('search_path', '', false);/SELECT pg_catalog.set_config('search_path', 'public, pg_catalog', true);/g" \ | docker exec -i immich_postgres psql --username=postgres but I don't have docker and I'm trying to restore to a new CNPG database, so I tried to adjust this command to my enviornment with the steps stated in the OP.
bo0tzz
bo0tzz•5mo ago
What I meant specifically is you're using pg_restore where our docs use psql idk if the behaviour is maybe different
Bubba
BubbaOP•5mo ago
ack progress, but failed due to missing immich database. Trying to figure out how to create it.
postgres@postgres-16-1:/$ psql -c 'CREATE DATABASE immich;'
ERROR: cannot execute CREATE DATABASE in a read-only transaction
postgres@postgres-16-1:/$ psql -c 'CREATE DATABASE immich;'
ERROR: cannot execute CREATE DATABASE in a read-only transaction
bo0tzz
bo0tzz•5mo ago
Are you connected to a read replica?
Bubba
BubbaOP•5mo ago
I think I am, I just created it via 'kubectl cnpg..." ok, I guess I need to get into the primary cnpg instance. restoring is failing due to read-only as well. looking good so far creating, altering an copying tables
bo0tzz
bo0tzz•5mo ago
Nice For the future I'll suggest using kubectl cnpg port-forward instead of execing into the pod Defaults to the right pod plus you don't have to mess with copying files etc
Bubba
BubbaOP•5mo ago
good call I'm writing up my procedure and I'll share once I have verified it works
bo0tzz
bo0tzz•5mo ago
Or cnpg psql actually, forgot about that one for a sec lol
Bubba
BubbaOP•5mo ago
the kubectl plugin? if so I'm not sure how that works with the local backup file. That's what I initially tried but I barely know what I'm doing.
bo0tzz
bo0tzz•5mo ago
I believe it runs psql locally But I'm not actually sure
Bubba
BubbaOP•5mo ago
one of the 'CREATE INDEX' has been sitting there for a while. I have a pretty big immich instance, so hopefully this is still working
bo0tzz
bo0tzz•5mo ago
Does it say which index? The ML ones can take a fair bit of compute to put together
Bubba
BubbaOP•4mo ago
it does not I have other problems to fix since my cluster rebuild in the meantime šŸ˜‰ done ok, now I need to pivot my cnpg service over to this new instance and then pivot my immich instance over to the cnpg database (instead of the bitnami one) then I'll know if it's really working šŸ¤ž bleh
āžœ home-ops git:(main) āœ— kubectl -n media logs immich-server-5d4f56b9cb-q47cb
Defaulted container "immich-server" out of: immich-server, k8tz (init)
Initializing Immich v1.123.0
Detected CPU Cores: 8
Starting api worker
Starting microservices worker
(node:2) [DEP0060] DeprecationWarning: The `util._extend` API is deprecated. Please use Object.assign() instead.
(Use `node --trace-deprecation ...` to show where the warning was created)
(node:12) [DEP0060] DeprecationWarning: The `util._extend` API is deprecated. Please use Object.assign() instead.
(Use `node --trace-deprecation ...` to show where the warning was created)
(node:2) [DEP0060] DeprecationWarning: The `util._extend` API is deprecated. Please use Object.assign() instead.
(Use `node --trace-deprecation ...` to show where the warning was created)
[Nest] 2 - 12/31/2024, 11:09:23 AM LOG [Microservices:EventRepository] Initialized websocket server
Error: The pgvecto.rs extension version is 0.1.1, but Immich only supports >=0.2 <0.4.
Please change pgvecto.rs to a compatible version in the Postgres instance.
at /usr/src/app/dist/services/database.service.js:79:23
at process.processTicksAndRejections (node:internal/process/task_queues:105:5)
at async /usr/src/app/dist/repositories/database.repository.js:197:23
microservices worker error: Error: The pgvecto.rs extension version is 0.1.1, but Immich only supports >=0.2 <0.4.
Please change pgvecto.rs to a compatible version in the Postgres instance.
microservices worker exited with code 1
Killing api process
āžœ home-ops git:(main) āœ— kubectl -n media logs immich-server-5d4f56b9cb-q47cb
Defaulted container "immich-server" out of: immich-server, k8tz (init)
Initializing Immich v1.123.0
Detected CPU Cores: 8
Starting api worker
Starting microservices worker
(node:2) [DEP0060] DeprecationWarning: The `util._extend` API is deprecated. Please use Object.assign() instead.
(Use `node --trace-deprecation ...` to show where the warning was created)
(node:12) [DEP0060] DeprecationWarning: The `util._extend` API is deprecated. Please use Object.assign() instead.
(Use `node --trace-deprecation ...` to show where the warning was created)
(node:2) [DEP0060] DeprecationWarning: The `util._extend` API is deprecated. Please use Object.assign() instead.
(Use `node --trace-deprecation ...` to show where the warning was created)
[Nest] 2 - 12/31/2024, 11:09:23 AM LOG [Microservices:EventRepository] Initialized websocket server
Error: The pgvecto.rs extension version is 0.1.1, but Immich only supports >=0.2 <0.4.
Please change pgvecto.rs to a compatible version in the Postgres instance.
at /usr/src/app/dist/services/database.service.js:79:23
at process.processTicksAndRejections (node:internal/process/task_queues:105:5)
at async /usr/src/app/dist/repositories/database.repository.js:197:23
microservices worker error: Error: The pgvecto.rs extension version is 0.1.1, but Immich only supports >=0.2 <0.4.
Please change pgvecto.rs to a compatible version in the Postgres instance.
microservices worker exited with code 1
Killing api process
You are using image ghcr.io/tensorchord/cloudnative-pgvecto.rs:14.11-v0.2.1 and I am using image ghcr.io/tensorchord/cloudnative-pgvecto.rs:16.6-v0.4.0 looks like I gotta do this: https://github.com/immich-app/immich/releases/tag/v1.95.0
postgres=*# ALTER EXTENSION vectors SET SCHEMA vectors;
ERROR: extension "vectors" does not exist
postgres=*# ALTER EXTENSION vectors SET SCHEMA vectors;
ERROR: extension "vectors" does not exist
well, that's not working at all created a cnpg instance with the same image you use and I'm importing my backup. I think I figured out the syntax with the kubectl plugin
gunzip < "immich-db-backup-1735455600013.sql.gz"| sed "s/SELECT pg_catalog.set_config('search_path', '', false);/SELECT pg_catalog.set_config('search_path', 'public, pg_catalog', true);/g" | kubectl cnpg -n databases psql postgres-14 --
gunzip < "immich-db-backup-1735455600013.sql.gz"| sed "s/SELECT pg_catalog.set_config('search_path', '', false);/SELECT pg_catalog.set_config('search_path', 'public, pg_catalog', true);/g" | kubectl cnpg -n databases psql postgres-14 --
I don't have the "--username=immich" flag though looks like my image db was restored. I haven't tested anything, but the instance comes online and I can see the photos and metadata
Immich
Immich•4mo ago
This thread has been closed. To re-open, use the button below.

Did you find this page helpful?