Mysql
 sql >> Base de données >  >> RDS >> Mysql

Sur RDS, puis-je créer des tables dans un réplica en lecture qui ne sont pas présentes sur le maître ?

Oui c'est possible. Je l'utilise avec succès en utilisant RDS , pour le cas particulier d'un cache local.

Vous devez définir le read_only paramètre sur votre réplica à 0 . J'ai dû redémarrer mon serveur pour que ce paramètre fonctionne.

Cela fonctionnera bien si vous utilisez des noms de table différents, car RDS ne vous permet pas de définir :replicate-ignore-table paramètre.

N'oubliez pas qu'il ne doit y avoir aucune collision de données entre maître <> esclave. S'il y a une instruction qui fonctionne bien sur MASTER , mais échoue sur SLAVE , alors vous venez de casser votre réplication. Cela peut arriver par ex. lorsque vous avez créé une table sur SLAVE d'abord puis après un certain temps, vous avez ajouté cette table à MASTER . Le CREATE l'instruction fonctionnera proprement sur MASTER , mais échoue sur SLAVE , car la table existe déjà.

En supposant que vous deviez être très prudent, en permettant à votre application d'écrire sur SLAVE . Si vous oubliez/ou faites une erreur et que vous commencez à écrire sur le réplica en lecture pour certaines de vos autres données, vous risquez de perdre des données ou de rencontrer des problèmes difficiles à déboguer.