Harrison would get $200,000 each for 150, 250, 350, 450 and 500 plate appearances as part of the contract announced Saturday,
He hit .250 with eight home runs and 37 RBIs last year. He missed time early in the season with a hand injury and played just 97 games.
Harrison spent his first eight major league seasons with Pittsburgh. He's played second base, third base, shortstop and in the outfield.
Harrison hit a career-high 16 home runs in 2017.