日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql 备份库的shell_shell学习之自动备份mysql数据库

發布時間:2023/12/31 数据库 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql 备份库的shell_shell学习之自动备份mysql数据库 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

首先登陸mysql:

mysql -u root -p注意:不是系統root的密碼,mysql安裝好后默認root密碼為空

>set password for 'root'@'localhost' = password('*****');--修改root用戶的本地密碼

>grant all on zabbix.* to backup@'localhost' identified by "123456";---創建備份zabbix數據庫的用戶和密碼,授權了對zabbix數據庫的所有權限

退出數據庫,我們編輯/etc/my.cnf,在[client]模塊下添加用戶名和密碼如下:

host=localhost

user=backup

password='123456'

準備工作做好后來寫腳本:

------------------------mysql_backup.sh--------------------------------------

#!/bin/bash

#auto backup mysql db --說明信息

#from net video 2017 ?--說明信息

#define backup path ?--第一步做好參數定義準備工作,有利于后面代碼的簡潔

BAK_DIR=/data/backup/`date +%Y%m%d`

MYSQLDB=zabbix

MYSQLCMD=/usr/bin/mysqldump

#以上的參數第一個是指定備份路徑,第二個是備份的數據庫名,第三個是備份的執行程序

#Juge the exec user author

if [ $UID -ne 0 ];then

echo "Must to be use root for exec shell."

exit

fi

#以上的語句主要是用于判斷是否用root用戶執行

#Juge if backup exists

if [ ! -d $BAK_DIR ];then

mkdir -p $BAK_DIR

echo -e "\033[32mThe $BAK_DIR Creat Successfully!\033[0m"

else

echo "This $BAK_DIR is exists..."

fi

#以上的語句是判斷備份的目錄是否存在,如果不存在則創建并提示創建成功

#Mysql backup command

$MYSQLCMD --defaults-extra-file=/etc/my.cnf -d $MYSQLDB >$BAK_DIR/$MYSQLDB.sql

#這條語句就是執行備份的,--defaults-extra-file應用文件中的mysql用戶和密碼,-d參數,只導出表結構

#Juge Success or Failed

if [ $? -eq 0 ];then

echo -e "\033[32mThe Mysql Backup $MYSQLDB Successfully!\033[0m"

else

echo -e "\033[32mThe Mysql Backup $MYSQLDB Failed,Please check.\033[0m"

fi

#以上的語句只是一個提示備份成功與否的信息if [ $? -eq 0 ]判斷以上的代碼是否執行有誤

在執行腳本前先用命令檢測腳本:sh -n auto_mysql_backup.sh

為了測試效果,我們先來查看一下備份目錄下是否有該文件,可以看到沒有出現20170405這樣的目錄

sh auto_mysql_backup.sh執行腳本

可以看到提示說創建20170405的目錄成功并備份成,我們去目錄下看看呢?

以上可以看到備份zabbix數據庫成功。

備注:在以上的腳本中我們可以修改MYSQLDB為一個手動輸入的參數,這樣使得我們的腳本更智能

crontab -e

0 ?0 * * * /bin/bash /data/sh/auto_mysql_backup.sh >>/tmp/mysql_back.log

將該腳本寫入crontab中每天都去執行,在以后的文章中再寫一個增量備份的,更智能化。

在數據庫中授權MYDB數據庫給backup用戶 grant all on MYDB.* to backup@'localhost' identified by "123456";

對以上文檔稍作修改如下:

-------------------------auto_mysql_backup02.sh---------------------------------------

#!/bin/bash

#auto backup database

#from net video 2017

BAK_DIR=/data/backup/`date +%Y%m%d`

MYSQLDB=$1

MYSQLCMD=/usr/bin/mysqldump

if [ $UID -ne 0 ];then

echo "Must to be use root for exec shell."

exit

fi

#增加的代碼如下

if [ -z "$1" ];then

echo -e "\033[32mUsage:\nPlease Enter DataBase that you will backup \n-------------------------------\n\nUsage: { $0 mysql } \033[0m"

exit

fi

if [ ! -d $BAK_DIR ];then

mkdir -p $BAK_DIR

echo -e "\033[32mThe $BAK_DIR Creat Successfully!\033[0m"

else

echo "This $BAK_DIR is exists..."

fi

#Mysql BACKUP COMMAND

$MYSQLCMD --defaults-extra-file=/etc/my.cnf -d $MYSQLDB >$BAK_DIR/$MYSQLDB.sql

if [ $? -eq 0 ];then

echo -e "\033[32mThe Mysql Backup $MYSQLDB Successfully!\033[0m"

else

echo -e "\033[32mThe Mysql Backup $MYSQLDB Failed,Please check.\033[0m"

fi

---------------------------------------------------------------------------------------------------sh auto_mysql_backup02.sh MYDB--這樣就可以備份指定的數據庫了,只要授權給了backup用戶,這里的授權用戶我們也可以做成輸入參數$2來處理。

總結

以上是生活随笔為你收集整理的mysql 备份库的shell_shell学习之自动备份mysql数据库的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。