I had the same, the table was missing, I added it using
CREATE TABLE `civicrm_status_pref` (
`id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Unique Status Preference ID',
`domain_id` int unsigned NOT NULL COMMENT 'Which Domain is this Status Preference for',
So @demerit gave me the clue here. Several log_civicrm_xxx tables were corrupted before the upgrade (i.e. in my existing database), and log_civicrm_msg_template had some kind of corruption that caused it to disconnect the entire DB when mySQL tried to access it - even just CHECK TABLE flaked out, let alone OPTIMIZE.
Since I don't really care about the ...
Try turning logging off (administer - system settings - misc) and then doing the upgrade and then turning logging back on again. It seems like the log table definitions/triggers are getting out of sync for some reason.