Skip to content

Instantly share code, notes, and snippets.

@infowolfe
Created November 1, 2014 23:32
Show Gist options
  • Save infowolfe/8a74d00809bccf6a19ca to your computer and use it in GitHub Desktop.
Save infowolfe/8a74d00809bccf6a19ca to your computer and use it in GitHub Desktop.
#!/bin/bash
mysqladmin shutdown &
sleep 5 && pkill -9 -f mysql
pct=/usr/src/percona-data-recovery-tool-for-innodb-0.5
mysql=/var/lib/mysql
from=/btrfs/srvfs/vl_mysql_before
#e=echo
_prep() {
$e rsync -avpP ${from}/ ${mysql}/
$e find ${mysql} -iname "ib*" -delete
for i in $(find ${from}/ -iname "*.ibd"); do
file=${mysql}/$(basename $(dirname ${i}))/$(basename ${i} .ibd)
$e rm ${file}.ibd ${file}.frm
done
pushd ${mysql}
pwd
$e sed -i -e 's~^innodb_force_recovery.*$~innodb_force_recovery = 0~' /etc/mysql/my.cnf
$e sudo -u mysql mysqld &
popd
$e sleep 10
$e mysql -uroot < /root/lol_schema.sql && \
$e mysqladmin shutdown &
$e sleep 10 && $e pkill mysqld
}
_ibdconnect() {
for i in $(find ${pct}/vl_mysql/ -iname "*.ibd") ; do
db=$(basename $(dirname ${i}))
table=$(basename ${i} .ibd)
# echo ibdconnect -o ${mysql}/ibdata1 -f ${i} -d ${db} -t ${table}
echo ${db} ${table}
$e $pct/ibdconnect -o ${mysql}/ibdata1 -f ${i} -d ${db} -t ${table}
$e cp -a ${from}/${db}/${table}.* ${mysql}/${db}/
done && \
\
$e $pct/innochecksum -f ${mysql}/ibdata1 && \
$e $pct/innochecksum -f ${mysql}/ibdata1 && \
$e $pct/innochecksum -f ${mysql}/ibdata1
}
_backup() {
pushd /var/lib/mysql
$e sed -i -e 's~^innodb_force_recovery.*$~innodb_force_recovery = 6~' /etc/mysql/my.cnf
$e sudo -u mysql mysqld &
$e sleep 5
# for i in $(find ${pct}/vl_mysql/ -mindepth 1 -type d) ; do
# db=$(basename ${i})
# tables=$(echo "SELECT group_concat(TABLE_NAME SEPARATOR ' ') AS \"${db}:\" FROM information_schema.TABLES WHERE ENGINE = \"InnoDB\" AND TABLE_SCHEMA = \"${db}\";" | mysql | tail -n1)
# $e mysqldump --add-drop-table ${db} ${tables} > /root/all_db_are_belong_to_me/${db}.sql
# done
mysqldump -A | pigz -c > /root/all_db_are_belong_to_me.sql.gz
mysqldump lolsnaps_main | pigz -1 -c > /root/lolsnaps_main.sqlz
$e mysqladmin shutdown
$e sed -i -e 's~^innodb_force_recovery.*$~innodb_force_recovery = 0~' /etc/mysql/my.cnf
}
_prep
_ibdconnect
_backup
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment