Mydumper使用
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