github.com/greenplum-db/gpbackup@v0.0.0-20240517212602-89daab1885b3/ci/scripts/icw-migr-backup.bash (about)

     1  #!/bin/bash
     2  set -ex
     3  
     4  mkdir /tmp/untarred
     5  tar -xzf gppkgs/gpbackup-gppkgs.tar.gz -C /tmp/untarred
     6  if [[ -d gp-pkg ]] ; then
     7      mkdir /tmp/gppkgv2
     8      tar -xzf gp-pkg/gppkg* -C /tmp/gppkgv2
     9  fi
    10  
    11  if [[ ! -f bin_gpdb/bin_gpdb.tar.gz ]] ; then
    12    mv bin_gpdb/*.tar.gz bin_gpdb/bin_gpdb.tar.gz
    13  fi
    14  source gpdb_src/concourse/scripts/common.bash
    15  time install_gpdb
    16  time ./gpdb_src/concourse/scripts/setup_gpadmin_user.bash
    17  time make_cluster
    18  
    19  # unxz the dump to a findable location
    20  xz -dc icw_dump/dump.sql.xz > /tmp/dump.sql
    21  
    22  cat <<SCRIPT > /tmp/backup_icw.bash
    23  #!/bin/bash
    24  
    25  set -ex
    26  
    27  # use "temp build dir" of parent shell
    28  export GOPATH=\${HOME}/go
    29  export PATH=/usr/local/go/bin:\$PATH:\${GOPATH}/bin:/opt/rh/devtoolset-7/root/usr/bin/
    30  mkdir -p \${GOPATH}/bin \${GOPATH}/src/github.com/greenplum-db
    31  cp -R $(pwd)/gpbackup \${GOPATH}/src/github.com/greenplum-db/
    32  
    33  # Install dependencies before sourcing greenplum path. Using the GPDB curl is causing issues.
    34  pushd \${GOPATH}/src/github.com/greenplum-db/gpbackup
    35    make depend
    36  popd
    37  
    38  source /usr/local/greenplum-db-devel/greenplum_path.sh
    39  source $(pwd)/gpdb_src/gpAux/gpdemo/gpdemo-env.sh
    40  
    41  mkdir -p "\${GPHOME}/postgresql"
    42  
    43  # Install gpbackup gppkg
    44  out=\$(psql postgres -c "select version();")
    45  GPDB_VERSION=\$(echo \$out | sed -n 's/.*Greenplum Database \([0-9]\).*/\1/p')
    46  
    47  if [[ -f /tmp/gppkgv2/gppkg ]] ; then
    48      /tmp/gppkgv2/gppkg install -a /tmp/untarred/gpbackup*gp\${GPDB_VERSION}*${OS}*.gppkg
    49  else
    50      gppkg -i /tmp/untarred/gpbackup*gp\${GPDB_VERSION}*${OS}*.gppkg
    51  fi
    52  
    53  # run the ICW dump into the cluster
    54  createdb regression
    55  PGOPTIONS='--client-min-messages=warning' psql -d regression -q -f /tmp/dump.sql
    56  
    57  # run cleanups needed for migration backup, and tar cleaned backup into a tempdir
    58  # TODO: move these into a standalone script to abstract version-specific cleanups so we can re-use
    59  # this for migration testing other to/from GPDB versions
    60  psql -d regression -c "DROP EXTENSION IF EXISTS plpythonu CASCADE;"
    61  psql -d regression -c "DROP TABLE IF EXISTS bfv_partition.t26002_t1 CASCADE;"
    62  psql -d regression -c "DROP TABLE IF EXISTS dpe_malp.malp CASCADE;"
    63  psql -d regression -c "DROP TABLE IF EXISTS partition_pruning.pt_complex CASCADE;"
    64  psql -d regression -c "DROP TABLE IF EXISTS public.mpp18162a CASCADE;"
    65  psql -d regression -c "DROP TABLE IF EXISTS public.mpp18162b CASCADE;"
    66  psql -d regression -c "DROP TABLE IF EXISTS public.mpp18162c CASCADE;"
    67  psql -d regression -c "DROP TABLE IF EXISTS public.mpp18162d CASCADE;"
    68  psql -d regression -c "DROP TABLE IF EXISTS public.mpp18162e CASCADE;"
    69  psql -d regression -c "DROP TABLE IF EXISTS public.mpp18162f CASCADE;"
    70  psql -d regression -c "DROP TABLE IF EXISTS public.mpp18179 CASCADE;"
    71  psql -d regression -c "DROP TABLE IF EXISTS public.mpp5878 CASCADE;"
    72  psql -d regression -c "DROP TABLE IF EXISTS public.mpp5878a CASCADE;"
    73  psql -d regression -c "DROP TABLE IF EXISTS public.equal_operator_not_in_search_path_table_multi_key CASCADE;"
    74  psql -d regression -c "ALTER TABLE gpdist_legacy_opclasses.all_legacy_types drop column abstime_col;"
    75  psql -d regression -c "ALTER TABLE gpdist_legacy_opclasses.all_legacy_types drop column tinterval_col;"
    76  psql -d regression -c "DROP TABLE IF EXISTS public.aocs_unknown CASCADE;"
    77  psql -d regression -c "DROP TABLE IF EXISTS public.test_issue_12936 CASCADE;"
    78  psql -d regression -c "DROP MATERIALIZED VIEW IF EXISTS public.mv_unspecified_types;"
    79  psql -d regression -c "DROP TABLE IF EXISTS public.mpp5992 CASCADE;"
    80  psql -d regression -c "DROP TABLE IF EXISTS public.pt_ao_tab_rng CASCADE;"
    81  psql -d regression -c "DROP TABLE IF EXISTS public.pt_co_tab_rng CASCADE;"
    82  psql -d regression -c "DROP OPERATOR IF EXISTS public.=> (bigint, NONE) CASCADE;"
    83  psql -d regression -c "DROP VIEW IF EXISTS mpp7164.partagain CASCADE;"
    84  psql -d regression -c "DROP VIEW IF EXISTS mpp7164.partlist CASCADE;"
    85  psql -d regression -c "DROP VIEW IF EXISTS mpp7164.partrank CASCADE;"
    86  psql -d regression -c "DROP VIEW IF EXISTS public.redundantly_named_part;"
    87  psql -d regression -c "DROP FUNCTION IF EXISTS index_constraint_naming_partition.partition_tables() CASCADE;"
    88  psql -d regression -c "DROP TRIGGER IF EXISTS after_ins_stmt_trig on public.main_table;"
    89  psql -d regression -c "DROP TRIGGER IF EXISTS after_upd_b_stmt_trig on public.main_table;"
    90  psql -d regression -c "DROP TRIGGER IF EXISTS after_upd_stmt_trig on public.main_table;"
    91  psql -d regression -c "DROP TRIGGER IF EXISTS before_ins_stmt_trig on public.main_table;"
    92  psql -d regression -c "DROP TRIGGER IF EXISTS before_upd_a_stmt_trig on public.main_table;"
    93  psql -d regression -c "DROP TRIGGER IF EXISTS foo_as_trigger on test_expand_table.table_with_update_trigger;"
    94  psql -d regression -c "DROP TRIGGER IF EXISTS foo_bs_trigger on test_expand_table.table_with_update_trigger;"
    95  
    96  mkdir /tmp/icw-migr-backup
    97  gpbackup --dbname regression --backup-dir /tmp/icw-migr-backup --single-backup-dir
    98  echo "Backup for migration testing completed"
    99  
   100  SCRIPT
   101  
   102  chmod +x /tmp/backup_icw.bash
   103  su - gpadmin "/tmp/backup_icw.bash"
   104  
   105  # move artifacts for Concourse put
   106  tar -czf migration-backup.tar.gz -C /tmp icw-migr-backup
   107  mv migration-backup.tar.gz migration-artifacts
   108