Perhaps the solution is as simple as adding the ALGORITHM = INPLACE
clause to your ALTER TABLE...ADD INDEX
command.
The introduction last year of Online ALTER TABLE in MySQL 5.6 was aimed at minimizing the sort of impacts you report, where such DDL commands can cause delays and timeouts to other processes.
Subject to certain limitations which likely don't affect you, the period of time required for an exclusive lock on the table being changed can now be reduced to two "brief periods at the beginning and end".
An Overview of Online DDL sketches some of the history and mechanics of creating indexes (or dropping them) without the time-consuming table copying used in some previous versions.
The detailed syntax for ALTER TABLE shows where ALGORITHM = INPLACE
falls in the scheme of this command. The above linked Overview has a Summary Grid for Online Status of DDL Operations. Although ALTER TABLE
syntax allows you to specify LOCK=NONE
(or LOCK=SHARED
), by default MySQL 5.6 will attempt to use this mode for an online operation.