J'ai configuré un nouveau serveur MySQL sur Amazon EC2 et j'ai décidé de stocker mes données sur une baie EBS RAID0. Jusqu'à présent, tout va bien, et j'ai testé la prise d'instantanés de ces appareils avec ec2-consistent-snapshot, c'est parfait.
Maintenant, comment reconstruisez-vous rapidement la baie sur une nouvelle instance, à partir de ces instantanés?
Lorsque vous utilisez un instantané cohérent ec2 pour créer un instantané de plusieurs volumes, vous n'avez aucun moyen de savoir quel volume a été utilisé pour chaque périphérique du RAID. Je me trompe peut-être complètement, mais comme vous répartissez les données sur les volumes, il va de soi que vous devez placer chaque nouveau volume au même emplacement sur le RAID que le volume à partir duquel l'instantané a été créé.
Un exemple:
- 3 volumes de 200 Go dans une configuration RAID0.
- vol-1 est / dev / sdh périphérique 0 dans le RAID
- vol-2 est / dev / sdh1 périphérique 1 dans le RAID
- vol-3 est / dev / sdh2 périphérique 2 dans le RAID
vous créez un instantané EC2 avec: ec2-consistent-snapshot <options> vol-1 vol-2 vol-3
.
Vous avez maintenant 3 instantanés, et la seule façon de retracer de quel périphérique il s'agit est de regarder l'ID de volume source, puis de voir sur quel périphérique l'ID de volume source est monté comme sur l'instance, puis de vérifier les détails du RAID configuration sur l'instance du volume source.
C'est évidemment incroyablement manuel ... et pas rapide (ce qui rend évidemment difficile de faire apparaître une nouvelle instance mysql rapidement si l'autre échoue. Pour ne pas mentionner, vous devrez enregistrer les positions des périphériques sur le RAID à l'époque d'instantané, car si l'instance de volume source plante, vous n'avez aucun moyen d'accéder à la configuration RAID).
Donc, en conclusion:
- Suis-je en train de manquer quelque chose avec la façon dont le snapshot cohérent ec2 et une matrice logicielle RAID0 fonctionnent?
- Sinon, existe-t-il des solutions / meilleures pratiques connues concernant le problème de ne pas savoir à quel périphérique / position dans la matrice RAID appartient un instantané?
J'espère que c'était clair et merci pour votre aide!
la source
J'exécute une configuration similaire ( RAID0 sur 4 volumes EBS ) et, par conséquent, avait les mêmes préoccupations pour reconstituer la matrice RAID à partir d'instantanés créés avec ec2-consistent-snapshot .
Heureusement, chaque périphérique dans une matrice RAID contient des métadonnées (dans un superbloc) qui enregistrent sa position dans la matrice, l'UUID de la matrice et le niveau de la matrice (par exemple RAID0). Pour interroger ce superbloc sur n'importe quel périphérique, exécutez la commande suivante (la ligne correspondant à '^ this' décrit le périphérique interrogé):
Si vous effectuez la même requête sur un périphérique qui ne fait pas partie d'une baie, vous obtenez:
Ce qui prouve que cette commande repose vraiment sur des informations stockées sur l'appareil lui-même et non sur un fichier de configuration.
On peut également examiner les périphériques d'une matrice RAID à partir du périphérique RAID, en récupérant des informations similaires:
J'utilise le dernier avec ec2-decrire-volumes pour construire la liste des volumes pour ec2-consistent-snaptshot ( -n et --debug permettent de tester cette commande sans créer de snapshots). La commande suivante suppose que le répertoire / mysql est le point de montage du volume et que la région AWS est us-west-1 :
la source
Je sais que cela ne répond pas à votre question, mais je fais quelque chose de similaire, mais avec l'outil de base ec2-create-snapshot d'Amazon et un script cron. Ce n'est pas aussi rapide qu'un snapshot cohérent avec ec2, mais j'obtiens le contrôle supplémentaire dont j'ai besoin: fsync, verrouiller les écritures et, surtout, nommer les snapshots de manière appropriée afin qu'ils puissent être reconstitués dans le bon ordre.
la source