Moving many databases can be time consuming.
Here's how I do this when I take on new hosting clients with many databases.
1) At new hosting, service mysql stop
Also rm -rf /var/lib/mysql + mkdir /var/lib/mysql + chown mysql:mysql /var/lib/mysql
2) rsync old hosting to new hosting /var/lib/mysql which pulls data.
3) rsync old to new /etc/mysql/* (Ubuntu/Debian) + ~/.my.cnf (RedHat/CentOS) which pulls root credentials for database access... as root...
4) At this point /var/lib/mysql on new hosting will be mainly correct + still unusable, because data is inconsistent.
5) At old hosting, service mysql stop
6) rsync old hosting to old hosting /var/lib/mysql to new hosting. Since mysql is stopped on both servers, data will be consistent.
7) Then on new hosting, service start mysql, which may take a while if there's a large version mismatch between mysql on both old + new hosting.
Note: Always use MariaDB, not MySQL, because MySQL's code quality has become so bad.
Code quality is so bad that Debian/Ubuntu/Derivatives now install MariaDB when for MySQL packaging targets.
I use this same process when moving all client sites between LXD containers on different machines, when a machine requires a major OS upgrade... so I've done this process 100s of times now.
As long as you use MariaDB as your target (new hosting), this process works well. If you really do use MySQL, your mileage will likely vary (process will likely fail if the version mismatch covers many major versions).