Rumah  >  Artikel  >  pangkalan data  >  Bagaimana untuk memulihkan data MySQL melalui fail log

Bagaimana untuk memulihkan data MySQL melalui fail log

王林
王林ke hadapan
2023-05-26 15:49:063405semak imbas

    1 Cari fail binlog terkini

    Masukkan baris arahan mysql dan laksanakan arahan berikut

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

    Secara amnya nombor terkini ialah lebih besar, yang terbaru di atas Yang satu ialah binlog.000002

    2 Cari kedudukan mula dan akhir data yang ingin kami pulihkan dalam fail log

    Terdapat dua cara untuk menentukan. kedudukan mula dan kedudukan tamat, satu ialah menggunakan masa Sebagai permulaan dan tamat, satu ialah menggunakan kedudukan log sebagai kedudukan mula dan tamat

    2.1.1 Lihat kandungan log melalui perintah mysqlbinlog mysql-bin.000002, dan kemudian cari titik masa pemadaman :

    # 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==
    '/*!*/;

    Kemudian tentukan titik masa sandaran terakhir Jika anda tidak dapat mencari titik masa sandaran terakhir melalui log, anda boleh mengisi titik masa dalam ingatan anda yang lebih kecil daripada sandaran terakhir

    2.2 . Gunakan julat kedudukan

    untuk melihat kedudukan acara log

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

    . Keputusan perlaksanaan adalah seperti berikut:

    binlog.000002 820474948 Pertanyaan 1 820475111 gunakan `loongwind_base ` / *do EXIST`S TABLE /*uF jana. * xid=11790691 */

    Iaitu, kedudukan yang dipadam ialah 820474948

    atau gantikan kata kunci melalui arahan di atas Cari titik kedudukan sandaran terakhir

    3. Pulihkan

    3.1 Pulihkan melalui masa

    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

    di mana dxmh_base_hzsy ialah nama pangkalan data

    3.2 Pulihkan melalui kedudukan

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

    Jika anda benar-benar tidak boleh mencari masa mula atau kedudukan mula, anda tidak perlu menulis --start-datetime atau --start-position Ini akan menggunakan permulaan fail log ini untuk memulihkan hingga akhir Untuk mengelakkan konflik dengan For konflik data, anda perlu menambah -f, iaitu, memaksa untuk melangkau ralat dan meneruskan pelaksanaan.

    Atas ialah kandungan terperinci Bagaimana untuk memulihkan data MySQL melalui fail log. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

    Kenyataan:
    Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam