Financial details were not disclosed but Sky Sports said Arsenal would pay 30 million pounds ($36.05 million) up front with two million pounds in add-ons for the 25-year-old defender.
Zinchenko played more than 100 games in all competitions for City and helped them win four Premier League titles, four League Cups and one FA Cup.
Primarily a midfielder when on international duty, Zinchenko was often deployed as a left back by Pep Guardiola at City. But he found playing time hard to come by with Joao Cancelo the preferred option on the left side of defence.
“Alex is a high-quality player who will give us options and versatility. It’s not only about the positions he can play but as well, the versatility he will give us in attack and defence,” Arsenal manager Mikel Arteta said.
Zinchenko will be reunited with Arteta at Arsenal, with the pair having worked together at City when Arteta was the assistant to Guardiola.
“This is a boyhood dream come true because I was a massive fan when I was a kid,” Zinchenko said.
“Since Thierry Henry and young Cesc Fabregas was playing here, I was just enjoying watching those games, that Arsenal. And obviously I started to love this club, so I am so excited and I cannot wait to play for this amazing club.”
Zinchenko becomes Arsenal’s second recruit from City in the close season after Brazil striker Gabriel Jesus, and their fifth signing overall after winger Marquinhos, goalkeeper Matt Turner and attacking midfielder Fabio Vieira.
Arsenal, who finished fifth last season, begin their league campaign on Aug. 5 with a London derby at Crystal Palace.