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"