MySQL分庫,分表備份的思路和方法

2021-09-20 13:51:16 字數 3996 閱讀 3905

分庫備份的意義是什麼 ? 

有時乙個企業的資料庫裡面有多個庫,例如(www,bbs,cms),但是出問題時可能是某乙個庫,如果在備份時候把所有的庫備份成乙個資料檔案的話,恢復資料就比較麻煩。

分庫分表的缺點:檔案多,碎

1,備份乙個完整全備,再做乙個分庫分表的備份

2,指令碼批量服務多個sql檔案

3,資料量太大不合適以上方法

#以下是完整的分庫,分表的備份指令碼和思路

分庫:1)程式設計思想

1

2

3

mysqldump -uroot -p db1 >db1.sql

mysqldump -uroot -p db2 >db2.sql

2)拿到庫名,列表

1

2

3

4

mysql -uroot -p123456 -e"show databases"|

grep-evi"database|information_schema|performance_schema"|

sed-r 's#^([a-z].*$)#mysqldump -uroot -p123456 --events -b \1 |

gzip>/root/back/\1.sql.gz#g'|sh

3)迴圈db,dump

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

#!/bin/bash

#date

#by

#desc

myuser=root

mypasswd=123456

backdir="/root/back"

myhost='127.0.0.1'

mycmd="mysql -u$myuser -p$mypasswd  -h$myhost"

mydump="mysqldump -u$myuser -p$mypasswd  -h$myhost -x -e -b -f -r "

dblist=`$mycmd   -e"show databases;"|grep-evi"database|_schema|mysql"`

[ ! -d $backdir ] &&mkdir$backdir

fordbnamein$dblist

do

$mydump $dbname|gzip> $backdir/$_$(date+%f).sql.gz

done

分表:1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

#!/bin/bash

#date

#by

#desc

myuser=root

mypasswd=123456

backdir="/root/back"

myhost='127.0.0.1'

mycmd="mysql -u$myuser -p$mypasswd  -h$myhost"

mydump="mysqldump -u$myuser -p$mypasswd  -h$myhost -x "

dblist=`$mycmd   -e"show databases;"|grep-evi"database|_schema|mysql"`

[ ! -d $backdir ] &&mkdir$backdir

fordbnamein$dblist

do

tlist=`$mycmd -e"show tables from $dbname;"|sed1d`

fortnamein$tlist

do

mkdir-p $backdir/$dbname

$mydump $dbname $tname|gzip> $backdir/$/$_$_$(date+%f).sql.gz

done

done

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以後預設...

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

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

分庫分表個人思路

一般業界,對訂單資料的分庫分表,有兩類思路 按照訂單號來切分 按照使用者id來切分。方案一 按照訂單號來做 hash分散訂單資料 把訂單號看作是乙個字串,做 hash,分散到多個伺服器去。具體到哪個庫 哪個表儲存資料呢?訂單號裡面的數字來記錄著。如果要查詢某使用者的所有訂單呢?由於是根據訂單號來分散...