For example, I have a site ranked #1 for keyword "good dog food". Keyword "good dog food" have 8,000 searches per month, and now I discovered that keyword "great cat snack" have ~20,000 searches per month, with very low competitor strength. Question is: should I change the main keyword of my site to "great cat snack", and make "good dog food" a secondary keyword, or should I just get a new domain for "great cat snack"? I'd like to use the old domain as it is 7 years old now, and "great cat snack" can sell along with "good dog food" - but I don't know whether it's wise to change the main keyword completely? What do you think?
You mean I can create "www.mysite.com/great-cat-snack.php" and "www.mysite.com/good-dog-food.php" to get both keyword or something like that?
I'd go for both. I don't think it's a good idea to give up good dog food for the potential of getting great cat snack. Especially since it'll take a little while to rank for great cat snack. What I suggest doing is creating a separate page for good dog food and promoting that like you'd promote a separate domain. It should work pretty well.
Just create a page optimized for "great cat snack", build some links to it, and you'll have the best of both worlds. If you leverage the SEO profile of your current site it will be much easier as well instead of starting over.
If your existing site is doing well enough and getting substantial traffic, then I would not recommend changing anything. Rather you can add a section on cats on your existing website or go for a new domain altogether and start afresh. Any which ways you'll have to work on the 'cat' part either ways, so why not leave the 'dog' untouched (if performing very well) and concentrate only on the 'cat'. Best...