Adding better DB restore commands.

This commit is contained in:
Dessalines 2023-05-30 13:11:26 -04:00
parent fce0210cdf
commit d586c42b1c

View file

@ -12,6 +12,8 @@ To incrementally backup the DB to an `.sql.gz` file, you can run:
docker-compose exec postgres pg_dumpall -c -U lemmy | gzip > lemmy_dump_`date +%Y-%m-%d"_"%H_%M_%S`.sql.gz docker-compose exec postgres pg_dumpall -c -U lemmy | gzip > lemmy_dump_`date +%Y-%m-%d"_"%H_%M_%S`.sql.gz
``` ```
_For compression, you can use either gzip and gunzip, or xz and unxz._
### A Sample backup script ### A Sample backup script
```bash ```bash
@ -25,19 +27,27 @@ rsync -avP -zz --rsync-path="sudo rsync" MY_USER@MY_IP:/LEMMY_LOCATION/volumes ~
### Restoring the DB ### Restoring the DB
If you need to restore from a `pg_dumpall` file, you need to first clear out your existing database To restore, run:
```bash
docker-compose up -d postgres
# Restore from the .sql.gz backup
gunzip < db_dump.sql | docker-compose exec -T postgres psql -U lemmy
```
If you've accidentally already started the lemmy service, you need to clear out your existing database:
```bash ```bash
# Drop the existing DB # Drop the existing DB
docker exec -i FOLDERNAME_postgres_1 psql -U lemmy -c "DROP SCHEMA public CASCADE; CREATE SCHEMA public;" docker exec -i FOLDERNAME_postgres_1 psql -U lemmy -c "DROP SCHEMA public CASCADE; CREATE SCHEMA public;"
# Restore from the .sql.gz backup
gunzip < db_dump.sql | docker exec -i FOLDERNAME_postgres_1 psql -U lemmy # restores the db
# This also might be necessary when doing a db import with a different password. # This also might be necessary when doing a db import with a different password.
docker exec -i FOLDERNAME_postgres_1 psql -U lemmy -c "alter user lemmy with password 'bleh'" docker exec -i FOLDERNAME_postgres_1 psql -U lemmy -c "alter user lemmy with password 'bleh'"
``` ```
Then run the restore commands above.
### Changing your domain name ### Changing your domain name
If you haven't federated yet, you can change your domain name in the DB. **Warning: do not do this after you've federated, or it will break federation.** If you haven't federated yet, you can change your domain name in the DB. **Warning: do not do this after you've federated, or it will break federation.**
@ -46,7 +56,7 @@ Get into `psql` for your docker:
`docker-compose exec postgres psql -U lemmy` `docker-compose exec postgres psql -U lemmy`
``` ```sql
-- Post -- Post
update post set ap_id = replace (ap_id, 'old_domain', 'new_domain'); update post set ap_id = replace (ap_id, 'old_domain', 'new_domain');
update post set url = replace (url, 'old_domain', 'new_domain'); update post set url = replace (url, 'old_domain', 'new_domain');