I have several databases located over the world, this all have the same structure, with the same tables and triggers. For clarification purposes:

Site 1: database_1 (with all its tables same as other sites)

Site 2: database_1 (with all its tables same as other sites)

Site 3: database_1 (with all its tables same as other sites)

Now in my main site I would have something like this:

Site main:
database_1_site_1 (with all its tables same as other sites)
database_1_site_2 (with all its tables same as other sites)
database_1_site_3 (with all its tables same as other sites)

Now, obviously, these databases will get bigger and bigger so I don't want to backup everything over and over again as its in GBs and it will take a long time. I would just need to backup what has changed.

How can I set this up?

Would replication require opening ports on the site's side? If so, I cannot open ports on the site's side. Only on the main side.

If the main plays as master then it's ok, just open 3306 at let the slaves connect to it, you do not need to open ports on slaves because they act as clients. Otherwise you could setup a SSH tunnel:

The main site would be the master, yes. On the main site I can open all the ports I want. The any other site I cannot under any way, shape, or form open any ports. At most 1, if that. I do not have access to the other sites and it is not my ownership.

MySQL, not MS SQL Server.

Yeah sorry for that but on the same line it would be done. I am not sure i am newbie.

Like I said I dont want to backup the FULL database each time over and over again.