瀚高数据库及PG在Windows下DATA目录的迁移

1,531 阅读2分钟

这是我参与8月更文挑战的第25天,活动详情查看:8月更文挑战

在windows下,可能会有迁移data目录的需求,本文主要就瀚高数据库及PG在Windows下DATA目录的迁移进行介绍。 1、先查询当前的data目录

highgo=# show data_directory;
       data_directory
-------------------------------
 C:/highgo/database/5.6.4/data

2、关闭数据库,关闭数据库服务

点击 开始->管理工具->服务, 找到 hgdb-se5.6.4 选中后点击停止

  3、修改data目录下配置文件postgresql.conf

# data_directory = 'ConfigDir' ==> data_directory = 'D:/highgo/data'

注意:参数里面改成新的data目录,而 且一定注意,windows下也必须是斜杠,反斜杠不会识别,后期启动时会报错找不到data目录并会要求手动initdb

错误信息存在于系统日志 ( 开始->管理工具->服务器管理器->诊断->事件查看器->windows日志->应用程序) 中会提示找不到data目录

4、拷贝data目录至目标路径

将原data目录删除(或重命名)

5、在命令行启动数据库pg_ctl start,进行查询验证

highgo=# show data_directory;
 data_directory
----------------
 C:/highgodb/data
(1 行记录)

6、通过服务启动数据库,发现会报错,提示找不到data目录,所以仅改数据库配置文件不够,可以有以下几种方法

1)删除原有服务,增加新服务。

(由于windows下封装的包,在安装时写入的data目录会注册到服务相对应的注册表中,所以修改了data目录就要修改相关的所有注册表,所以删除服务重新生成服务可以生成新的注册表,才能通过服务来启动数据库)

C:\Users\Administrator>   pg_ctl unregister -N hgdb-se5.6.4
C:\Users\Administrator>   pg_ctl register -N hgdb-se5.6.4 -U "NT AUTHORITY\NetworkService" -D "D:\highgo\data" -s
C:\Users\Administrator>

刷新服务列表,启动数据库

    开始->管理工具->服务, 找到 hgdb-se5.6.4 选中后点击启动

2)可以不需要修改注册表的相关数据直接建立新的数据目录的目录链接

(比如原来是C:\data 改成C:\highgodb\data后,进行创建目录链接or联接)[如果有改动过postgresql.conf的data_dirctory参数需要注释]

C:\Users\Administrator> mklink /J C:\data C:\highgodb\data 

(前面是要创建的目录链接,后面是真实文件路径,双引号可有可无)

7、刷新服务列表,启动数据库

开始->管理工具->服务, 找到 hgdb-se5.6.4 选中后点击启动。