马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
x
一、需求
上线之后要求数据库数据天天备份,但是之前不停是人用pgadmin4 的界面手动点击备份,偶尔会忘记点击,就忘记备份了。每次下班前备份,除了会影响下班,还会忘记,就想都是脚本,手写一个自动备份的
二、实现
pg数据库是docker 安装的,pgadmin4也是docker安装的。 由于国产Linux服务器,没有网,直接安装各种依赖题目,烦烦烦....
实现逻辑:在pgadmin4 的容器里面使用下令备份数据库,在Linux服务器上开启crontab定时使命
三、具体步骤
1、pgadmin4安装
- docker pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/dpage/pgadmin4:8.9
- docker run -d --name pgadmin4 --restart always -p 5080:80 \
- -e 'PGADMIN_DEFAULT_EMAIL=21At@123.com' \
- -e 'PGADMIN_DEFAULT_PASSWORD=123456' \
- -e 'PGADMIN_CONFIG_ENHANCED_COOKIE_PROTECTION=True' \
- -e 'PGADMIN_CONFIG_LOGIN_BANNER="Authorised users only!"' \
- -e 'PGADMIN_CONFIG_CONSOLE_LOG_LEVEL=10' \
- -v /root/data/pgadmin4:/var/lib/pgadmin \
- pgadmin:8.9
复制代码 2、写备份脚本
第一步:在容器里面创建备份脚本/var/lib/pgadmin/back.sh
- #!/bin/sh
- d=$(date "+%Y-%m-%d_%H-%M")
- echo "${d}"
- # 免输入密码
- export PGPASSWORD="postgres"
- # 备份命令
- /usr/local/pgsql-16/pg_dump --file "/var/lib/pgadmin/storage/pga_user_21At_123.com/backup/database_${d}.backup" --host "127.0.0.1" --port "5432" --username "postgres" --role "postgres" --format=c --large-objects --encoding "UTF8" --verbose "postgres"
复制代码 第二步:在Linux服务器上创建脚本 /usr/local/bin/pg_back.sh
- #!/bin/bash
- echo "$(date) -- 开始备份数据库" >> /usr/local/logs/pg_back.log
- docker exec pgadmin4 /bin/sh -c "/var/lib/pgadmin/back.sh > /var/lib/pgadmin/logs/pg_back.log 2>&1"
- echo "$(date) -- 备份完成! " >> /usr/local/logs/pg_back.log
复制代码
3、开启定时使命
- # 编辑定时任务脚本
- crontab -e
- # 添加下面两行
- ------------------------------------------------------
- # 每天凌晨2点备份数据库
- 0 2 * * * /usr/local/bin/pg_back.sh
- ------------------------------------------------------
- # 查看是否编辑成功
- crontab -l
复制代码 四、测试验证
备份的文件目次:/var/lib/pgadmin/storage/pga_user_21At_123.com/backup/database_${d}.backup
文件权限题目授权
chown 999:999 file
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |