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

2021-10-19 19:11:08 字數 4237 閱讀 5632

mysql分庫備份與分表備份

1、分庫備份

要求:將mysql資料庫中的使用者資料庫備份,備份的資料庫檔案以時間命名

指令碼內容如下:

[root@db01 scripts]# vim backup_database.sh

#!/bin/bash

mysql_user=root

mysql_pass=123456

mkdir -p /backup

for n in `mysql -u$mysql_user -p$mysql_pass -e 'show databases;' 2>/dev/null|grep -ev '_schema|mysql'|sed '1d'`;

domysqldump -u$mysql_user -p$mysql_pass -b $n 2>/dev/null>/backup/$_`date +%y_%m_%d`.sql

done

執行指令碼進行測試:

[root@db01 scripts]# sh -x backup_database.sh

+ mysql_user=root

+ mysql_pass=123456

+ mkdir -p /backup

++ mysql -uroot -p123456 -e 'show databases;'

++ grep -ev '_schema|mysql'

++ sed 1d

+ for n in '`mysql -u$mysql_user -p$mysql_pass -e '\''show databases;'\'' 2>/dev/null|grep -ev '\''_schema|mysql'\''|sed '\''1d'\''`'

+ mysqldump -uroot -p123456 -b oldboy

+ for n in '`mysql -u$mysql_user -p$mysql_pass -e '\''show databases;'\'' 2>/dev/null|grep -ev '\''_schema|mysql'\''|sed '\''1d'\''`'

+ mysqldump -uroot -p123456 -b oldgirl

+ for n in '`mysql -u$mysql_user -p$mysql_pass -e '\''show databases;'\'' 2>/dev/null|grep -ev '\''_schema|mysql'\''|sed '\''1d'\''`'

+ mysqldump -uroot -p123456 -b test

[root@db01 scripts]#

檢查備份情況:

[root@db01 scripts]# tree /backup/

/backup/

├──oldboy_2018_07_04.sql

├──oldgirl_2018_07_04.sql

└──test_2018_07_04.sql

0 directories, 3 files

[root@db01 scripts]#

2、分庫分表備份

要求:備份每個資料庫的表,同乙個庫中的表,放在對應資料庫名字命名的目錄下

指令碼內容如下:

[root@db01 scripts]# vim backup_tables.sh

#!/bin/bash

mysql_user=root

mysql_pass=123456

mkdir -p /backup

for n in `mysql -u$mysql_user -p$mysql_pass -e 'show databases;' 2>/dev/null|grep -ev '_schema|mysql'|sed '1d'`;

domkdir -p /backup/$n

for m in `mysql -u$mysql_user -p$mysql_pass $n -e "show tables;" 2>/dev/null|sed '1d'`;

domysqldump -u$mysql_user -p$mysql_pass $n $m 2>/dev/null>/backup/$/$_`date +%y_%m_%d`.sql

done

done

執行指令碼進行測試:

[root@db01 scripts]# sh -x backup_tables.sh

+ mysql_user=root

+ mysql_pass=123456

+ mkdir -p /backup

++ mysql -uroot -p123456 -e 'show databases;'

++ grep -ev '_schema|mysql'

++ sed 1d

+ for n in '`mysql -u$mysql_user -p$mysql_pass -e '\''show databases;'\'' 2>/dev/null|grep -ev '\''_schema|mysql'\''|sed '\''1d'\''`'

+ mkdir -p /backup/oldboy

++ sed 1d

++ mysql -uroot -p123456 oldboy -e 'show tables;'

+ for m in '`mysql -u$mysql_user -p$mysql_pass $n -e "show tables;" 2>/dev/null|sed '\''1d'\''`'

+ mysqldump -uroot -p123456 oldboy students

+ for m in '`mysql -u$mysql_user -p$mysql_pass $n -e "show tables;" 2>/dev/null|sed '\''1d'\''`'

+ mysqldump -uroot -p123456 oldboy test

+ for m in '`mysql -u$mysql_user -p$mysql_pass $n -e "show tables;" 2>/dev/null|sed '\''1d'\''`'

+ mysqldump -uroot -p123456 oldboy test2

+ for n in '`mysql -u$mysql_user -p$mysql_pass -e '\''show databases;'\'' 2>/dev/null|grep -ev '\''_schema|mysql'\''|sed '\''1d'\''`'

+ mkdir -p /backup/oldgirl

++ mysql -uroot -p123456 oldgirl -e 'show tables;'

++ sed 1d

+ for m in '`mysql -u$mysql_user -p$mysql_pass $n -e "show tables;" 2>/dev/null|sed '\''1d'\''`'

+ mysqldump -uroot -p123456 oldgirl test3

+ for n in '`mysql -u$mysql_user -p$mysql_pass -e '\''show databases;'\'' 2>/dev/null|grep -ev '\''_schema|mysql'\''|sed '\''1d'\''`'

+ mkdir -p /backup/test

++ mysql -uroot -p123456 test -e 'show tables;'

++ sed 1d

+ for m in '`mysql -u$mysql_user -p$mysql_pass $n -e "show tables;" 2>/dev/null|sed '\''1d'\''`'

+ mysqldump -uroot -p123456 test test4

[root@db01 scripts]#

檢查備份情況:

[root@db01 scripts]# tree /backup/

/backup/

├──oldboy

│├── students_2018_07_04.sql

│├── test_2018_07_04.sql

│└── test2_2018_07_04.sql

├──oldgirl

│└── test3_2018_07_04.sql

└──test

└── test4_2018_07_04.sql

3 directories, 5 files

[root@db01 scripts]#

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分表分庫思路

一.資料庫瓶頸 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。優點 使用資料庫原有的功能,相對簡單 能夠保證唯一 能夠保證遞...