Description:
I use /usr/bin/mysqlhotcopy to do backups of several databases.  All of my databases are named with 2 leters (e.g. TZ, SC, DH, etc.).  I just noticed today that my backups have not been generated for over a month!  I managed to track it down to an assumption that mysqlhotcopy makes:
line 266: 
my $raid_dir_regex = '[A-Za-z0-9]{2}';
line 606: 
my @non_raid = map { "'$_'" } grep { ! m:/$raid_dir_regex/[^/]+$: } @$files;
If I understand this correctly, mysqlhotcopy assumes that files that have 2 alphanumberic as a component of their path are "raid".  And, thus it skips them.  It looks like some code that comes after handles @$raid_dirs, but these aren't set for me.  I'm not using RAID.  So, no files get copied for me.
The file copy step of the mysqlhotcopy script seems to have a few potential ways it can end up copying stuff.  But, it my cases, it copies nothing because it thinks all my file are raid, but then has no raid_dirs.
I suspect this change was made between 5.0.21 and 5.0.37.  I think it was when I upgraded for 21 to 37 that my backups stopped working.  I see the perldoc mentions something about RAID support being worked on (recently?).
How to repeat:
# mysqladmin cr XX
# mysql XX <<!   
create table foo (id int);
!
# ls /var/lib/mysql/XX     
db.opt  foo.frm  foo.MYD  foo.MYI
# mysqlhotcopy XX
Using copy suffix '_copy'
Locked 1 tables in 0 seconds.
Flushed tables (`XX`.`foo`) in 0 seconds.
Copying 4 files...
Copying indices for 0 files...
Unlocked tables.
mysqlhotcopy copied 1 tables (4 files) in 0 seconds (0 seconds overall).
# ls /var/lib/mysql/XX_copy 
# It's empty!
Suggested fix:
I'm unclear on why 2 alphanumerics in the db file pathname indicates RAID, so maybe that assumption is the core problem.
Or, perhaps, conditionally setting @non_raid based on whether @$raid_dirs exists would make sense(?): 
my @non_raid;
if (@$raid_dirs) {
    @non_raid = map { "'$_'" } grep { ! m:/$raid_dir_regex/[^/]+$: } @$files;
} else {
    @non_raid = @$files;
}
  
 
 
Description: I use /usr/bin/mysqlhotcopy to do backups of several databases. All of my databases are named with 2 leters (e.g. TZ, SC, DH, etc.). I just noticed today that my backups have not been generated for over a month! I managed to track it down to an assumption that mysqlhotcopy makes: line 266: my $raid_dir_regex = '[A-Za-z0-9]{2}'; line 606: my @non_raid = map { "'$_'" } grep { ! m:/$raid_dir_regex/[^/]+$: } @$files; If I understand this correctly, mysqlhotcopy assumes that files that have 2 alphanumberic as a component of their path are "raid". And, thus it skips them. It looks like some code that comes after handles @$raid_dirs, but these aren't set for me. I'm not using RAID. So, no files get copied for me. The file copy step of the mysqlhotcopy script seems to have a few potential ways it can end up copying stuff. But, it my cases, it copies nothing because it thinks all my file are raid, but then has no raid_dirs. I suspect this change was made between 5.0.21 and 5.0.37. I think it was when I upgraded for 21 to 37 that my backups stopped working. I see the perldoc mentions something about RAID support being worked on (recently?). How to repeat: # mysqladmin cr XX # mysql XX <<! create table foo (id int); ! # ls /var/lib/mysql/XX db.opt foo.frm foo.MYD foo.MYI # mysqlhotcopy XX Using copy suffix '_copy' Locked 1 tables in 0 seconds. Flushed tables (`XX`.`foo`) in 0 seconds. Copying 4 files... Copying indices for 0 files... Unlocked tables. mysqlhotcopy copied 1 tables (4 files) in 0 seconds (0 seconds overall). # ls /var/lib/mysql/XX_copy # It's empty! Suggested fix: I'm unclear on why 2 alphanumerics in the db file pathname indicates RAID, so maybe that assumption is the core problem. Or, perhaps, conditionally setting @non_raid based on whether @$raid_dirs exists would make sense(?): my @non_raid; if (@$raid_dirs) { @non_raid = map { "'$_'" } grep { ! m:/$raid_dir_regex/[^/]+$: } @$files; } else { @non_raid = @$files; }