操作系统版本:4.19.90-23.8.v2101.ky10.aarch64
数据库版本:PostgreSQL 12.6 on aarch64-unknown-linux-gnu
groupadd -g 60000 pgsql
useradd -u 60000 -g pgsql pgsql
passwd pgsql
mkdir -p /dev2_500G/postgresql/{pgdata,archive,scripts,backup,pg10,soft}
chown -R pgsql:pgsql /dev2_500G/postgresql
chmod -R 775 /dev2_500G/postgresql
su - pgsql
cd /dev2_500G/postgresql/soft
tar zxvf postgresql-12.6.tar.gz
cd postgresql-10.16
./configure --prefix=/postgresql/pg10 --without-readline
## –prefix选项是配置安装的路径。
make -j 2 && make install
## 用make -j带一个参数,可以进行并行编译
需在pgsql用户下进行,如果使用su命令切换到pgsql用户时,报错:pgsql 不在 sudoers 文件中。此事将被报告。则需切换至root用户下,vim /etc/sudoers,添加上pgsql用户就可以了。
出现Success. You can now start the databse server using 则安装成功
vim ~/.bash_profile
## 加入如下变量,变量地址按实际更改
export LANG=en_US.UTF-8
export PS1="[\u@\h \W]\$ "
export PGPORT=5432
export PGDATA=/dev2_500G/postgresql/pgdata
export PGHOME=/dev2_500G/postgresql/pg10
export LD_LIBRARY_PATH=$PGHOME/lib:/lib64:/usr/lib64:/usr/local/lib64:/lib:/usr/lib:/usr/local/lib:$LD_LIBRARY_PATH
export PATH=$PGHOME/bin:$PATH:.
export DATE=`date +"%Y%m%d%H%M"`
export MANPATH=$PGHOME/share/man:$MANPATH
export PGHOST=$PGDATA
export PGUSER=postgres
export PGDATABASE=postgres
## 添加完成之后 source 一下
source /etc/profile
在pgdata目录下,有postgresql.conf,pg_hba.conf 两个配置文件。pg_hba.conf文件用于控制访问安全性,管理客户端对于PostgreSQL服务器的访问权限。postgresql.conf文件主要影响服务器实例的基本行为。
## 在pg_hba.conf文件下加入或修改如下参数,对ip与数据库不进行限制
local all all trust
host all all 127.0.0.1/32 trust
host all all 0.0.0.0/0 md5
host replication all 0.0.0.0/0 md5
在postgresql.conf文件中,主要修改shared_buffers,wal_buffers两个参数
shared_buffers:这个参数是最有效的用于调优的参数。此参数的作用是设置PostgreSQL中用于缓存的专用内存量。shared_buffers的默认值设置得非常低,一般建议的设置值为机器总内存大小的25%。
wal_buffers:在pgsql12.6这个版本里面,wal_buffers参数是随shared_buffers大小自动调整的,不需要自行修改。
#wal_buffers = -1 # min 32kB, -1 sets based on shared_buffers
详细的参数说明可以参考此篇博客
https://www.cnblogs.com/VicLiu/p/11854730.html
修改完成之后保存退出,在pgsql 用户下执行 pg_ctl start 命令启动数据库,之后就可以进行ddl操作了。
旧数据库服务器配置确实不算很高,导致进行数据集成时效率太低,所以进行数据库迁移提高效率,老数据库服务器内存是8G,但是老数据库服务器不能去增加内存资源,只能迁移到24G内存的新服务器。
首先进入到老服务器后,执行sync命令同步一下,要先提前创建好存放备份文件的文件夹以及对数据库用户授权。新服务器数据库的配置等需要提前设置好,然后进入到老服务器数据库用户。
迁移的话有三种方法:
1、使用 pg_dumpall 工具将数据备份为一个转储文件,然后去新服务器上恢复;这种方法对于大数据量更方便点;
2、使用 pg_dumpall 工具将数据备份为 .sql 文件,这种与第一种方法差不多,不过备份为.sql文件阅读起来以及查看脚本更方便。
3、直接对数据文件进行迁移,这种我认为适用于数据库系统崩掉,启动不了的情况。但是这种方法需要新数据库服务器的数据库安装路径与数据文件存放路径保持一致,不然要去修改配置文件,相对比较麻烦。
我这次使用的是第二种方法:
## 在存放备份文件的目录下执行
#导出所有数据库
pg_dumpall >pg_all.sql
#导出所有Role 和Tablespace
pg_dumpall -g >pg_globle.sql # -g 只转储全局对象,不转储数据库
#仅导出Role:
pg_dumpall -r >pg_roles.sql # -r 只转储角色,不转储数据库或表空间
# 仅导出Tablespace:
pg_dumpall -t >pg_tablespace.sql # -t 只转储表空间,不转储数据库或角色
# 备份为转储文件
pg_dumpall -U pgsql -v -f pgsql_back.backup # -U 以指定的数据库用户连接 -f 输出文件名 -v 详细模式
sql文件与转储文件都备份更保险一点,在使用sql文件恢复数据时,已经存在的对象会跳过。然后将备份文件传输至新数据库服务器,恢复数据
# pg_all.sql 文件里面包含了角色与权限等
psql -f pg_all.sql
psql -f pg_tablespace.sql
psql -f pg_roles.sql
psql -f pg_globle.sql
执行完成之后数据已经导入进去了,然后重启数据库
pg_ctl stop
pg_ctl start
至此数据库迁移完成,然后就可以用原来的数据库名、用户、密码进行登录了