华为欧拉openEuler 20.03 (LTS-SP3)安装postgresql14数据库迁移

openEuler 20.03 (LTS-SP3)

安装docker

换源

将源换成华为源/私有源

cd /etc/yum.repos.d/
cp   openEuler.repo  openEuler.repo.bak

vi /etc/yum.repos.d/openEuler.repo

直接把repo.openeuler.org全部替换为repo.huaweicloud.com/openeuler,后面的不变
:%s/repo.openeuler.org/repo.huaweicloud.com\/openeuler/g

image-20240301173534275

更新系统中所有安装的软件包,及内核

sudo yum update

执行下面的命令添加 yum 软件源:

sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo sed -i 's/download.docker.com/mirrors.aliyun.com\/docker-ce/g' /etc/yum.repos.d/docker-ce.repo

替换$releasever为8

:%s/$releasever/8/g

image-20240302103500584

安装前准备

执行以下命令安装依赖包

sudo yum install -y yum-utils

出现以下错误

image-20240302103736958

执行

wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo

image-20240302104150692

安装 Docker

可以参考链接

更新 yum 软件源缓存,并安装 docker-ce

sudo yum install docker-ce docker-ce-cli containerd.io

出现下载资源失败

image-20240302104404398

解决方法,添加可用的镜像源

[docker-ce-stable-scmie]
name=Docker CE Stable - $basearch
baseurl=https://download.docker.com/linux/centos/8/$basearch/stable
enabled=1
gpgcheck=1
gpgkey=https://download.docker.com/linux/centos/gpg

image-20240302110025450

查看docker版本

image-20240302110158877

添加服务

sudo systemctl enable docker
sudo systemctl start docker

建立 docker 用户组

默认情况下,docker 命令会使用 Unix socket 与 Docker 引擎通讯。而只有 root 用户和 docker 组的用户才可以访问 Docker 引擎的 Unix socket。出于安全考虑,一般 Linux 系统上不会直接使用 root 用户。因此,更好地做法是将需要使用 docker 的用户加入 docker 用户组。

建立 docker 组:

sudo groupadd docker

将当前用户加入 docker 组:

sudo usermod -aG docker $USER

退出当前终端并重新登录,进行如下测试。

测试 Docker 是否安装正确

docker run --rm hello-world

image-20240302110731816

若能正常输出以上信息,则说明安装成功。

安装postgresql+postgis

安装postgis(包含了postgres,无须安装postgresql)

拉取镜像

docker官网拉取镜像

image-20240301175538890

docker pull postgis/postgis:14-3.4-alpine

image-20240301175649619

创建volumes

创建volumes,用于存储postgresql配置文件以及数据库文件,Docker 卷与容器的文件系统分离,因此它们的生命周期可以独立于容器。这意味着,当容器被删除时,数据仍然保留在宿主机的 Docker 卷中,可以供其他容器使用。

docker volume create postgis_data 

docker volume create pg_data

运行postgresql

docker run --name pgsql14 --restart=always -e POSTGRES_USER=postgres -e POSTGRES_PASSWORD=postgres -e POSTGRES_DBNAME=gis_db -p 5432:5432 -v postgis_data:/var/lib/postgis/data -v pg_data:/var/lib/postgresql/data -d postgis/postgis:14-3.4-alpine
docker run --name pgsql14 --restart=always -e POSTGRES_USER=postgres -e POSTGRES_PASSWORD="HnQM]B804^>d#mod)r" -e POSTGRES_DBNAME=gis_db -p 5432:5432 -v postgis_data:/var/lib/postgis/data -v pg_data:/var/lib/postgresql/data -d postgis/postgis:14-3.4-alpine

进入容器

docker exec -it pgsql14  bash

安装拓展

 psql -h localhost -p 5432 -U postgres -d postgres
CREATE EXTENSION postgis;
CREATE EXTENSION postgis_topology;
CREATE EXTENSION postgis_sfcgal;
CREATE EXTENSION fuzzystrmatch;
CREATE EXTENSION address_standardizer;
CREATE EXTENSION address_standardizer_data_us;
CREATE EXTENSION postgis_tiger_geocoder;

image-20240301181727622

创建 Docker 容器并挂载卷

docker run -d -v pg_data:/var/lib/postgresql/data 56fc19a2f661
修改postgresql.conf
docker exec -it f5eccb0b4d17   bash

vim  var/lib/postgresql/data/postgresql.conf 
编辑或添加下面一行,使PostgreSQL可以接受来自任意IP的连接请求

image-20240302101019842

修改pg_hba.conf

还需在pg_hba.conf中配置服务端允许的认证方式

# IPv6 local connections:                                               
host    all             all             ::1/128                 md5     
host    all             all             0.0.0.0/0               md5  

image-20240302101529713

重启容器

docker   restart pgsql14

修改密码

docker exec -it 085adad4e140  /bin/bash
psql postgres postgres

 \password postgres

还原数据库

备份,可采用以下几种方式(推荐第二种)
#备份
pg_dump -h 192.168.124.58 -d hnsggas -U postgres > E:\pgdata\hnsggas.bak

#按照模式导出
pg_dump -h 192.168.124.58 -d gzgas -U postgres -n gzsjcj > E:\pgdata\gzsjcj_schema.sql

#备份成二进制文件
pg_dump -h <hostname> -p <port> -U <username> -d <databasename> -n <schemaname> -Fc -f /path/to/backupfile

pg_dump -h 192.168.124.58 -p 5432 -U postgres -d gzgas -n gzsjcj -Fc -f E:\pgdata\gzsjcj_schema

拷贝文件到docker volumes

docker cp /usr/pg14/hnsggas.bak 80fb430dc3fd:/bak/hnsim
psql -h localhost -p 5432 -U postgres -d postgres

创建数据库和模式:

CREATE DATABASE hngas;

\c hngas;
CREATE SCHEMA hnsjcj;

导入备份文件:

使用 pg_restore 命令将备份文件导入到指定的模式中。

pg_restore -h <hostname> -p <port> -U <username> -d dbname -n schemaname /path/to/backupfile

pg_restore -h localhost -p 5432 -U postgres -d hngas -n hnsjcj /var/lib/postgresql/data/bak/hnsim/gzsjcj_schema.sql

#上述不行的话采用此种方式导入
 \i /var/lib/postgresql/data/bak/hnsim/gzsjcj_schema.sql

连接到 PostgreSQL 数据库

psql -h localhost -p 5432 -U postgres -d hngas

切换到 hnsjcj 模式:

SET search_path TO hnsjcj;

查看表信息

image-20240302161344670

posted @ 2024-05-30 17:45  scmie  阅读(1597)  评论(0)    收藏  举报