Skip to content

Commit b014c8c

Browse files
authored
Merge pull request #567 from github/hao/fix-in-rc2.19.4
Fix the way we connect to mysql master using ssh forwarding for binary backups
2 parents 863e09e + 33efc37 commit b014c8c

File tree

1 file changed

+22
-16
lines changed

1 file changed

+22
-16
lines changed

share/github-backup-utils/ghe-restore-mysql

Lines changed: 22 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -38,21 +38,27 @@ is_binary_backup_feature_on(){
3838
ghe-ssh "$GHE_HOSTNAME" ghe-config --true "mysql.backup.binary"
3939
}
4040

41-
if ghe-ssh "$GHE_HOSTNAME" test -f /etc/github/cluster ; then
42-
ghe_mysql_master=$(ghe-ssh "$GHE_HOSTNAME" ghe-config "cluster.mysql-master")
43-
if [ -z $ghe_mysql_master ]; then
44-
ghe_mysql_master=$GHE_HOSTNAME
45-
else
46-
port=$(ssh_port_part "$GHE_HOSTNAME")
47-
ghe_mysql_master=$ghe_mysql_master${port:+:$port}
48-
fi
49-
else
50-
ghe_mysql_master=$GHE_HOSTNAME
51-
fi
52-
41+
ssh_config_file_opt=
5342
if is_binary_backup_feature_on; then
5443
# Feature "mysql.backup.binary" is on, which means new backup scripts are available
5544
if is_binary_backup; then
45+
if $CLUSTER ; then
46+
ghe_mysql_master=$(ghe-ssh "$GHE_HOSTNAME" ghe-config "cluster.mysql-master")
47+
if [ -z $ghe_mysql_master ]; then
48+
echo "Something is wrong with configuration: cluster.mysql-master not found" >&2
49+
exit 2
50+
else
51+
tempdir=$(mktemp -d -t backup-utils-restore-XXXXXX)
52+
ssh_config_file="$tempdir/ssh_config"
53+
ssh_config_file_opt="-F $ssh_config_file"
54+
ghe-ssh-config "$GHE_HOSTNAME" "$ghe_mysql_master" > "$ssh_config_file"
55+
port=$(ssh_port_part "$GHE_HOSTNAME")
56+
ghe_mysql_master=$ghe_mysql_master${port:+:$port}
57+
fi
58+
else
59+
ghe_mysql_master=$GHE_HOSTNAME
60+
fi
61+
5662
# Check if the decompress needed by looking into the sentinel file
5763
# In 2.19.5 we compress the binary backup twice
5864
if [ "$(cat $snapshot_dir/mysql-binary-backup-sentinel)" = "NO_ADDITIONAL_COMPRESSION" ]; then
@@ -79,16 +85,16 @@ else
7985
fi
8086

8187
cleanup() {
82-
ghe-ssh "$GHE_RESTORE_HOST" -- "sudo rm -rf $GHE_REMOTE_DATA_USER_DIR/tmp/mysql.sql.gz"
88+
ghe-ssh $ssh_config_file_opt "$GHE_RESTORE_HOST" -- "sudo rm -rf $GHE_REMOTE_DATA_USER_DIR/tmp/mysql.sql.gz"
8389
}
8490
trap 'cleanup' INT TERM EXIT
8591

86-
ghe-ssh "$GHE_RESTORE_HOST" -- "sudo mkdir -p '$GHE_REMOTE_DATA_USER_DIR/tmp'" 1>&3
92+
ghe-ssh $ssh_config_file_opt "$GHE_RESTORE_HOST" -- "sudo mkdir -p '$GHE_REMOTE_DATA_USER_DIR/tmp'" 1>&3
8793

8894
# Transfer MySQL data from the snapshot to the GitHub instance.
89-
cat $snapshot_dir/mysql.sql.gz | ghe-ssh "$GHE_RESTORE_HOST" -- "sudo dd of=$GHE_REMOTE_DATA_USER_DIR/tmp/mysql.sql.gz >/dev/null 2>&1"
95+
cat $snapshot_dir/mysql.sql.gz | ghe-ssh $ssh_config_file_opt "$GHE_RESTORE_HOST" -- "sudo dd of=$GHE_REMOTE_DATA_USER_DIR/tmp/mysql.sql.gz >/dev/null 2>&1"
9096

9197
# Import the database
92-
echo "cat $GHE_REMOTE_DATA_USER_DIR/tmp/mysql.sql.gz | $IMPORT_MYSQL" | ghe-ssh "$GHE_RESTORE_HOST" -- /bin/bash 1>&3
98+
echo "cat $GHE_REMOTE_DATA_USER_DIR/tmp/mysql.sql.gz | $IMPORT_MYSQL" | ghe-ssh $ssh_config_file_opt "$GHE_RESTORE_HOST" -- /bin/bash 1>&3
9399

94100
bm_end "$(basename $0)"

0 commit comments

Comments
 (0)