Migrating between two very different DBMS requires a lot more than just migrating the data. But migration of the data is usually the easiest part.
The way that I have tried, which is free and I can confirm that it works:
- create a mysql schema only dump
- Adjust the SQL using a text editor and a lot of search and replace
- run the converted SQL in Postgres
- Create a plain text dump from MySQL (e.g. CSV, or some other delimited format)
- import the data using PostgreSQL's COPY command
Importing the data might actually be difficult if you relied on MySQL's behaviour to accept illegal data (like the 31st of February)
My guess is, that this is going to be quicker than searching for a tool, evaluating a bunch of them and then trying to understand the one that you chose. But it depends on what kind of "big" you are referring to. If big is several hundreds of tables this might not be feasible. If big only referred to the number of rows, then this is probably the quickest way to do it.
There are some tools out there that can dump a database schema in a DBMS independent (XML) format, like Liquibase, SchemaSpy or WbSchemaReport. With Liquibase probably being the easiest to use. The others will require some manual work writing/extending the XSLT to transform the generated XML.
If you are using triggers and stored procedures in MySQL, I don't believe there will be any automated tool that can translate them without requiring a major manual fixing afterwards - and then the generated procedures would probably not use any advanced features of the target DBMS.