The deal was announced Thursday.
The right-hander was 8-12 with a 5.47 ERA in 29 starts this year. His deal originally included a $2.3 million club option for 2010 with a $250,000 buyout, but it became a mutual option at a higher salary because he reached 150 innings this year.
"We're happy to have Brian back in the fold for next season," general manager Ed Wade said in a statement. "He's a solid pitcher whose value doesn't always show up in the numbers. He keeps you in games and gives you a chance to win. And, because of his makeup and work ethic, he's a great example for our young pitchers."
Moehler pitched 154 2/3 innings, one season after going 11-8 with a 4.56 ERA for the Astros.
The 37-year-old Moehler has made 55 starts over the past two seasons.