Maison  >  Article  >  base de données  >  Comment restaurer les données MySQL via des fichiers journaux

Comment restaurer les données MySQL via des fichiers journaux

王林
王林avant
2023-05-26 15:49:063403parcourir

    1. Recherchez le dernier fichier binlog

    Entrez la ligne de commande mysql et exécutez la commande suivante

    mysql> show master status;
    +------------------+-----------+
    | Log_name         | File_size |
    +------------------+-----------+
    | binlog.000001 |       967 |
    | binlog.000002 |       965 |
    +------------------+-----------+

    Généralement, le dernier numéro est plus grand, le dernier ci-dessus est binlog.000002

    2. souhaitez récupérer dans le fichier journal Les positions de début et de fin

    Il existe deux façons de déterminer la position de début et la position de fin, l'une consiste à utiliser l'heure comme début et fin, l'autre consiste à utiliser la position du journal comme la position de début et de fin

    2.1, utilisez la plage horaire

    via mysqlbinlog Utilisez la commande mysql-bin.000002 pour afficher le contenu du journal, puis trouvez le point temporel de suppression :

    # at 131708213
    #210610 11:27:01 server id 1  end_log_pos 131708311 CRC32 0x0fc755e2     Table_map: `loongwind_base`.`xxxx` mapped to number 139
    # at 131708311
    #210610 11:27:01 server id 1  end_log_pos 131708411 CRC32 0xa91616b9     Write_rows: table id 139 flags: STMT_END_F
    
    BINLOG '
    BffBYBMBAAAAYgAAAJe12QcAAIsAAAAAAAEADmR4bWhfYmFzZV9oenN5ABpkeF9zeV9hc3NldHNf
    ZXh0ZW5kc19jb3B5MQAICAgIDwgSCBIEAAgAAPgBAQACA/z/AOJVxw8=
    BffBYB4BAAAAZAAAAPu12QcAAIsAAAAAAAMAAgAI/wDRAwAAm1M8AUIAAADRUjwBCgAAAFYL5gAM
    AOWFrOWuieacuuWFs7EBAADbwZkAmama6E+xAQAA28GZAJmpmuhPuRYWqQ==
    '/*!*/;

    Déterminez ensuite le point temporel du dernière sauvegarde. Si vous ne trouvez pas le moment de la dernière sauvegarde dans le journal, vous pouvez remplir un moment dont vous savez qu'il est plus petit que le précédent dans votre mémoire. Le moment de la sauvegarde

    2.2, utilisez le. plage de positions

    Utilisez la commande suivante pour afficher la position de l'événement de journal

    mysql -uroot -p'password' -e "show binlog events in 'binlog.000002'"|grep -i 'DROP TABLE'

    Les résultats de l'exécution sont les suivants :

    binlog.000002 820474948 Requête 1 820475111 utiliser `loongwind_ base`; * généré par le serveur */ /* xid=11790691 */

    C'est-à-dire que la position supprimée est 820474948

    ou via la commande ci-dessus, remplacez le mot-clé pour trouver le point de position de la dernière sauvegarde

    3.

    3.1 Restauration par heure

    mysqlbinlog --no-defaults --database=loongwind_base --start-datetime="2021-06-07 09:00:00" --stop-datetime="2021-06-10 16:37:58" binlog.000005 | mysql -uroot -p'password' -s -N -f -D loongwind_base

    où dxmh_base_hzsy est le nom de la base de données

    3.2 Restauration par position

    mysqlbinlog  --start-position=1178  --stop-position=2751 -d dxmh-sy binlog.000002|mysql -uroot -p'password' -s -N -f -D loongwind_base
    loongwind_base 为数据库名称

    Si vous ne trouvez vraiment pas l'heure de début ou la position de départ, vous n'avez pas besoin d'écrire --start-datetime ou --start-position, utilisez donc ceci. Le fichier journal est restauré du début à la fin. Afin d'éviter les conflits avec les données existantes, vous devez ajouter -f, c'est-à-dire forcer l'ignorance des erreurs et la poursuite de l'exécution.

    Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

    Déclaration:
    Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer