Ubuntu系统Postgres SQL数据库迁移
最近需要把一个项目的pg sql数据库迁到另一个服务器里面
1、在原服务器中导出数据库
# 导出 mydb 数据库(结构 + 数据) sudo -u postgres pg_dump -Fc -f /tmp/mydb_backup.dump mydb # 检查一下,应该有正常文件大小 ls -lh /tmp/mydb_backup.dump2、在原服务器上把导出文件传到新服务器
记得新服务器上的根目录下创建/tmp/文件夹
scp /tmp/mydb_backup.dump ubuntu@新服务器IP:/tmp/3、把原来数据库的用户,数据库和权限都在新服务器上重新创建好
# 创建角色和数据库 sudo -u postgres psql << 'SQL' CREATE USER myapp WITH PASSWORD 'qwer'; CREATE DATABASE mydb OWNER myapp; GRANT ALL PRIVILEGES ON DATABASE mydb TO myapp; SQL # 让 myapp 用户有建表等权限(连接到 mydb 后再授权) sudo -u postgres psql -d mydb << 'SQL' GRANT ALL ON SCHEMA public TO myapp; ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL ON TABLES TO myapp; ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL ON SEQUENCES TO myapp;4、还原数据
sudo -u postgres pg_restore -d mydb --clean --if-exists --no-owner /tmp/mydb_backup.dump5、验证一下表结构和内容之类的即可
# 查看所有表 sudo -u postgres psql -d mydb -c "\dt" # 查看表结构 sudo -u postgres psql -d mydb -c "\d users" # 查一下数据量 sudo -u postgres psql -d mydb -c "SELECT count(*) FROM users;"