That is NOT safe. The problem is it allows rsync to use mtime alone to decide that a file is in sync, and that will fail if Postgres writes to a file in the same second that the first rsync reads from it (assuming Postgres writes after rsync reads). You need to add the --checksum flag to rsync (which means it will still have to read everything that's in /var/lib/pgsql).
The checksum flag as you mention is not performant,
Definitely not. :/
If this is a concern, you're much better using the *--modify-window *flag: When comparing two timestamps, rsync treats the timestamps as being equal if they differ by no more than the modify-window value. This is normally 0 (for an exact match), but you may find it useful to set this to a larger value in some situations.
Hence, rsync -va --modify-window=1 would remove your concern about a same second race condition without forcing the sync to read through all the files.
Very interesting and useful!
Isn't this heading in the wrong direction? We need to be more precise than 0 (since 0 is computed off of rounded/truncated time stamps), not less precise than 0.