La próxima vez, use una sola instrucción "alterar tabla" para actualizar la clave principal.
alter table xx drop primary key, add primary key(k1, k2, k3);
Para arreglar las cosas:
create table fixit (user_2, user_1, type, timestamp, n, primary key( user_2, user_1, type) );
lock table fixit write, user_interactions u write, user_interactions write;
insert into fixit
select user_2, user_1, type, max(timestamp), count(*) n from user_interactions u
group by user_2, user_1, type
having n > 1;
delete u from user_interactions u, fixit
where fixit.user_2 = u.user_2
and fixit.user_1 = u.user_1
and fixit.type = u.type
and fixit.timestamp != u.timestamp;
alter table user_interactions add primary key (user_2, user_1, type );
unlock tables;
El bloqueo debería evitar que entren más actualizaciones mientras haces esto. El tiempo que tarde esto obviamente depende del tamaño de tu mesa.
El principal problema es si tienes algunos duplicados con la misma marca de tiempo.