创建数据库 并允许备份
该命令为数据库命令
CREATE DATABASE tutorial;
ALTER DATABASE tutorial SET timescaledb.restoring='on';
ALTER DATABASE tutorial SET timescaledb.restoring='off';
备份数据库
该命令为终端命令 数据库外使用
pg_dump命令解释
错误处理
需要确认登陆用户
pg_dump -U postgres -Fc -f tutorial.bak tutorial;
恢复数据库
pg_restore -U postgres -Fc -d tutorial tutorial.bak
创建docker网络
docker network create timescaledb-net
然后使用新创建的网络启动TimescaleDB并启用存档:
docker run --network timescaledb-net -e POSTGRES_PASSWORD=insecure -e POSTGRES_INITDB_WALDIR=/var/lib/postgresql/data/pg_wal -e PGDATA=/var/lib/postgresql/data/pg_data timescale/timescaledb-postgis -cwal_level=archive -carchive_mode=on -carchive_command="/usr/bin/wget wale/wal-push/%f -O -" -carchive_timeout=600 -ccheckpoint_timeout=700 -cmax_wal_senders=1
要从备份存档中恢复数据库实例,请创建一个新的TimescaleDB容器:
docker create \
--name timescaledb-recovered \
--network timescaledb-net \
-e POSTGRES_PASSWORD=insecure \
-e POSTGRES_INITDB_WALDIR=/var/lib/postgresql/data/pg_wal \
-e PGDATA=/var/lib/postgresql/data/pg_data \
timescale/timescaledb:latest-pg10 postgres
现在从基本备份还原数据库文件:
docker run -it --rm \
-v ~/backups:/backups \
--volumes-from timescaledb-recovered \
-e WALE_LOG_DESTINATION=stderr \
-e WALE_FILE_PREFIX=file://localhost/backups \
timescale/timescaledb-wale:latest \wal-e \
backup-fetch /var/lib/postgresql/data/pg_data LATEST
重新创建一些配置文件(通常,这些是旧数据库实例中备份的配置文件):
docker run -it --rm \
--volumes-from timescaledb-recovered \
timescale/timescaledb:latest-pg10 \
cp /usr/local/share/postgresql/pg_ident.conf.sample /var/lib/postgresql/data/pg_data/pg_ident.conf
docker run -it --rm \
--volumes-from timescaledb-recovered \
timescale/timescaledb:latest-pg10 \
cp /usr/local/share/postgresql/postgresql.conf.sample /var/lib/postgresql/data/pg_data/postgresql.conf
docker run -it --rm \
--volumes-from timescaledb-recovered \
timescale/timescaledb:latest-pg10 \
sh -c 'echo "local all postgres trust" > /var/lib/postgresql/data/pg_data/pg_hba.conf'
现在创建一个告诉PostgreSQL如何恢复:recovery.conf
docker run -it --rm \
--volumes-from timescaledb-recovered \
timescale/timescaledb:latest-pg10 \
sh -c 'echo "restore_command='\''/usr/bin/wget wale/wal-fetch/%f -O -'\''" > /var/lib/postgresql/data/pg_data/recovery.conf'
然后再次运行WAL-E边车(您可能必须先拆除旧的边车)。它将用于重放可能未在基本备份中反映的最后一个WAL段:
docker run \
--name wale \
--network timescaledb-net \
-v ~/backups:/backups \
--volumes-from timescaledb-recovered \
-e WALE_LOG_DESTINATION=stderr \
-e PGWAL=/var/lib/postgresql/data/pg_wal \
-e PGDATA=/var/lib/postgresql/data/pg_data \
-e PGHOST=timescaledb \
-e PGPASSWORD=insecure \
-e PGUSER=postgres \
-e WALE_FILE_PREFIX=file://localhost/backups \
timescale/timescaledb-wale:latest
最后,启动TimescaleDB docker容器:
docker start timescaledb-recovered
验证数据库是否已成功启动并恢复:
docker logs timescaledb-recovered
1、df -h找到原容器数据挂载点
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/centos-root 50G 17G 34G 34% /
devtmpfs 16G 0 16G 0% /dev
tmpfs 16G 0 16G 0% /dev/shm
tmpfs 16G 1.6G 15G 11% /run
tmpfs 16G 0 16G 0% /sys/fs/cgroup
/dev/sda1 1014M 142M 873M 14% /boot
/dev/mapper/centos-home 957G 156M 957G 1% /home
overlay 50G 17G 34G 34% /var/lib/docker/overlay2/d2964b1812274496d6fd3e9602a4dd8eefd4b3b5e0afbfa6f1f6b4b1f37f5a1f/merged
shm 64M 4.0K 64M 1% /var/lib/docker/containers/a27b18401e4cac04dd84fb5c51151a471c98f95f2dc61a9c6b4c244c47ce3cda/shm
tmpfs 3.2G 0 3.2G 0% /run/user/0
宿主机目录=挂载点 以内 , 例如: /home/data
2、挂载命令
docker run --name timescaledb2 -e POSTGRES_PASSWORD=postgres -e POSTGRES_USER=postgres -v /home/data:/var/lib/postgresql/data -d -p 5555:5432 timescale/timescaledb-postgis
-v 宿主机目录:容器目录
3、将数据目录拷贝,可用上述命令启动一个完全一样的数据库