MySQL (MyISAM) で運用中のテーブルバックアップ
MyISAM だと --single-transaction が使えないため、普通に mysqldump するとロックがかかってしまって、サービスがストールしてしまう。つーわけでこうした。
MAX_ROW_ID=123456 BLOCK_SIZE=1000 mysqldump -u root --no-data db_name tbl_name for i in `perl -le 'print $_ for (0..int($ARGV[0]/$ARGV[1]))' $MAX_ROW_ID $BLOCK_SIZE`; do mysqldump -u root --no-create-info --compact --where="$i*$BLOCK_SIZE<=id and id<($i+1)*$BLOCK_SIZE" db_name tbl_name done
なんか化石みたいな話だけど。まだ使ってますw