支持资源池化单集群升级双集群
This commit is contained in:
@ -4932,7 +4932,7 @@ int main(int argc, char* argv[])
|
||||
}
|
||||
|
||||
if (enable_dss && ss_issharedstorage) {
|
||||
ss_need_mkspecialdir = (ss_enable_dorado && !ss_check_specialdir(vgdata));
|
||||
ss_need_mkspecialdir = !ss_check_specialdir(vgdata);
|
||||
ss_mkdirdir(ss_nodeid, pg_data, vgdata, vglog, ss_need_mkclusterdir, ss_need_mkspecialdir);
|
||||
} else {
|
||||
/* Create required subdirectories */
|
||||
|
||||
@ -1321,6 +1321,10 @@ create_data_directories(parray *dest_files, const char *data_dir, const char *ba
|
||||
if (ss_create_if_doublewrite(dir, instance_config.dss.vgdata, instance_config.dss.instance_id)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (ss_create_if_pg_replication(dir, instance_config.dss.vgdata, instance_config.dss.vglog)) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
/* tablespace_map exists */
|
||||
|
||||
@ -391,6 +391,7 @@ extern void parse_vgname_args(const char* args);
|
||||
extern bool is_ss_xlog(const char *ss_dir);
|
||||
extern void ss_createdir(const char *ss_dir, const char *vgdata, const char *vglog);
|
||||
extern bool ss_create_if_doublewrite(pgFile* dir, const char* vgdata, int instance_id);
|
||||
extern bool ss_create_if_pg_replication(pgFile* dir, const char* vgdata, const char* vglog);
|
||||
extern char* xstrdup(const char* s);
|
||||
extern void set_min_recovery_point(pgFile *file, const char *fullpath,
|
||||
XLogRecPtr stop_backup_lsn);
|
||||
|
||||
@ -594,10 +594,31 @@ ss_createdir(const char *ss_dir, const char *vgdata, const char *vglog)
|
||||
}
|
||||
}
|
||||
|
||||
bool
|
||||
ss_create_if_pg_replication(pgFile* dir, const char* vgdata, const char* vglog)
|
||||
{
|
||||
if (pg_strcasecmp(dir->rel_path, "pg_replication") == 0) {
|
||||
char path[MAXPGPATH];
|
||||
errno_t rc = sprintf_s(path, sizeof(path), "%s/%s", vglog, dir->rel_path);
|
||||
securec_check_ss_c(rc, "\0", "\0");
|
||||
char link_path[MAXPGPATH];
|
||||
rc = sprintf_s(link_path, sizeof(link_path), "%s/%s", vgdata, dir->rel_path);
|
||||
securec_check_ss_c(rc, "\0", "\0");
|
||||
dir_create_dir(path, DIR_PERMISSION);
|
||||
if (symlink(path, link_path) < 0) {
|
||||
elog(ERROR, "can not link dss dir \"%s\" to dss dir \"%s\": %s", link_path, path,
|
||||
strerror(errno));
|
||||
}
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
bool
|
||||
ss_create_if_doublewrite(pgFile* dir, const char* vgdata, int instance_id)
|
||||
{
|
||||
char ss_doublewrite[MAXPGPATH];;
|
||||
char ss_doublewrite[MAXPGPATH];
|
||||
errno_t rc = sprintf_s(ss_doublewrite, sizeof(ss_doublewrite), "%s%d", "pg_doublewrite", instance_id);
|
||||
securec_check_ss_c(rc, "\0", "\0");
|
||||
if (pg_strcasecmp(dir->rel_path, ss_doublewrite) == 0) {
|
||||
|
||||
Reference in New Issue
Block a user