数据库备份恢复
0.首先要切换到postgres用户
sudo su postgres
1.备份命令
# 命令1:
pg_dump --format=c db_name > dest_path
#like:
pg_dump --format=c peacebird > /var/lib/postgresql/peacebird1016.dump
# --------
# 命令2
pg_dump db_name > dest_path
#like:
pg_dump peacebird > /var/lib/postgresql/peacebird1016.dump
# Ps: 却别
# 1备份的是二进制文件: 用pg_restore恢复
# 2备份的是文本文件 psql进去, 用\i命令恢复
2.下载(rsync/scp)
# rsync
# 带端口
rsync -avzP -e "ssh -p 58729" hesai@hesai-erp.chinacloudapp.cn:/tmp/aaa.sql ~/Desktop
# 不带端口
rsync -avzP -e root@172.18.10.147:/var/log/app_server/app-server.log.6.gz /Users/chenpeng/
# 排除一些文件
rsync -avzP -e "ssh -p 29722" --exclude ".git,*.pyc,.DS_Store" hesai@40.73.113.181:~/odoo10 ~/Desktop/odoo10
# scp
scp ubuntu@40.125.168.101:~/jj.tar /Users/chenpeng/Desktop/mm
3.下载(rsync/scp)
# scp
scp root@172.18.10.147:~/app-server.log.6.gz /Users/chenpeng/Desktop/
4.恢复数据库步骤
-
- 删除原数据库
dropdb hesai
- 2.创建空数据库
createdb -T template0 hesai_erp_tracker_0606
- 3.还原
# 还原二进制文件
pg_restore -d hesai_erp_tracker_0606 /Users/chenpeng/Desktop/hesai-erp-20180326-16.dmp
# 还原文本文件 先进入相应数据库, 在用\i命令
psql db_name
\i /Users/chenpeng/Desktop/hesai-erp-20180326-16.dmp
5.tips
- 还原指定用户
pg_restore -d p1 /var/lib/postgresql/peace_bird0124.dump -O --role=nexttao
pg_restore -d zx1115 /Users/chenpeng/zx_1115_formal.dump -O --role=openerp
- 修改数据库用户
alter database p1 owner to nexttao;
alter database zlogin owner to openerp;
alter database hesai_erp_tracker_0606 owner to odoo;
- 跑sql脚本
psql -d zhongxiang -f /mnt/source/bak/import_stock_move.sql
psql -d zhongxiang -f /mnt/source/bak/stock_bin_sync_1116.sql
- 将执行结果输出到文件
# 分三步
\o path
select * from users;
\o