mysql備份詳解

【備份】
1、冷備份【好處是:穩定,壞處是:得停庫影響收入】
2、熱備份

一、冷備份

備份全部數據
    service mysql stop

    cp -frp /app/mysql/data/* /備份文件存放目錄 【全部備份,直接把數據目錄備份走,cat /etc/my.cnf |grep datadir 存放數據的目錄】

部分備份
    (1)
        cp myisam引擎類型(拷貝走此目錄就可以,myisam引擎的表不會寫表空間,不會寫事務日誌)
    (2)
      cd /app/mysql/data/
        cp -fr ibdata1 /備份文件存放目錄  【ibdata1是所有Innodb表公用的系統表空間,無法單獨備份,只能全備份】
        cp -fr 庫目錄 /備份文件存放目錄  
        cp -rf ib_logfile1 ib_logfile0 /備份文件存放目錄 【事務日誌保證undo和redo,Mysql啓動時會檢查,如果找不到,mysql認爲非法的】

數據還原
(1)把數據拷貝回原目錄
(2)chown -R mysql.mysql /app/mysql/data/  【千萬注意】

二、熱備份(服務開啓時備份)

(一) mysql自帶的

【備份操作,備份的是sql語句】
  create database bak;
  use bak;
  create table a1(a int);
  insert into a1 values(1);
 
  service mysql status【熱備份要求,mysql服務必須開啓】
 
  mysqldump -u 用戶 -p密碼 庫名  > backup文件
 
  mysqldump -u root -pmysql bak 【直接打印到屏幕】
 
  mysqldump -u root -pmysql bak >/tmp/bak.sql 【輸出定位到/tmp/bak.sql文件中】
 
  drop database bak;
 
【恢復操作】
  create database bak;【咱們備份的文件中,沒有創建庫的語句,所以要手工創建】    
 
 mysql -u root -pmysql bak < /tmp/bak.sql

mysql> use bak;
mysql> show tables;
mysql> select * from a1;

(二) 第三方工具【可以多線程,默認4個線程,比自帶的備份工具要快】

在tmp目錄下安裝mydumper

export PATH=/usr/local/cmake/bin:$PATH

1、解決依賴包
yum install gcc gcc-c++ glib2-devel mysql-devel zlib-devel pcre-devel -y


2、安裝

cd /tmp
tar fvxz mydumper-0.2.3.tar.gz
cd mydumper-0.2.3
cmake .
make&&make install

3、操作


語法:mydumper -B 數據庫 -u 用戶名 -p 密碼 -h 主機IP -o 備份文件存放的目錄  -t 線程數【看cpu配置】 -r  分割的份數【表比較大,把表分割了】

   備份操作
   mkdir -pv /tmp/sqlbak   -------把備份的數據放在此目錄
   mydumper -B bak -u root -p mysql  -o /tmp/sqlbak
   mysql -u root -pmysql
   mysql> use bak;
   mysql> drop table a1;


語法:myloader -u 用戶名 -p 密碼 -d 備份目錄  -B 庫名
   
    恢復操作
    myloader -u root -p mysql -d /tmp/sqlbak  -B bak
    mysql -u root -pmysql
    mysql> use bak;
    mysql> show tables;
    mysql> select * from a1;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章