分庫備份 分庫恢復

2021-07-04 10:09:35 字數 1463 閱讀 9168

由於一台mysql資料庫伺服器上有多個資料庫,所以在考慮備份的時候也將多個庫分開進行,以便在單個庫出現問題時恢復。

一、分庫備份

1、可以乙個庫對應一條備份語句,如:

mysqldump -s /home/mysql/run/mysql.socket -uroot -p123456 --single-transaction --master-data=2 -f -b db1 |gzip > /home/mysql/bakup/db1.sql.gz

mysqldump -s /home/mysql/run/mysql.socket -uroot -p123456 --single-transaction --master-data=2 -f -b db2 |gzip > /home/mysql/bakup/db2.sql.gz

......

2、一條語句分開

for dbname in `mysql -uroot -p123456  -e "show databases;"|grep -evi database|infor|perfor"`

domysqldump -s /home/mysql/run/mysql.socket -uroot -p123456 --single-transaction --master-data=2 -f -b $dbname |gzip > /home/mysql/bakup/$dbname.sql.gz

done

二、分庫恢復

1、所有庫恢復時

gzip -d /home/mysql/bakup/*.gz

for dbname in `ls /homoe/mysql/bakup |sed 's#.sql##g'`

domysql -uroot -p123456 < /home/mysql/bakup/$dbname.sql

done

2、從備份恢復指定庫時,指定相應的備份檔案即可

gzip -d /home/mysql/bakup/db1.sql.gz

mysql -uroot -p123456 < /home/mysql/bakup/db1.sql

但是二進位制日誌是記錄所有庫的操作,所以要指定相應庫的恢復,使用mysqlbinlog的-d引數指定要恢復的資料庫,即可增量恢復指定庫

mysqlbinlog -d db1 /home/mysql/data/mysql.bin-000045 |mysql -s /home/mysql/run/mysql.socket -uroot -p123456
說明:socket檔案不是預設位置,所以所有命令需要新增-s引數,但mysql例外,已經在.bashrc中新增alias mysql='mysql -s /home/mysql/run/mysql.socket'

當然其他命令也可以新增。

mysql分庫備份 MySQL分庫備份與分表備份

mysql分庫備份與分表備份 1 分庫備份 要求 將mysql資料庫中的使用者資料庫備份,備份的資料庫檔案以時間命名 指令碼內容如下 root db01 scripts vim backup database.sh bin bash mysql user root mysql pass 123456...

mysql分庫分表備份 mysql分庫分表備份

一 單獨備份資料庫 mysqldump uroot poldboy oldboy opt oldboy.sql 最簡單的備份 1 mysql基於myisam引擎 mysqldump uroot poldboy b x f oldboy gzip opt oldboy.sql.gz 2 5.5以後預設...

Shell實現MySQL分庫備份

工作中經常會用到 進入mysql中檢視庫名 mysql uroot p root show databases 如下圖 圖1 命令列進入mysql 或者可以不進入mysql中,直接在命令列中顯示,用以下命令 mysql uroot p root e show databases 效果見下面圖2 圖2...