Skip to content

Instantly share code, notes, and snippets.

@zhouyl
Created June 29, 2024 06:37
Show Gist options
  • Save zhouyl/ac31443038efd62a6465997b21bc8171 to your computer and use it in GitHub Desktop.
Save zhouyl/ac31443038efd62a6465997b21bc8171 to your computer and use it in GitHub Desktop.
mysql dump & recovery shell script
[client]
host=localhost
port=3306
user=root
password=root
AUTH_FILE=./mysql-auth.cnf
MYSQL_BIN="/usr/bin/mysql --defaults-extra-file=$AUTH_FILE"
MYSQLDUMP_BIN="/usr/bin/mysqldump --defaults-extra-file=$AUTH_FILE"
MYSQLDUMP_OPTS="--add-drop-table --extended-insert --quick --disable-keys --single-transaction --skip-comments"
DUMP_PATH="/data/backup/mysql"
DATABASES=(
database1
database2
database3
)
for DATABASE in ${DATABASES[@]}
do
mkdir -p "$DUMP_PATH/$DATABASE"
echo "dumping $DATABASE ..."
ALL_TABLES=$($MYSQL_BIN -D $DATABASE -e 'show tables;' | tail -n +2)
for TABLE in ${ALL_TABLES[@]}
do
echo " > dumping $DUMP_PATH/$DATABASE/$TABLE.sql ..."
$MYSQLDUMP_BIN $MYSQLDUMP_OPTS $DATABASE $TABLE > $DUMP_PATH/$DATABASE/$TABLE.sql
done
echo ""
done
DATABASE=$1
DIRECTORY="/data/backup/mysql/$1"
if [ -z $DATABASE ]; then
echo "Please enter import database name!"
exit 0
fi
if [ ! -d $DIRECTORY ] ; then
echo "directory: $DIRECTORY was not exists"
exit 0
fi
AUTH_FILE=./mysql-auth.cnf
MYSQL_BIN="/usr/bin/mysql --defaults-extra-file=$AUTH_FILE"
$MYSQL_BIN -e "CREATE DATABASE IF NOT EXISTS $DATABASE"
for file in $DIRECTORY/*.sql; do
echo -en "import $file ..."
$MYSQL_BIN -D $DATABASE < $file
if [ $? -eq 0 ]; then
echo -e " done !"
else
echo -e " failed !"
fi
done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment