Is it normal to have multiple postmeta tables in a WordPress database?
No, each site has a single post/user/term and comment meta table.
A multisite will have a set of those tables for each site in the multisite, plus network/site meta tables.
What could be the reason behind this duplication?
WP wouldn’t duplicate the tables like this. This is probably the work of a plugin, a bug, or a backup system you’re unaware of.
It’s also possible there are multiple copies of the site using the same database but with different prefixes. This might be the case if someone has set up a staging/dev environment, and would explain why the data appears to be the same.
Can I safely delete two of these postmeta tables without affecting my WordPress site functionality or causing data loss?
Unknown, and nobody on the internet can answer this question for you.
- Take a backup
- Delete the tables
- Test everything and see what broke
- if things broke restore backups