Actually changing it is a tough one at that age I think.
Here's an idea - potentially wacky but bear with me (ha!) no pun intended - that will make sense if you read on...
Bear Grylls wasn't named 'Bear' - it's a cute nickname that he got as a kid and has stuck.
My DS has a nickname that my DD gave him when he was born, not remotely linked to his actual name, and we quite often call him by that name or refer to him as that name in conversation, and he is fine with it being interchangeable with his real name. It doesn't confuse him, as it's not a real name. Just a word that suits him! He's 6 now, and it still works.
My BIL goes entirely by another name socially (not remotely close to his real name) that he was always called as a kid, but retained his real name for paperwork purposes.
I'm not suggesting you call you son Bear! And it might take a while for it to stick, but if you're worried about actually changing his name over night and any anxiety that might cause, maybe a nickname would slowly take over? By the time he reaches school he would be used to it/introduce himself by it.
Maybe 'evolve' his name. So Kyle becomes Ky, becomes Kite, in a silly cute fun way! Becomes Kit ... Probably not the best example, but you can see where some people who 'go by' a different name sometimes have a path back to their real name in that way.
I'm babbling, sorry. My DD has an unusual name and I had a few wobbles over it, so I empathise.
I know, it's an odd suggestion though, so feel free to ignore me!