As a general rule, 301 redirects are considered slightly better than rel=canonical.
Google may only crawl a certain number of your pages each day, and so if there are less pages to discover then it is likely that your entire site will get indexed and updated quicker with 301s. With canonicals there are more pages to crawl and discover.
Rel Canonical can be superior to a 301 redirect when you actually want to keep the URL, or there are complications with the 301 because of a server/system issue. If you want users to actually see Bombay in the URL instead of Mumbai, then it is fine to use rel=canonical. If on the other hand, you don't need them to see Bombay in the URL, then the 301 is likely preferred.
The only major downside to 301 redirects is that they are actually quite permanent. And so if you ever want to use the redirected URL in the future, this may not be possible as undoing 301 redirects with Googlebot is close to impossible due to how permanent they are.
You may want to read this article from MOZ, an SEO leader in the space: