Backup and Restore
Hypertable backup and restore are accomplished with the HQL commands DUMP TABLE and LOAD DATA INFILE. It is possible to create backups with the SELECT command, but it is not recommended because it will output table data in sorted order. When loading data with LOAD DATA INFILE that is in sorted order, only one RangeServer will be kept busy at a time. To combat this problem, the DUMP TABLE command was introduced which will output table data in random order. Loading backups taken with the DUMP TABLE command is much more efficient since all of the participating RangeServers will be kept busy.
backup.sh
#!/usr/bin/env bash
if [ $# -lt 2 ] ; then
echo "usage: $0 <namespace> <table> [ ... ]"
exit 0
fi
namespace=$1
shift
while [ $# -ge 1 ]; do
echo "Backing up '${namespace}/$1' ..."
echo "USE '${namespace}';" > create-table-$1.hql
echo "USE '${namespace}'; SHOW CREATE TABLE '$1';" | ht shell --batch --silent >> create-table-$1.hql
echo ";" >> create-table-$1.hql
echo "USE '${namespace}'; DUMP TABLE '$1' INTO FILE '$1.gz';" | ht shell --batch
shift
done
restore.sh
#!/usr/bin/env bash
if [ $# -lt 2 ] ; then
echo "usage: $0 [ ... ]"
exit 0
fi
namespace=$1
shift
while [ $# -ge 1 ]; do
table=`basename $1 | cut -f1 -d'.'`
echo "Restoring '${namespace}/${table}' ..."
cat create-table-$1.hql | ht shell --batch
echo "USE '${namespace}'; LOAD DATA INFILE '$1.gz' INTO TABLE '$table';" | ht shell --batch
shift
done

