要命的Shell之MySQL資料庫

2021-08-29 02:04:14 字數 2626 閱讀 3713

一、mysql資料可分庫備份

分析:1、建庫      2、備份

在命令列上通過以下命令建立資料庫,socket可以省略

mysql -uroot -pcentos -s /var/lib/mysql/mysql.sock -e "create database wu;"
批量建立mysql資料庫的指令碼如下:

#!/bin/bash

path="/usr/bin:$path"

user=root

passwd=centos

socket=/var/lib/mysql/mysql.sock

mycmd="mysql -u$user -p$passwd -s $socket"

for dbname in yi yang qian xi;do

$mycmd -e "create database $dbname;"

done

在命令列通過以下命令備份資料庫:

mysqldump -uroot -pcentos -s /var/lib/mysql/mysql.sock yi | gzip > /data/shell/mysql/yi_$(date +%f).sql.gz
#!/bin/bash

path="/usr/bin:$path"

dbpath=/data/shell/mysql/back

user=root

passwd=centos

socket=/var/lib/mysql/mysql.sock

mycmd="mysql -u$user -p$passwd -s $socket"

mydump="mysqldump -u$user -p$passwd -s $socket"

[ ! -d "$dbpath" ] && mkdir -pv $dbpath

for dbname in `$mycmd -e "show databases;" | sed '1,2d' | egrep -v "mysql|performance_schema"`;do

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

done

二、mysql資料庫分庫分表備份

要求:請用指令碼實現對mysql資料庫的分庫加分表備份

準備測試的資料:通過寫指令碼批量建表並插入資料並批量檢視資料:

#!/bin/bash

path="/usr/bin:$path"

user=root

passwd=centos

socket=/var/lib/mysql/mysql.sock

mycmd="mysql -u$user -p$passwd -s $socket"

for dbname in yi yang qian xi ;do

$mycmd -e "use $dbname;create table test(id int,name varchar(16));insert into test values(1,'testdata');"

echo ***************dbtest********************====

$mycmd -e "use $dbname;select * from $.test;"

done

對資料庫進行分表備份:

#!/bin/bash

path="/usr/bin:$path"

dbpath=/data/shell/mysql/table_back

user=root

passwd=centos

socket=/var/lib/mysql/mysql.sock

mycmd="mysql -u$user -p$passwd -s $socket"

mydump="mysqldump -u$user -p$passwd -s $socket"

[ ! -d $dbpath ] && mkdir -pv $dbpath

for dbname in `$mycmd -e "show databases;" | sed 1,2d | egrep -v "mysql|performance_schema"` ;do

#建立對應目錄

mkdir $dbpath/$_$(date +%f) -p

#內層迴圈,獲取每個庫裡面的所有表,然後進入迴圈

for table in `$mycmd -e "show tables from $dbname;"|sed '1d'`;do

#備份指定的庫內的表到指定目錄下,並以庫表名字命名備份的名字

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

done

done

三、mysql主從複製異常監控

要求:開發乙個守護程序指令碼,每30秒監控一次mysql主從複製是否異常(包括不同步及延遲),如果異常,則傳送簡訊並傳送郵件給管理員存檔

linux 建立shell 備份mysql資料庫

linux 備份mysql資料庫 建立目錄 mkdir backup cd backup vi bkdatabasename.sh 第一種本機備份方式 bin bash mysqldump db3 gzip root backup databasename date y m d h m s sql....

日常shell練習指令碼之 備份mysql

指令碼後續更新及迭代將由kkitdeploy專案代替 力爭乾貨最多,咱們直接上指令碼 git clone chmod x mysqlbackup.sh crontab e 00 03 mysqlbackup.sh 恢復mysql u username p databse backup.sql簡單介紹...

shell計算檔案大小並更新mysql資料庫

在shell的for迴圈中更新資料庫表。sh檔案如下 bin bash 注意sql語句之前不能有空格,否則會出錯 for var in ls root zhaolu do size du sb root zhaolu var awk echo filesize size root tenatespa...