The DB character set *and* collation must match for not only tables, but for columns in those tables.
In moodlecode/admin/cli/ there are scripts that will help.
mysql_collation.php mysql_compressed_rows.php mysql_engine.php
They all will present a help screen that shows options/switches to command if executing: php nameofscript.php
Think I'd start with php mysql_compressed_rows.php -i and go from there.
Not sure the vr 3.1 environment check checks for above or not ... don't run a 3.1.x any more.
I see /home/customerlogin/public_html/ in paths ... are you on shared host?
Do you know the user credentials for the superuser of your DB server? If so, use those in copied DB info lines of config.php file as a test to see if the user being used normally has enough priv's to do things it needs.
Large courses ... defined how? Size of backup or in content ... like a lot of quizzes.
Large courses either was could require tweaks upwards in php setup ... more memory to consume, max memory to use, as well as time to run.
Here again, CLI is your friend ... in code/admin/cli/ there is also a backup.php script ... execute with no parameters and it will show help.
For a large course (size) think I'd opt to set destination directory outside of moodledata and execute the script as root. The script, BTW, takes apache out of the loop ... just php and your DB server talking is required.