PostgreSQL升级大版本是一个相对复杂的过程,需要谨慎操作,以下是详细的步骤和注意事项:
(图片来源网络,侵删)
1、备份数据
在进行任何升级操作之前,务必备份所有重要数据,可以使用pg_dump
命令进行备份。
2、检查兼容性
在升级之前,需要查看PostgreSQL官方文档,了解新版本与现有版本的兼容性,确保新版本支持现有的功能和扩展。
3、停止服务
在升级之前,需要停止PostgreSQL服务,可以使用以下命令:
sudo systemctl stop postgresql
4、下载并解压新版本
从PostgreSQL官方网站下载最新版本的源代码包,然后解压到一个目录中。
wget https://ftp.postgresql.org/pub/source/v13.0/postgresql13.0.tar.gz tar xzf postgresql13.0.tar.gz cd postgresql13.0
5、配置编译选项
在解压后的目录中,运行configure
脚本以配置编译选项。
./configure prefix=/usr/local/pgsql withlibxml withlibxslt withopenssl withzlib withpython
6、编译并安装
使用make
和make install
命令编译并安装新版本的PostgreSQL。
make && make install
7、创建一个新的数据目录和配置文件目录
在新版本的安装目录下,创建一个新的数据目录和配置文件目录。
sudo mkdir /usr/local/pgsql/data13 && sudo chown postgres:postgres /usr/local/pgsql/data13 sudo mkdir /usr/local/pgsql/conf13 && sudo chown postgres:postgres /usr/local/pgsql/conf13
8、复制旧数据到新目录
将旧版本的数据文件复制到新创建的数据目录中。
sudo cp R /var/lib/postgresql/12/* /usr/local/pgsql/data13/
9、修改配置文件
复制旧版本的配置文件到新创建的配置文件目录中,并根据需要进行修改。
sudo cp /var/lib/postgresql/12/main/postgresql.conf /usr/local/pgsql/conf13/postgresql.conf sudo cp /var/lib/postgresql/12/main/pg_hba.conf /usr/local/pgsql/conf13/pg_hba.conf sudo cp /var/lib/postgresql/12/main/pg_ident.conf /usr/local/pgsql/conf13/pg_ident.conf
10、修改数据目录权限
修改新数据目录的权限,使其只能被PostgreSQL用户访问。
sudo chown R postgres:postgres /usr/local/pgsql/data13 && sudo chmod R 700 /usr/local/pgsql/data13
11、创建启动脚本链接
创建一个指向新版本PostgreSQL启动脚本的软链接。
sudo ln s /usr/local/pgsql/bin/* /usr/local/bin/* && sudo chmod +x /usr/local/bin/*
12、初始化数据库集群
使用新版本的initdb
命令初始化数据库集群。
sudo /usr/local/pgsql/bin/initdb D /usr/local/pgsql/data13 U postgres auth=trust encoding=UTF8 locale=en_US.UTF8 nolocale=C preload=yes sync=normal username=postgres groupname=postgres createrole=yes replication=database template=template0 dbname=postgres port=5432 command='config_file=${PGDATA}/postgresql.conf' authhost=md5 authpeer=md5 authclient=md5 pam_type=md5 syslog=0 debug=all superuser=postgres createdb=postgres allowconnections=true listenaddresses='*' unix_socket_directories='*' unix_socket_permissions=0700 unix_socket_owner=postgres unix_socket_group=postgres log_directory='' log_filename='' log_statement='all' log_timezone='America/New_York' log_error_verbosity='VERBOSE' log_destination='stderr' log_duration='on' log_connections='on' log_disconnections='on' log_checkpoints='on' log_lock_waits='on' log_temp_files='on' log_autovacuum='on' log_vacuum_threshold='500' log_statement='all' log_duration='on' log_connections='on' log_disconnections='on' log_checkpoints='on' log_lock_waits='on' log_temp_files='on' log_autovacuum='on' log_vacuum_threshold='500' > /dev/null 2>&1 &
13、启动服务并设置开机自启动
使用新版本的pg_ctl
命令启动服务,并设置为开机自启动。
sudo /usr/local/pgsql/bin/pg_ctl D /usr/local/pgsql/data13 l logfile start && sudo systemctl enable postgresql@13main && sudo systemctl start postgresql@13main && sudo systemctl status postgresql@13main | grep active && echo "PostgreSQL upgraded successfully." || echo "PostgreSQL upgrade failed." && exit 1;
至此,PostgreSQL大版本升级完成。
原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/679533.html
本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。
发表回复