Tu ALTER TABLE
La declaración implica que mysql tendrá que volver a escribir cada fila de la tabla, incluida la nueva columna. Dado que tiene más de 2 millones de filas, definitivamente esperaría que tome una cantidad significativa de tiempo, durante el cual su servidor probablemente estará principalmente vinculado a IO. Por lo general, encontrará que es más eficaz hacer lo siguiente:
CREATE TABLE main_table_new LIKE main_table;
ALTER TABLE main_table_new ADD COLUMN location VARCHAR(256);
INSERT INTO main_table_new SELECT *, NULL FROM main_table;
RENAME TABLE main_table TO main_table_old, main_table_new TO main_table;
DROP TABLE main_table_old;
De esta manera, agrega la columna en la tabla vacía y, básicamente, escribe los datos en esa nueva tabla que está seguro de que nadie más verá sin bloquear tantos recursos.