mysql備份恢復與遷移

2021-10-10 15:58:09 字數 3548 閱讀 4432

1.dba 在資料庫備份恢復方面的職責

1.1 設計備份策略

全備增量

時間自動

1.2 日常備份檢查

備份存在性

備份空間夠用否

1.3 定期恢復演練(測試庫)

一季度 或者 半年

1.4 故障恢復

通過現有備份,能夠將資料庫恢復到故障之前的時間點

1.5 遷移(非技術)

1.停機時間

2.回退方案

備份型別

2.1 熱備

在資料庫正常業務時,備份資料,並且能夠一致性恢復(只能是innodb)

對業務影響非常小

2.2 溫備

鎖表備份,只能查詢不能修改(myisam)

影響到寫入操作

2.3 冷備

關閉資料庫業務,資料庫沒有任何變更的情況下,進行備份資料.

業務停止

3.備份方式及工具介紹

3.1 邏輯備份工具

基於sql語句進行備份

mysqldump(mdp)

mysqlbinlog

3.2 物理備份工具

基於磁碟資料檔案備份

xtrabackup(xbk) :percona 第三方

mysql enterprise backup(meb)

4.2 xtrabackup(xbk)

優點:1.類似於直接cp資料檔案,不需要管邏輯結構,相對來說效能較高

缺點:2.可讀性差

3.壓縮比低,需要更多磁碟空間

建議:100g5.備份策略

5.1 備份方式:

全備:全庫備份,備份所有資料

增量:備份變化的資料

邏輯備份=mysqldump+mysqlbinlog

物理備份=xtrabackup_full+xtrabackup_incr+binlog 或者 xtrabackup_full+binlog

5.2 備份週期:

根據資料量設計備份週期

比如:週日全備,周1-周6增量

其他:通過主從複製備份

6.邏輯備份工具-mysqldump

6.1 客戶端通用命令,和鏈結有關

-u  --user,指定連線的使用者名稱

-p --password,連線資料庫密碼

-s --socket,指定連線mysql的socket檔案位置,預設路徑/tmp/mysql.sock

-h --host,需要匯出的主機資訊

-p --port,連線資料庫埠號

-d 等價於--no-data,不匯出任何資料,只匯出資料庫表結構

-t 等價於--no-create-info,只匯出資料,而不新增create table語句

本地備份連線方式:

mysqldump -uroot -p*** -s /tmp/mysql.sock

遠端備份的連線方式:

mysqldump -uroot -p*** -h *** -p ***

6.2 基本備份引數

-a 全庫備份

例子:實現全庫備份

mkdir -p /data/backup

mysqldump -uroot -p123 -a -s /tmp/mysql.sock >/data/backup/full.sql

-b 備份 單個庫或多個庫資料

例子: 備份oldboy和world資料庫

mysqldump -uroot -p123 -b world oldboy  -s /tmp/mysql.sock >/data/backup/db.sql
庫名 表名 :備份某個庫下的1張或多張表

例子:備份world資料庫下的city和country表

mysqldump -uroot -p123 world city country   -s /tmp/mysql.sock >/data/backup/tab.sql

***注意: 此種方法,只會備份建表+插入語句。所以,恢復前需要把庫建好,而且要use到庫中***

6.3 必加引數(1)

-r 在備份時,同時備份儲存過程和函式,如果沒有會自動忽略

-e 在備份時,同時備份event,如果沒有會自動忽略

–triggers 在備份時,同時備份觸發器,如果沒有會自動忽略

6.4 必加引數(2)

–master-data=2

記錄備份開始時 position號 ,可以作為將來做日誌擷取的起點。

功能:1.記錄備份時的position

2.自動鎖表

3.配合–single-transaction,減少鎖的(innodb引擎)

備份指令碼

mysql資料庫分庫備份

vi mysql_backup_db.sh

#!/bin/sh

user=root

passwd=oldboy123

backup=/tmp/mysql

[ -d $backup]||

mkdir /tmp/mysql -p

for dbname in

`mysql -u$ -p$ -e "show databases;" 2>/dev/null|

sed 1d|

egrep -v "_schema"`do

mysqldump -u$ -p$ -b $dbname 2>/dev/null|

gzip

>

$/$_$(

date +%f)

.sql.gz

done

解決mysql與mysqldump要使用者密碼問題:在/etc/my.cnfu入模組的使用者密碼,授權:

chmod 400 /etc/my.cnf

重啟systemctl restart mysqld

mysql資料庫分庫分表備份

vi mysql_backup_tables.sh

#!/bin/sh

user=root

passwd=oldboy123

backup=/tmp/mysql

[ -d $backup]||

mkdir /tmp/mysql -p

for dbname in

`mysql -u$ -p$ -e "show databases;" 2>/dev/null|

sed 1d|

egrep -v "_schema"`do

for tablename in

`mysql -e "show tables from $dbname;"

|sed 1d`

domysqldump -u$ -p$ --lock-tables=0 $dbname

$tablename 2>/dev/null|

gzip

>

$/$_$_$(

date +%f)

.sql.gz

done

done

mysql 備份與恢復 MySQL 備份與恢復

1 檢視資料庫的資料儲存在哪個目錄下 shiyanlou mysql uroot e show variables like datadir variable name value datadir var lib mysql 2 備份資料的方法 select into outfile 檔名 或者 s...

mysql 備份與恢復 Mysql 備份與恢復

資料檔案一致性處理 在完全備份的情況下,檔案不是時間點一致的,因為進行快照的時間點不一樣。如果嘗 試在未prepare資料的情況下還原資料庫,雖然操作上支援恢復,但是在啟動的時候仍會 進行資料recovery。執行帶 prepare 選項的 mariabackup 命令會使資料檔案進行統一,達到資料...

mysql備份恢復 mysql之備份與恢復

工作中,我們經常會遇到資料庫的備份與恢復場景 目錄1 mysql的備份與恢復 2 mysql的匯入與匯出 1 mysql的備份與恢復 mysql的備份命令是mysqldump,mysql之備份 mysqldump u user h host port p db table.file u 後面接資料庫...