A webapp I am speccing out is going to need to be horizontally scalable, and will require a pair of MySQL servers from the start (perhaps rising to more than one soon after launch).
As an auto-increment primary key is not suitable, I was wondering what alternatives people use.

Something with the date in makes the most sense, but if you go down to the millisecond level and assume a three-digit server ID it's a very big number:

`sssyymmddhhmmssmicros` or `001110510143622123456` for right now - plus you could perhaps do with another number at the beginning to simplify the leading zeros (datacentre ID, perhaps).

Epoch time shortens it, but only a little.

What else is there?