MySQL數據庫備份和還原


MySQL數據庫備份和還原

  以下方法前景必須是一台用yum源安裝的mysql數據庫沒操作過的嶄新的服務器

  *查看是否啟用二進制日志:show master logs;/show binary logs;

    

  *創建一個日志文件專門存放二進制日志:mkdir /data/logbin

  *修改配置文件:vim /etc/my.cnf

    

  *設置權限所有者和所屬組:chown mysql.mysql /data/logbin/

  *重新啟動mysql服務:systemctl restart mariadb

  *查看文件夾是否生成二進制文件:ll /data/logbin(上面是二進制文件,下面是索引)

    

  *再次查看二進制文件是否啟動:show master logs;(默認大小245)|show master status;(position默認大小)

    

    

  *刷新日志(也是創建日志):flush logs;

    

  *清除指定的二進制日志:purge binary logs to '刪除文件之前的位置';(刪除之前的文件不包括本身)

    

  *刪除所有的二進制文件從新計數:reset master;

    

 

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

冷備份 

  *停止服務:systemctl stop mariadb;

  *查看目錄:ls /var/lib/mysql/(mysql.sock文件不存在了)

  *壓縮數據:tar Jcvf all.bak.tar.xz /var/lib/mysql(打包數據庫)

       tar Jcvf logbin.tar.xz(打包二進制文件)

       /etc/my.cnf(直接拷貝)

  *創建一個目錄存放壓縮數據:mkdir backup

               mv all.bak.tar.xz logbin.tar.xz /backup/

               cp /etc/my.cnf /backup/

  *拷貝到另一台機器上:scp -r /backup/ 192.168.198.17:/data/(本機地址為192.168.198.7)

  *打開ip為192.168.198.17的服務器(該機器未安裝過mysql),查看傳送過來的文件:ls /data

  *yum安裝數據庫:yum install mariadb-server -y

  *查看數據庫:ls /var/lib/mysql(該目錄是空的)

  *覆蓋配置文件:cp /data/backup/my.cnf  /etc/my.cnf -b(-b是備份)

  *查看備份的my.cnf文件:ll /etc/my.cnf(my.cnf~備份文件)

  *創建二進制文件,改變所有者和所屬組:mkdri /data/logbin/  chown mysql.mysql /data/logbin/

  *解壓二進制文件壓縮包:tar -xvf /data/backup/logbin.tar.xz -C /data/logbin

  *進入目錄查看:cd /data/logbin(這是這個目錄不對)mv data/logbin/* .(把數據移出)rm -rf data(刪除data目錄)

  *解壓mysql壓縮包然后移動到/var/lib/mysql中:cd /data/backup/(進入) tar xvf all.bak.tar.xz(解壓在當前目錄) cd var/lib/mysql(進入) mv * /var/lib/mysql(移動全部數據到該目錄)

  *啟動數據庫:systemctl start mariadb;(啟動之后進入mysql查看即可)

----------------------------------------------------------------------------------------------------------------------------------------------------------

mysqldump

 一、mysqldump [options] database [tables](備份一個數據庫此法問題較多不推薦使用) 

  *創建一個備份目錄:mkdir /data/backup/

  *復制整個數據庫成sql語句:mysqldump hellodb > /data/backup/hellodb.sql

  *刪除該數據庫:mysql -e 'drop database hellodb';

  *還原數據庫得先創建該數據庫:create database hello;(mysqldump恢復數據時不具有自動創建數據庫的功能需要手工創建,創建的新數據庫名字可以改變)

  *還原數據:mysql hello < /data/backup/hellodb.sql

  *進入數據庫查看是否還原即可

  二、mysqldump [options] -B DB1[DB2 DB3...](備份部分數據庫)

  *創建一個備份目錄:mkdir /data/backup

  *備份數據庫:mysqldump -B hello[后面可以跟多個數據庫] > /data/backup/hello.sql

  *刪除數據庫:mysql -e 'drop database hello';

  *還原數據:mysql < /data/backup/hello.sql

  *進入數據庫查看即可

 三、mysqldump [options] -A [options](備份全部數據庫)

  *創建一個備份目錄:mkdir /data/backup

  *備份數據庫:mysqldump -A > /data/backup/all.sql

  *刪除數據庫

  *還原數據:mysql < /data/backup/all.sql

  *進入數據庫查看即可

  

  

  四、mysqldump --master-data[=#](二進制日志還原)

  *創建備份存放目錄:mkdir /data/backup/

   *備份為注釋的CHANGE MASTER TO語句:mysqldump -A --master-data=2 > /data/backup/all.sql

   *查看現在的二進制文件:mysql -e 'show master logs';

   *隨便寫一條sql語句即可

   *再次查看二進制文件會發現文件變大:mysql -e 'show master logs';

   *開始刪庫:rm -rf /var/lib/mysql/*(啥也沒了)

   *重啟數據庫服務:systemctl restart mariadb(會重新生成mysql文件)

   *恢復數據庫時禁止用戶訪問,在配置文件修改:vim /etc/my.cnf 添加:skip_networking 不允許網絡連接或者skip_grant_tables跳過授權表只是服務器選項不是變量

   *臨時關閉二進制文件不讓他生效:show variables like 'sql_log_bin'默認是NO,set sql_log_bin=OFF即可

   *再次查看二進制文件:show master logs;發現他多生成出幾個文件

   *我要還原圖中數據即可(只是我自己),可以查看備份的文件得出依據從哪里開始還原

    

   *進入二進制文件目錄備份丟失的數據,如下圖所示

    

  *導入還原數據:進入mysql輸入source /data/backup/all.sql(先還原全部備份)source /data/backup/inc.sql(還原丟失數據)

    *進入數據庫查看即可

  *恢復二進制數據記錄:set sql_log_bin=on;

  五、恢復誤刪的表

  *創建數據備份的目錄:mkdri /data/backup/

  *備份二進制數據:mysqldump -A --master-data=2 > /data/backup/all_`date +%F`.sql

  *隨便寫一條sql語句

  *刪表:drop table students;

  *刷新日志,找出丟失的日志文件

    

  *刷新丟失的二進制文件:mysqlbinlog  --start-position=245 /data/logbin/mysql-bin.000005 > /data/backup/inc.sql

  *打開配置文件vim /data/backup/inc.sql,找到刪除命令注銷

   

  *刪除數據庫:rm -rf /var/bin/mysql/*

  *重啟服務器:systemctl restart mariadb

  *進入數據庫停止二進制服務:set sql_log_bin=off;

  *導入還原數據:進入mysql輸入source /data/backup/all_2019_7_11.sql(先還原全部備份)source /data/backup/inc.sql(還原丟失數據)

  *查看數據:執行一條查詢語句(即可成功)

 

  

   

 

 

   

    

  

 

 

  

    

 

  

 

 

  

  

 

 

 

 

    

 

    

  

    

    

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM