Вроде все прошло хорошо. Может, кому понадобится...
Как делать НЕ надо:
Изначально я залил новый движок 4,1, от старого форума добавил только /upload. Запустил апгрейд, и на шаге "обновить кодировку" застрял. База слишком большая, конвертация висла. Ничего лучше не придумал - стал вручную в phpmyadmin править таблицы. В общем, удалось протолкнуть инсталлятор. Форум встал, но криво: невозможно было отредактировать пользователей + другие мелкие глюки.
После нескольких дней мытарств, установил по такому алгоритму:
Перед дампом старой базы удалил все хуки, сторонние приложения, темы;
Обновил весь кеш;
Создал новую базу в utf8mb4;
Туда залил таблицы и обновил через консоль скриптом от Рустика:
<?php
// Database info
include("conf_global.php");
$dbhost = $INFO['sql_host'];
$dbuser = $INFO['sql_user'];
$dbpass = $INFO['sql_pass'];
$dbname = $INFO['sql_database'];
//---------------
header('Content-type: text/plain');
$dbconn = mysql_connect($dbhost, $dbuser, $dbpass) or die( mysql_error() );
$db = mysql_select_db($dbname) or die( mysql_error() );
$sql = "ALTER DATABASE `".$dbname."` DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci";
$result = mysql_query($sql) or die( mysql_error() );
print "Database changed to UTF-8.\n";
$sql = 'SHOW TABLES';
$result = mysql_query($sql) or die( mysql_error() );
while ( $row = mysql_fetch_row($result) )
{
$table = mysql_real_escape_string($row[0]);
$sql = "ALTER TABLE $table DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci, CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci";
mysql_query($sql) or die( mysql_error() );
print "$table changed to UTF-8.\n";
}
mysql_close($dbconn);
?>
(но исправил с utf8_general_ci на utf8_unicode_ci). Именно этим скриптом, т.к. после запуска из консоли /admin/convertutf8/cli.php вместо русских букв появились "?"
... и запустил апгрейд.
Все получилось!