安装
官方教程 https://www.postgresql.org/download/linux/ubuntu/
安装
sudo apt install -y postgresql-common
sudo /usr/share/postgresql-common/pgdg/apt.postgresql.org.sh
sudo apt install curl ca-certificates
sudo install -d /usr/share/postgresql-common/pgdg
sudo curl -o /usr/share/postgresql-common/pgdg/apt.postgresql.org.asc --fail https://www.postgresql.org/media/keys/ACCC4CF8.asc
sudo sh -c 'echo "deb [signed-by=/usr/share/postgresql-common/pgdg/apt.postgresql.org.asc] https://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
sudo apt update
sudo apt -y install postgresql
常用命令
# 切换到postgres用户
sudo -i -u postgres
# 备份流程
pg_dump -U ms_test -h localhost -p 5432 -Fc ms_crm_test > ms_crm_test.dump
pg_restore -U postgres -h localhost -p 5432 -d ms_file_manage_dev ms_crm_test.dump
# 授予用户对数据库的权限:
# 切换到目标数据库(假设数据库名是 ms_crm_test):
\c ms_crm_test
# 授予对整个数据库的访问权限(包括创建对象的权限):
GRANT CONNECT ON DATABASE ms_crm_prod TO ms_crm;
GRANT CREATE ON DATABASE ms_crm_prod TO ms_crm;
# 授予用户对所有表的权限:
# 如果你想授予 ms_test 用户对 ms_crm_test 数据库中所有现有表的所有权限,可以执行以下 SQL 语句:
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO ms_test;
# 这将会授予 ms_test 用户对 public 模式中所有表的所有权限。
# 授予用户对未来创建的表的权限:
# 如果希望 ms_test 用户对未来创建的所有表也有权限,可以运行以下命令:
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL ON TABLES TO ms_test;
# 创建数据库并授权
CREATE DATABASE ms_file_manage_dev;
GRANT ALL ON SCHEMA public TO ms_dev;
GRANT ALL PRIVILEGES ON DATABASE ms_file_manage_dev TO ms_dev;
ALTER DATABASE ms_file_manage_dev OWNER TO ms_dev;
GRANT ALL ON DATABASE ms_file_manage_dev TO ms_dev;
自动化备份脚本
创建脚本
sudo vim /usr/local/bin/pgsql_backup/xxx.sh脚本内容
# 配置参数 BACKUP_DIR="/var/backups/pgsql/ms_suggestion_box" DB_NAME="ms_suggestion_box_dev" # 替换为实际数据库名 DATE=$(date +'%Y-%m-%d_%H-%M') SQL_BACKUP_FILE="${BACKUP_DIR}/${DB_NAME}-${DATE}.sql.gz" DUMP_BACKUP_FILE="${BACKUP_DIR}/${DB_NAME}-${DATE}.dump" # 创建备份目录(如果不存在) mkdir -p ${BACKUP_DIR} chown postgres:postgres ${BACKUP_DIR} # 执行 SQL 格式备份 sudo -u postgres pg_dump ${DB_NAME} | gzip > ${SQL_BACKUP_FILE} # 执行 DUMP 格式备份 sudo -u postgres pg_dump -Fc -f ${DUMP_BACKUP_FILE} ${DB_NAME} # 保留最近 10 个 SQL 和 DUMP 备份 find ${BACKUP_DIR} -type f -name "*.sql.gz" | sort -r | sed -n '11,$p' | xargs -r rm -f find ${BACKUP_DIR} -type f -name "*.dump" | sort -r | sed -n '11,$p' | xargs -r rm -f # 输出备份完成信息 echo "备份完成:" echo " SQL 格式: ${SQL_BACKUP_FILE}" echo " DUMP 格式: ${DUMP_BACKUP_FILE}"授予执行权限
sudo chmod +x /usr/local/bin/pgsql_backup.sh测试执行备份
sudo /usr/local/bin/pgsql_backup.sh配置定时任务
sudo crontab -e添加定时任务
0 2 * * * /usr/local/bin/pgsql_backup.sh定时任务日志
sudo grep CRON /var/log/syslog