github.com/cloudberrydb/gpbackup@v1.0.3-0.20240118031043-5410fd45eed6/ci/scripts/icw-roundtrip.bash (about)

     1  #!/bin/bash
     2  
     3  set -ex
     4  
     5  # setup cluster and install gpbackup tools using gppkg
     6  ccp_src/scripts/setup_ssh_to_cluster.sh
     7  out=$(ssh -t cdw 'source env.sh && psql postgres -c "select version();"')
     8  GPDB_VERSION=$(echo ${out} | sed -n 's/.*Greenplum Database \([0-9]\).*/\1/p')
     9  mkdir -p /tmp/untarred
    10  tar -xzf gppkgs/gpbackup-gppkgs.tar.gz -C /tmp/untarred
    11  scp /tmp/untarred/gpbackup_tools*gp${GPDB_VERSION}*${OS}*.gppkg cdw:/home/gpadmin
    12  scp ./icw_dump/dump.sql.xz cdw:/home/gpadmin
    13  
    14  pushd ./diffdb_src
    15      go build
    16      scp ./diffdb cdw:/home/gpadmin/
    17  popd
    18  
    19  cat <<SCRIPT > /tmp/run_tests.bash
    20  #!/bin/bash
    21  
    22  source env.sh
    23  
    24  # Double the vmem protect limit default on the master segment to
    25  # prevent query cancels on large table creations
    26  gpconfig -c gp_vmem_protect_limit -v 16384 --masteronly
    27  gpstop -air
    28  
    29  # only install if not installed already
    30  is_installed_output=\$(source env.sh; gppkg -q gpbackup*gp*.gppkg)
    31  set +e
    32  echo \$is_installed_output | grep 'is installed'
    33  if [ \$? -ne 0 ] ; then
    34    set -e
    35    gppkg -i gpbackup*gp*.gppkg
    36  fi
    37  
    38  # run dump into database
    39  echo "## Loading dumpfile ##"
    40  unxz < /home/gpadmin/dump.sql.xz | PGOPTIONS='--client-min-messages=warning' psql -q -f - postgres
    41  
    42  # server bug. can't safely use enums as distribution key
    43  # https://github.com/greenplum-db/gpdb/issues/14198
    44  psql -d regression -c "DROP TYPE IF EXISTS gpdist_legacy_opclasses.colors CASCADE;"
    45  psql -d regression -c "DROP TABLE IF EXISTS gpdist_legacy_opclasses.legacy_enum CASCADE;"
    46  
    47  echo "## Performing backup of regression database ## "
    48  gpbackup --dbname regression --backup-dir /home/gpadmin/data | tee /tmp/gpbackup_test.log
    49  timestamp=\$(head -10 /tmp/gpbackup_test.log | grep "Backup Timestamp " | grep -Eo "[[:digit:]]{14}")
    50  gpbackup_manager display-report \$timestamp
    51  
    52  # restore database
    53  echo "## Performing restore of regression database ## "
    54  time gprestore --timestamp "\$timestamp" --backup-dir /home/gpadmin/data --create-db --redirect-db restoreregression
    55  
    56  ./diffdb --basedb=regression --testdb=restoreregression &> ./dbdiff.log
    57  grep "matches database" ./dbdiff.log
    58  if [ \$? -ne 0 ] ; then
    59      echo "ERROR: ICW round-trip restore did not match"
    60      cat ./dbdiff.log
    61      exit 1
    62  fi
    63  echo "ICW round-trip restore was successful"
    64  
    65  SCRIPT
    66  
    67  chmod +x /tmp/run_tests.bash
    68  scp /tmp/run_tests.bash cdw:/home/gpadmin/run_tests.bash
    69  ssh -t cdw "/home/gpadmin/run_tests.bash"