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

2021-10-18 22:03:06 字數 2141 閱讀 4910

一、單獨備份資料庫

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以後預設是innodb(推薦)

mysqldump -uroot -poldboy  -b  -f --single-transactio oldboy | gzip >/opt/oldboy.sql.gz

二、多例項分庫備份資料庫(用於寫shell指令碼)

主要思想就是把庫列出來,乙個for迴圈備份

mysql  -uroot  -poldboy  -e"show databases;" | egrep -evi  "info|perfor" |sed -r 's#^([a-z].*$)#mysqldump -uroot -poldboy -b  \1 |gzip >/opt/1.sql.gz #g' |bash

/bin/bash

bakpath=/opt/mysql

myuser=root

mypasswd=123456

socket=/data/3308/mysql.sock

mycmd="mysql -u$myuser -p$mypasswd -s $socket"

mysqldump=mysqldump -u$myuser -p$mypasswd -s $socket -b -x -f -r

[ ! -d $bakpath ] && mkdir -p $bakpath

dblist=`$mycmd -e "show databases; | sed 1d" |egrep -evi "mysql|info" `

for dbname in dblist

do$mysqldump  $dbname |gzip > /$bakpath/$_$(date +%f).sql.gz

done

備份表mysqldump -uroot -poldboy 庫名 表名 >/opt/table.sql

三、多例項分表備份

主要思想就是把表列出來,兩層for迴圈備份

/bin/bash

bakpath=/opt/mysql

myuser=root

mypasswd=123456

socket=/data/3308/mysql.sock

mycmd="mysql -u$myuser -p$mypasswd -s $socket"

mysqldump=mysqldump -u$myuser -p$mypasswd -s $socket  -x -f -r

[ ! -d $bakpath ] && mkdir -p $bakpath

dblist=`$mycmd -e "show databases; | sed 1d" |egrep -evi "mysql|info" `

for dbname in dblist

dotlist=`$mycmd -e "show tables from $dbname;" | sed 1d`

for tname in $tlist

domkdir -p $bakpath/$dbname

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

done

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

done

注:(純手打,有問題請指出)

如果資料庫不大建議兩個都備份,有時候只要求恢復乙個表

-d引數只備份表結構

-t引數只備份資料

-f重新整理binlog日誌

其他引數 mysqldump --help查詢

批量恢復庫大概過程

for dbname in `ls *.sql`;do mysql -uroot -p123456 < $dbname.sql;done

四、增量備份

mysqlbinlog  /data/3306/data/mysql-bin.0001 >>/tmp/all.sql

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

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

mysql分表分庫實現 MySql分表分庫思路

一.資料庫瓶頸 1.1io瓶頸 第一種 磁碟讀io瓶頸,熱點資料太多,資料庫快取放不下,每次查詢時會產生大量的io 分庫和垂直分表 第二種 網路io瓶頸,請求的資料太多,網路頻寬不夠 分庫 1.2cpu瓶頸 第一種 sql問題,如sql中包含join,group by,order by,非索引字段條...

MySQL範圍分表分庫 mysql 分表分庫策略

唯一id的生成 下面列舉幾種常見的唯一id生成方案,需要滿足兩大核心需求 1.全域性唯一 2趨勢有序 1.用資料庫的auto increment 自增id 來生成,每次通過寫入資料庫一條記錄,利用資料庫id自增的特性獲取唯一,有序的id。優點 使用資料庫原有的功能,相對簡單 能夠保證唯一 能夠保證遞...