首页 > 数据库 > MySQL > MySQL多线程逻辑备份与恢复
Mydumper是一个多线程的MySQL逻辑备份工具.
# yum install cmake glib2-devel zlib zlib-devel pcre-devel gcc-c++ # wget -c https://launchpad.net/mydumper/0.5/0.5.2/+download/mydumper-0.5.2.tar.gz # tar zxvf mydumper-0.5.2.tar.gz # cd mydumper-0.5.2 # cmake . # make && make install
Mydumper通过使用多线程同时dump多个表或是表的一部分.它有很多选项参数mydumper --help.
以下是其中三个重要参数:
--database:指定要导出备份的数据库名 --threads:指定使用线程的数目.通常可设置为CPU的核数目,当然有时也会设置更多. --rows:指定每个"块"(chunk)的行(记录)数目.具体值的设置取决于数据表的记录数目.
一个备份脚本例子dbdump.sh:
#!/bin/bash
MYDUMPER=`which mydumper`
DIR_BACKUP=/backup
DB_HOST=192.168.1.190
DB_PORT=3306
DB_NAME=sakila
DB_USER=root
DB_PASS=123456
FDAY=`date "+%F"`
DB_DUMP=$DIR_BACKUP/$DB_NAME.$FDAY
$MYDUMPER \
--database=$DB_NAME \
--host=$DB_HOST \
--port=$DB_PORT \
--user=$DB_USER \
--password=$DB_PASS \
--outputdir=$DB_DUMP \
--rows=500000 \
--compress \
--build-empty-files \
--threads=2 \
--compress-protocol \
--kill-long-queries
注:由于Mydumper不处理MySQL的视图,触发器和存储过程,因此使用mydumper去导出schema并不可靠.
实际生产环境中,建议mydumper仅用于导出数据(使用--no-schemas),而通过mysqldump来导出schema.
一个简单的备份schema脚本:schemadump.sh
#!/bin/bash mysqldumpbin="mysqldump -uroot -p123456 -h192.168.1.190 -P3306" DB_NAME="sakila" $mysqldumpbin --single-transaction -d -R --skip-triggers $DB_NAME > /data/vbackup/mydumper/schema.sql $mysqldumpbin --single-transaction -d -t $DB_NAME > /data/vbackup/mydumper/post-schema.sql
上面在安装Mydumper的同时也安装了Myloader.
使用Myloader进行恢复的脚本例子dbload.sh:
#!/bin/bash
MYLOADER=`which myloader`
DB_HOST="192.168.1.190"
DB_PORT=3306
DB_NAME="sakila2"
DB_USER="root"
DB_PASS="123456"
DB_DUMP="/data/backup/sakila.2013-04-29"
$MYLOADER \
--database=$DB_NAME \
--host=$DB_HOST \
--port=$DB_PORT \
--user=$DB_USER \
--password=$DB_PASS \
--directory=$DB_DUMP \
--queries-per-transaction=50000 \
--threads=6 \
--compress-protocol \
--verbose=3
注:
若出现类似错误:”/usr/local/bin/myloader: error while loading shared libraries: libmysqlclient.so.18: cannot open shared object file: No such file or directory”
解决办法:来源:http://www.51itstudy.com/30191.html
# locate libmysqlclient.so.18 /usr/local/mysql/lib/libmysqlclient.so.18 /usr/local/mysql/lib/libmysqlclient.so.18.1.0 # echo "/usr/local/mysql/lib" >> /etc/ld.so.conf # ldconfig
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/14431099/viewspace-1316648/ ,如需转载,请注明出处,否则将追究法律责任。