Skip to content
This repository was archived by the owner on Aug 16, 2021. It is now read-only.

Commit 99ee82b

Browse files
committed
PR remarks fix
1 parent 8571f1c commit 99ee82b

File tree

1 file changed

+39
-26
lines changed

1 file changed

+39
-26
lines changed

nancy_run.sh

Lines changed: 39 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ POSTGRES_VERSION_DEFAULT=10
2020
AWS_BLOCK_DURATION=0
2121

2222
#######################################
23-
# Attach ebs drive with db backup
23+
# Attach an EBS volume containing the database backup (made with pg_basebackup)
2424
# Globals:
2525
# DOCKER_MACHINE, AWS_REGION, DB_EBS_VOLUME_ID
2626
# Arguments:
@@ -32,12 +32,13 @@ function attach_db_ebs_drive() {
3232
docker-machine ssh $DOCKER_MACHINE "sudo sh -c \"mkdir /home/backup\""
3333
docker-machine ssh $DOCKER_MACHINE "wget http://s3.amazonaws.com/ec2metadata/ec2-metadata"
3434
docker-machine ssh $DOCKER_MACHINE "chmod u+x ec2-metadata"
35-
instance_id=$(docker-machine ssh $DOCKER_MACHINE ./ec2-metadata -i)
35+
local instance_id=$(docker-machine ssh $DOCKER_MACHINE ./ec2-metadata -i)
3636
instance_id=${instance_id:13}
37-
attachResult=$(aws --region=$AWS_REGION ec2 attach-volume --device /dev/xvdc --volume-id $DB_EBS_VOLUME_ID --instance-id $instance_id)
37+
local attach_result=$(aws --region=$AWS_REGION ec2 attach-volume \
38+
--device /dev/xvdc --volume-id $DB_EBS_VOLUME_ID --instance-id $instance_id)
3839
sleep 10
3940
docker-machine ssh $DOCKER_MACHINE sudo mount /dev/xvdc /home/backup
40-
docker-machine ssh $DOCKER_MACHINE "sudo df -h /dev/xvdc"
41+
dbg $(docker-machine ssh $DOCKER_MACHINE "sudo df -h /dev/xvdc")
4142
}
4243

4344
#######################################
@@ -160,17 +161,22 @@ function help() {
160161
- dump in \"custom\" format, made with 'pg_dump -Fc ..' ('*.pgdmp'),
161162
* sequence of SQL commands specified as in a form of plain text.
162163
164+
\033[1m--db-name\033[22m (string)
165+
166+
Name of database which must be tested. Name 'test' is internal used name,
167+
so is not correct value.
168+
163169
\033[1m--db-ebs-volume-id\033[22m (string)
164170
165-
Id of Amazon ebs volume with backup of database.
171+
ID of an AWS EBS volume, containing the database backup (made with pg_basebackup).
166172
167-
In root of drive expected be found
173+
In the volume's root directory, the following two files are expected:
168174
- base.tar.gz
169-
- pg_xlog.tar.gz
175+
- pg_xlog.tar.gz for Postgres version up to 9.6 or pg_wal.tar.gz for Postgres 10+
170176
171-
Created as result of execution:
172-
'pg_basebackup -U postgres -z -ZX -P -Ft -D /ebs-db-vol-root'
173-
where X any compression level.
177+
The following command can be used to get such files:
178+
'pg_basebackup -U postgres -zPFt -Z 5 -D /path/to/ebs/volume/root'
179+
Here '-Z 5' means that level 5 to be used for compression, you can choose any value from 0 to 9.
174180
175181
176182
\033[1m--db-pgbench\033[22m (string)
@@ -541,7 +547,8 @@ function check_cli_parameters() {
541547
[[ ! -z ${WORKLOAD_CUSTOM_SQL+x} ]] && let workloads_count=$workloads_count+1
542548
[[ ! -z ${WORKLOAD_PGBENCH+x} ]] && let workloads_count=$workloads_count+1
543549

544-
if [[ -z ${DB_PREPARED_SNAPSHOT+x} ]] && [[ -z ${DB_DUMP+x} ]] && [[ -z ${DB_PGBENCH+x} ]] && [[ -z ${DB_EBS_VOLUME_ID+x} ]]; then
550+
if [[ -z ${DB_PREPARED_SNAPSHOT+x} ]] && [[ -z ${DB_DUMP+x} ]] \
551+
&& [[ -z ${DB_PGBENCH+x} ]] && [[ -z ${DB_EBS_VOLUME_ID+x} ]]; then
545552
err "ERROR: The object (database) is not defined."
546553
exit 1
547554
fi
@@ -1140,7 +1147,7 @@ elif [[ "$RUN_ON" == "aws" ]]; then
11401147
msg " To connect docker machine use:"
11411148
msg " docker-machine ssh $DOCKER_MACHINE"
11421149

1143-
if [[ ! -z ${DB_EBS_VOLUME_ID+x} ]]; then
1150+
if [[ "$RUN_ON" == "aws" ]] && [[ ! -z ${DB_EBS_VOLUME_ID+x} ]]; then
11441151
attach_db_ebs_drive;
11451152
fi
11461153

@@ -1151,7 +1158,7 @@ elif [[ "$RUN_ON" == "aws" ]]; then
11511158
else
11521159
msg "Use EBS volume"
11531160
# Create new volume and attach them for non i3 instances if needed
1154-
if [ ! -z ${AWS_EBS_VOLUME_SIZE+x} ]; then
1161+
if [[ "$RUN_ON" == "aws" ]] && [[ ! -z ${AWS_EBS_VOLUME_SIZE+x} ]]; then
11551162
use_ec2_ebs_drive $AWS_EBS_VOLUME_SIZE
11561163
fi
11571164
fi
@@ -1179,7 +1186,7 @@ alias docker_exec='docker $DOCKER_CONFIG exec -i ${CONTAINER_HASH} '
11791186
CPU_CNT=$(docker_exec bash -c "cat /proc/cpuinfo | grep processor | wc -l") # for execute in docker
11801187

11811188
#######################################
1182-
# Extract database backup from attached ebs volume to database
1189+
# Extract the database backup from the attached EBS volume.
11831190
# Globals:
11841191
# PG_VERSION
11851192
# Arguments:
@@ -1189,25 +1196,31 @@ CPU_CNT=$(docker_exec bash -c "cat /proc/cpuinfo | grep processor | wc -l") # fo
11891196
#######################################
11901197
function cp_db_ebs_backup() {
11911198
# Here we think what postgress stopped
1192-
msg "Restore(cp) database backup."
1199+
msg "Extract database backup from EBS volume"
11931200
docker_exec bash -c "rm -rf /var/lib/postgresql/9.6/main/*"
11941201

1195-
OP_START_TIME=$(date +%s);
1202+
local op_start_time=$(date +%s);
11961203
docker_exec bash -c "rm -rf /var/lib/postgresql/$PG_VERSION/main/*"
1197-
docker_exec bash -c "tar -C /storage/postgresql/$PG_VERSION/main/ -xzvf /backup/base.tar.gz"
1198-
docker_exec bash -c "tar -C /storage/postgresql/$PG_VERSION/main/pg_xlog -xzvf /backup/pg_xlog.tar.gz"
1199-
END_TIME=$(date +%s);
1200-
DURATION=$(echo $((END_TIME-OP_START_TIME)) | awk '{printf "%d:%02d:%02d", $1/3600, ($1/60)%60, $1%60}')
1201-
msg "Backup copied for $DURATION."
1204+
docker_exec bash -c "([[ -f /backup/base.tar.gz ]] && tar -C /storage/postgresql/$PG_VERSION/main/ -xzvf /backup/base.tar.gz) || true"
1205+
docker_exec bash -c "([[ -f /backup/base.tar ]] && tar -C /storage/postgresql/$PG_VERSION/main/ -xvf /backup/base.tar) || true"
1206+
docker_exec bash -c "([[ -f /backup/pg_xlog.tar.gz ]] && tar -C /storage/postgresql/$PG_VERSION/main/pg_xlog -xzvf /backup/pg_xlog.tar.gz) || true"
1207+
docker_exec bash -c "([[ -f /backup/pg_wal.tar.gz ]] && tar -C /storage/postgresql/$PG_VERSION/main/pg_xlog -xzvf /backup/pg_wal.tar.gz) || true"
1208+
docker_exec bash -c "([[ -f /backup/pg_xlog.tar ]] && tar -C /storage/postgresql/$PG_VERSION/main/pg_xlog -xvf /backup/pg_xlog.tar) || true"
1209+
docker_exec bash -c "([[ -f /backup/pg_wal.tar ]] && tar -C /storage/postgresql/$PG_VERSION/main/pg_xlog -xvf /backup/pg_wal.tar) || true"
1210+
1211+
local end_time=$(date +%s);
1212+
local duration=$(echo $((end_time-op_start_time)) | awk '{printf "%d:%02d:%02d", $1/3600, ($1/60)%60, $1%60}')
1213+
msg "Time taken to extract database backup from EBS volume: $duration."
12021214

12031215
docker_exec bash -c "chown -R postgres:postgres /storage/postgresql/$PG_VERSION/main"
12041216
docker_exec bash -c "localedef -f UTF-8 -i en_US en_US.UTF-8"
1217+
docker_exec bash -c "localedef -f UTF-8 -i en_US ru_RU.UTF-8"
12051218
}
12061219

12071220
#######################################
1208-
# Dettach drive with database backup
1221+
# Detach EBS volume
12091222
# Globals:
1210-
# DOCKER_MACHINE, DB_EBS_VOLUME_ID
1223+
# DOCKER_MACHINE, DB_EBS_VOLUME_ID, AWS_REGION
12111224
# Arguments:
12121225
# None
12131226
# Returns:
@@ -1216,7 +1229,7 @@ function cp_db_ebs_backup() {
12161229
function dettach_db_ebs_drive() {
12171230
docker_exec bash -c "umount /backup"
12181231
docker-machine ssh $DOCKER_MACHINE sudo umount /home/backup
1219-
dettachResult=$(aws --region=$AWS_REGION ec2 detach-volume --volume-id $DB_EBS_VOLUME_ID)
1232+
local dettach_result=$(aws --region=$AWS_REGION ec2 detach-volume --volume-id $DB_EBS_VOLUME_ID)
12201233
}
12211234

12221235
docker_exec bash -c "mkdir $MACHINE_HOME && chmod a+w $MACHINE_HOME"
@@ -1232,7 +1245,7 @@ if [[ "$RUN_ON" == "aws" ]]; then
12321245
docker_exec bash -c "ln -s /storage/postgresql /var/lib/postgresql"
12331246

12341247
if [[ ! -z ${DB_EBS_VOLUME_ID+x} ]]; then
1235-
cp_db_ebs_backup;
1248+
cp_db_ebs_backup
12361249
dettach_db_ebs_drive
12371250
fi
12381251

@@ -1594,7 +1607,7 @@ function collect_results() {
15941607
msg "Time taken to generate and collect artifacts: $DURATION."
15951608
}
15961609

1597-
if [[ ! -z ${DB_EBS_VOLUME_ID+x} ]]; then
1610+
if [[ ! -z ${DB_EBS_VOLUME_ID+x} ]] && [[ ! "$DB_NAME" == "test" ]]; then
15981611
docker_exec bash -c "psql --set ON_ERROR_STOP=on -U postgres -c 'drop database if exists test;'"
15991612
docker_exec bash -c "psql --set ON_ERROR_STOP=on -U postgres -c 'alter database $DB_NAME rename to test;'"
16001613
DB_NAME=test

0 commit comments

Comments
 (0)