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;
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;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.