Hi Vivek,
Terraform's model is that each "resource" block causes one (or more, if "count" is specified) resource to exist in the target system, and so if you make a change that requires a new object to be created it will destroy the old one as you saw, to preserve the idea that there is only one.
If you want your old instance and your new instance to exist together for the long term, the appropriate way to express that is to create a separate "resource" block representing your second instance and leave the original configuration in place, thus telling Terraform that you want both instances to exist. You can then remove either instance from the configuration at a later date when you're ready for it to be destroyed.
If instead you just want both instances to exist briefly while switching from one to the other, e.g. in order to prevent downtime,
the create_before_destroy lifecycle flag can achieve this. When this flag is set, Terraform will still try to ensure that only one instance exists when it completes, but it will retain the old instance until the new instance is created, and only then destroy the old instance.