日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql 数据库还原后没有_MySQL数据库的备份还原至最新状态

發布時間:2025/3/19 数据库 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql 数据库还原后没有_MySQL数据库的备份还原至最新状态 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

模擬數據庫在某次備份后但未達到下次備份時間中,被意外刪除的數據

此處恢復hello數據庫和里面的students表

使用工具:均為mariadb-server自帶

1 mysqldump

2 mysqlbinlog

前提條件:

二進制日志文件必須開啟

MariaDB [(none)]> show master logs;

+------------------+-----------+

| Log_name | File_size |

+------------------+-----------+

| mysql-bin.000001 | 7674 |

| mysql-bin.000002 | 264 |

| mysql-bin.000003 | 15864234 |

| mysql-bin.000004 | 30379 |

| mysql-bin.000005 | 1038814 |

| mysql-bin.000006 | 264 |

| mysql-bin.000007 | 245 |

+------------------+-----------+

但因為我服務器上有過二進制日志文件,清除掉這些二進制日志

1 MariaDB [hello]> reset master;

MariaDB [hello]> show master logs;+------------------+-----------+

| Log_name | File_size |

+------------------+-----------+

| mysql-bin.000001 | 245 |

+------------------+-----------+

現在就是個干凈的日志文件

1 cat /etc/my.cnf2 [mysqld]

3 log_bin=/data/logbin/mysql-bin

這里指定了二進制日志文件的位置,實際生產中,建議二進制日志文件放在其他盤上,實在沒有,最好也在其他分區上

sql_log_bin=ON|OFF:是否記錄二進制日志,默認ON

log_bin=/PATH/BIN_LOG_FILE:指定文件位置;默認OFF,表示不啟用二進制日志功能,上述兩項都開啟才可

注釋:MariaDB [hello]>這個表示在數據庫中執行的,沒有這個就表示在shell命令中執行的

一、開始全局備份重定向到 /data/下,備份文件后的文件名為all.sql

mysqldump -A --master-data=2 > /data/all.sql

#?注釋:此處-A表示全局備份,--master-data=后面有兩個選項,分別是1和2,1可以用來配合主從復制,此處我沒有配置主從服務器就選擇2就可以

1和2區別1是命令,而2只是個注釋

1:

2:

mysql -e 'show master logs'

+------------------+-----------+

| Log_name | File_size |

+------------------+-----------+

| mysql-bin.000001 | 245 |

+------------------+-----------+

#?注釋:此處為了看的清除,我清除了之前的二進制日志文件,現在的位置是245(初始的二進制日志文件就是245)

二、切換到hello表,查看表中的數據,以做后續參考

MariaDB [mysql]> usehello

MariaDB[hello]> select * fromstudents;+-------+---------------+-----+--------+---------+-----------+

| StuID | Name | Age | Gender | ClassID | TeacherID |

+-------+---------------+-----+--------+---------+-----------+

| 1 | Shi Zhongyu | 22 | M | 2 | 3 |

| 2 | Shi Potian | 22 | M | 1 | 7 |

| 3 | Xie Yanke | 53 | M | 2 | 16 |

| 4 | Ding Dian | 32 | M | 4 | 4 |

| 5 | Yu Yutong | 26 | M | 3 | 1 |

| 6 | Shi Qing | 46 | M | 5 | NULL |

| 7 | Xi Ren | 19 | F | 3 | NULL |

| 8 | Lin Daiyu | 17 | F | 7 | NULL |

| 9 | Ren Yingying | 20 | F | 6 | NULL |

| 10 | Yue Lingshan | 19 | F | 3 | NULL |

| 11 | Yuan Chengzhi | 23 | M | 6 | NULL |

| 12 | Wen Qingqing | 19 | F | 1 | NULL |

| 13 | Tian Boguang | 33 | M | 2 | NULL |

| 14 | Lu Wushuang | 17 | F | 3 | NULL |

| 15 | Duan Yu | 19 | M | 4 | NULL |

| 16 | Xu Zhu | 21 | M | 1 | NULL |

| 17 | Lin Chong | 25 | M | 4 | NULL |

| 18 | Hua Rong | 23 | M | 7 | NULL |

| 19 | Xue Baochai | 18 | F | 6 | NULL |

| 20 | Diao Chan | 19 | F | 7 | NULL |

| 21 | Huang Yueying | 22 | F | 6 | NULL |

| 22 | Xiao Qiao | 20 | F | 1 | NULL |

| 23 | Ma Chao | 23 | M | 4 | NULL |

| 24 | Xu Xian | 27 | M | NULL | NULL |

| 25 | Sun Dasheng | 100 | M | NULL | NULL |

| 26 | a | 20 | F | NULL | NULL |

| 27 | b | 20 | F | NULL | NULL |

+-------+---------------+-----+--------+---------+-----------+

三、對數據進行修改

MariaDB [hello]> insert students (name,age)values('測試1',100);

MariaDB [hello]>insert students (name,age)values('測試2',101);

MariaDB [hello]>insert students (name,age)values('測試3',102);

MariaDB [hello]> update students set classid=111 where stuid=27

備份后修改前:

修改后:

四、開始模擬數據庫被異常刪除了(實驗環境這樣,實際生產中千萬不要用這種命令)

rm -rf /var/lib/mysql/*

五、先禁止用戶通過網絡訪問,只能使用本地的套接字來連接

vim /etc/my.cnf

skip-networking

六、開始重啟服務

systemctl restart mariadb

注釋:重新啟動數據庫,會生成嶄新的數據庫文件,但里面是沒有數據的

七、臨時關閉二進制日志文件

MariaDB [(none)]> set sql_log_bin=off;

注釋:還原數據的生成二進制日志文件沒有什么用,其他用戶此時也不能訪問,此處暫時不用記錄二進制日志文件

八、查看之前的二進制日志文件更新到哪里了

MariaDB [(none)]>show master logs;+------------------+-----------+

| Log_name | File_size |

+------------------+-----------+

| mysql-bin.000001 | 1175 |

| mysql-bin.000002 | 30379 |

| mysql-bin.000003 | 1038814 |

| mysql-bin.000004 | 245 |

+------------------+-----------+

注釋:此處1,2,3是上次備份之后生成的,需要導出的,而這個4是剛剛啟動時生成的(每次重啟服務之后會重新生成二進制日志)沒有用,可以不用導出

九、其他窗口打開,導出二進制日志文件

mysqlbinlog mysql-bin.000001 > /data/inc.sql

mysqlbinlog mysql-bin.000002 >> /data/inc.sql

mysqlbinlog mysql-bin.000003 >> /data/inc.sql

注釋:此處特地分開寫,后面兩個是追加,mysqlbinlog是導出二進制日志文件的命令

十、回到之前的窗口

把之前備份的文件導入進數據庫,還有之前生成的二進制日志文件,也導入進數據庫

MariaDB [test]> source /data/all.sql;

MariaDB [test]> source/data/inc.sql

十一、此時查看上次備份后,新增和修改的數據是否恢復成功了。

MariaDB [hello]>? show databases;+--------------------+

| Database |

+--------------------+

| information_schema |

| hello |

| mysql |

| performance_schema |

| test |

+--------------------+

注釋:此時hello數據庫已經恢復成功了

MariaDB [hello]>show tables;+-----------------+

| Tables_in_hello |

+-----------------+

| classes |

| coc |

| courses |

| scores |

| students |

| teachers |

| testlog |

| toc |

+-----------------+

注釋:此時可以查看到之前的students表恢復成功了

注釋:?通過?select * from students;可以查看到之前修改過的數據庫文件都恢復成功了。

至此恢復完成

總結

以上是生活随笔為你收集整理的mysql 数据库还原后没有_MySQL数据库的备份还原至最新状态的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。