最近迁移服务器,需要迁移各种数据库,踩了不少坑,有些问题解决了但原因不明,遂存档以供后用.

以Joplin为例.

1. Export Dump File

docker exec -it joplin-db-1 bash
PGPASSWORD="${password}" pg_dump -v -U ${username} joplin -F c > /tmp/joplin_backup.dump
docker cp joplin-db-1:/tmp/joplin_backup.dump ./joplin_backup.dump

2. Transfer to target server

scp ./joplin_backup.sql user@ip:/root/joplin

3. Import Dump File

docker cp /root/joplin_backup.dump joplin-db-1:/tmp/joplin_backup.dump
docker exec -it joplin-db-1 bash
#Clear Database
psql -U ${username} joplin <<EOF
DROP SCHEMA public CASCADE;
CREATE SCHEMA public;
GRANT ALL ON SCHEMA public TO joplin;
GRANT ALL ON SCHEMA public TO public;
EOF
pg_restore -v -U ${username} -d joplin /tmp/joplin_backup.dump

4. Restart Container (Using docker-compose)

docker-compose restart


Cherish those who deserve it.