If pg_terminate_backend(pid) fails to kill the backend and you really need to reset the database state to make it continue processing requests, then you have yet another option: sending SIGKILL to the offending backend.
This can be done only from the command line as the root or the postgres system user, and on the same host the database is running on, by executing the following code:
kill -9 <backend_pid>
This command kills that backend immediately, without giving it a chance to clean up. Consequently, the postmaster is forced to kill all the other backends as well and restart the whole cluster.
Therefore, it actually does not matter which of the PostgreSQL backends you kill.
You must be extremely careful if you have set the synchronous_commit parameter to off. You may end up losing some supposedly committed transactions if you use kill -9 on a backend.
Thus, kill -9 is the last resort, but only if nothing else helps, and not on a regular basis.