Il y a quelques options. L'une consiste à configurer la réplication au sein de MySQL, qui copiera automatiquement les données entre les serveurs et les maintiendra automatiquement synchronisées, avec une granularité de quelques secondes au fur et à mesure que les données circulent. L'inconvénient est que vous devez exposer au moins le serveur maître au réseau pour autoriser les connexions TCP.
En externe, vous pouvez faire des décharges mysql régulières sur le serveur A, copier sur le serveur B, charger dans mysql et c'est parti. Cela aura une granularité de n'importe quel intervalle de temps dans lequel vous exécutez la séquence de vidage/copie/chargement. L'inconvénient est que mysqldump verrouille les tables pendant qu'il fonctionne. Si vous avez une grande base de données, vous serez bloqué sur les tables du serveur A pendant la progression du vidage et bloqué sur le serveur B lors du chargement des données. Et charger un dump est beaucoup plus lent que de faire le dump en premier lieu, car mysql effectue toutes sortes de tâches internes (mises à jour de clés, mises à jour de métadonnées de table, etc.) pendant le chargement.
Pour la troisième option, vous pouvez écrire un synchroniseur qui compare les lignes entre les deux bases de données et effectue les mises à jour si nécessaire. Cependant, vous transférez ensuite le contenu d'un serveur à l'autre et effectuez des opérations ligne par ligne. De plus, il faut également gérer toutes les mises à jour de relation clé étrangère/enfant dépendantes, et cela se compliquera rapidement. À ce stade, vous feriez peut-être mieux d'utiliser l'option mysqldump à la place.
Bien sûr, vous devriez mettre à niveau votre MySQL vers quelque chose de plus moderne. v4.x est très obsolète. Vous devriez utiliser au moins une version 5.0, de préférence une version 5.1 à la place.