包含linux下mysql備份加密的詞條

本文目錄一覽:

LINUX下如何直接對MYSQL數據庫進行備份?

複製來的 希望對你有幫助 學會搜索 我只是幫你的問題原封不動的去google搜索了下

用命令實現備份

MySQLl提供了一個mysqldump命令,我們可以用它進行數據備份。

按提示輸入密碼,這就把tm數據庫所有的表結構和# mysqldump -u root -p tm tm_050519.sql數據備份到tm_050519.sql了,因為要總進行備份工作,如果數據量大會佔用很大空間,這時可以利用gzip壓縮數據,命令如下:

# mysqldump -u root -p tm | gzip tm_050519.sql.gz

系統崩潰,重建系統時,可以這樣恢複數據:

# mysqldump -u root -p tm tm_050519.sql

從壓縮文件直接恢復:

#gzip tm_050519.sql.gz | mysqldump -u root -p tm

當然,有很多MySQL工具提供更直觀的備份恢復功能,比如用phpMyAdmin就很方便。但我認為,mysqldump是最基本、最通用的。

二、利用crontab,系統每天定時備份mysql數據庫

利用系統crontab來定時執行備份文件,按日期對備份結果進行保存,達到備份的目的。

1、創建保存備份文件的路徑/var/backup/mysqlbak

# mkdir -p /var/backup/mysqlbak

2、創建/usr/sbin/bakmysql文件

#vi /usr/sbin/bakmysql.sh

#!/bin/bash

# mysql備份腳本

cd /var/backup/mysqlbak/

dateDIR=`date +”%y-%m-%d”`

mkdir -p $dateDIR/data

for i in `/usr/local/www/mysql/bin/mysql -uroot -plin31415926 -e “show databases” |

grep -v “Database” | grep -v “information_schema”`

do

/usr/local/www/mysql/bin/mysqldump -uroot -plin31415926 $i |

gzip /var/backup/mysqlbak/$dateDIR/${i}_${dateDIR}.gz

done

3、修改文件屬性,使其可執行

# chmod +x /usr/sbin/bakmysql

4、修改/etc/crontab

# crontab -e

在下面添加

01 3 * * * root /usr/sbin/bakmysql

#表示每天3點鐘執行備份

這樣每天就可以在/var/backup/mysqlbak下看到備份的sql文件 了!

linux中mysql如何備份與恢復

一般是即時備份。做主從。或者是每天增量備份。

本文是在linux下,mysql 4.1.14版本下測試的,經過適當修改可能適合mysql 4.0,5.0及其其他版本.

本文適合於沒有啟動複製功能的mysql,如果啟動了複製,可能不需要採取這種備份策略或者需要修改相關參數.

每個人的備份策略都可能不同,所以請根據實際情況修改,做到舉一反三,不要照搬照抄,可能會造成不必要的損失.

希望你明白這個腳本要幹什麼工作!

腳本描述

每7天備份一次所有數據,每天備份binlog,也就是增量備份.

(如果數據少,每天備份一次完整數據即可,可能沒必要做增量備份)

作者對shell腳本不太熟悉,所以很多地方寫的很笨 :)

開啟 bin log

在mysql 4.1版本中,默認只有錯誤日誌,沒有其他日誌.可以通過修改配置打開bin log.方法很多,其中一個是在/etc/my.cnf中的mysqld部分加入:

[mysqld]

log-bin

這個日誌的主要作用是增量備份或者複製(可能還有其他用途).

如果想增量備份,必須打開這個日誌.

對於數據庫操作頻繁的mysql,這個日誌會變得很大,而且可能會有多個.

在數據庫中flush-logs,或者使用mysqladmin,mysqldump調用flush-logs後並且使用參數delete-master-logs,這些日誌文件會消失,併產生新的日誌文件(開始是空的).

所以如果從來不備份,開啟日誌可能沒有必要.

完整備份的同時可以調用flush-logs,增量備份之前flush-logs,以便備份最新的數據.

完整備份腳本

如果數據庫數據比較多,我們一般是幾天或者一周備份一次數據,以免影響應用運行,如果數據量比較小,那麼一天備份一次也無所謂了.

#!/bin/sh

# mysql data backup script

# by scud

# 2005-10-30

#

# use mysqldump –help,get more detail.

#

BakDir=/backup/mysql

LogFile=/backup/mysql/mysqlbak.log

DATE=`date +%Y%m%d`

echo ” ” $LogFile

echo ” ” $LogFile

echo “——————————————-” $LogFile

echo $(date +”%y-%m-%d %H:%M:%S”) $LogFile

echo “————————–” $LogFile

cd $BakDir

DumpFile=$DATE.sql

GZDumpFile=$DATE.sql.tgz

mysqldump –quick –all-databases –flush-logs

–delete-master-logs –lock-all-tables

$DumpFile

echo “Dump Done” $LogFile

tar czvf $GZDumpFile $DumpFile $LogFile 21

echo “[$GZDumpFile]Backup Success!” $LogFile

rm -f $DumpFile

#delete previous daily backup files:採用增量備份的文件,如果完整備份後,則刪除增量備份的文件.

cd $BakDir/daily

rm -f *

cd $BakDir

echo “Backup Done!”

echo “please Check $BakDir Directory!”

echo “copy it to your local disk or ftp to somewhere !!!”

ls -al $BakDir

上面的腳本把mysql備份到本地的/backup/mysql目錄,增量備份的文件放在/backup/mysql/daily目錄下.

注意:上面的腳本並沒有把備份後的文件傳送到其他遠程計算機,也沒有刪除幾天前的備份文件:需要用戶增加相關腳本,或者手動操作.

增量備份

增量備份的數據量比較小,但是要在完整備份的基礎上操作,用戶可以在時間和成本上權衡,選擇最有利於自己的方式.

增量備份使用bin log,腳本如下:

#!/bin/sh

#

# mysql binlog backup script

#

/usr/bin/mysqladmin flush-logs

DATADIR=/var/lib/mysql

BAKDIR=/backup/mysql/daily

###如果你做了特殊設置,請修改此處或者修改應用此變量的行:缺省取機器名,mysql缺省也是取機器名

HOSTNAME=`uname -n`

cd $DATADIR

FILELIST=`cat $HOSTNAME-bin.index`

##計算行數,也就是文件數

COUNTER=0

for file in $FILELIST

do

COUNTER=`expr $COUNTER + 1 `

done

NextNum=0

for file in $FILELIST

do

base=`basename $file`

NextNum=`expr $NextNum + 1`

if [ $NextNum -eq $COUNTER ]

then

echo “skip lastest”

else

dest=$BAKDIR/$base

if(test -e $dest)

then

echo “skip exist $base”

else

echo “copying $base”

cp $base $BAKDIR

fi

fi

done

echo “backup mysql binlog ok”

增量備份腳本是備份前flush-logs,mysql會自動把內存中的日誌放到文件里,然後生成一個新的日誌文件,所以我們只需要備份前面的幾個即可,也就是不備份最後一個.

因為從上次備份到本次備份也可能會有多個日誌文件生成,所以要檢測文件,如果已經備份過,就不用備份了.

注:同樣,用戶也需要自己遠程傳送,不過不需要刪除了,完整備份後程序會自動生成.

訪問設置

腳本寫完了,為了能讓腳本運行,還需要設置對應的用戶名和密碼,mysqladmin和mysqldump都是需要用戶名和密碼的,當然可以寫在腳本中,但是修改起來不太方便,假設我們用系統的root用戶來運行此腳本,那麼我們需要在/root(也就是root用戶的home目錄)創建一個.my.cnf文件,內容如下

[mysqladmin]

password =password

user= root

[mysqldump]

user=root

password=password

注:設置本文件只有root可讀.(chmod 600 .my.cnf )

此文件說明程序使用mysql的root用戶備份數據,密碼是對應的設置.這樣就不需要在腳本里寫用戶名和密碼了.

自動運行

為了讓備份程序自動運行,我們需要把它加入crontab.

有2種方法,一種是把腳本根據自己的選擇放入到/etc/cron.daily,/etc/cron.weekly這麼目錄里.

一種是使用crontab -e放入到root用戶的計劃任務里,例如完整備份每周日凌晨3點運行,日常備份每周一-周六凌晨3點運行.

linux系統下mySQL數據庫 備份方法和腳本?

方法一、適合所有格式的mysql數據庫,通過對數據庫導出導進寫個腳本定時執行:

1.導出整個數據庫 mysqldump -u 用戶名 -p 數據庫名 導出的文件名 mysqldump -u wcnc -p smgp_apps_wcnc /存放路徑/wcnc.sql

2.導出一個表 mysqldump -u 用戶名 -p 數據庫名 表名 導出的文件名 mysqldump -u wcnc -p smgp_apps_wcnc users /存放路徑/wcnc_users.sql

3.導出一個數據庫結構 mysqldump -u wcnc -p -d –add-drop-table smgp_apps_wcnc /存放路徑/wcnc_db.sql

定義:

-d 沒有數據

–add-drop-table 在每個create語句之前增加一個drop table

4.導入數據庫 常用source 命令 進入mysql數據庫控制台:

如mysql -u root -p mysqluse 數據庫

方法二、針對mysql數據表格式為MyISAM的

假如數據文件在/var/lib/mysql

那麼直接寫個腳本

cp -r /var/lib/mysql /備份到的文件夾路徑

隔機備份用rsync增量,或定時完整備份。

linux下mysql數據庫備份工具有哪些

1. mysqldump: 最早,也是最成熟的邏輯備份工具,是 MySQL 原生的用來備份整個數據庫實例、單個數據庫、單張表的邏輯備份工具, 上手簡單,學習成本幾乎為 0。備份簡單,恢復也簡單。

比如導出單個數據庫 ytt: mysqldump ytt /tmp/ytt.sql;

恢復也非常簡單:mysql /tmp/ytt.sql

缺點是備份速度慢。在整個備份過程中,是單線程運行;備份出來的數據集要恢復的話同樣也是單線程運行,恢復速度也慢。除非對同一時刻的所有表單獨備份出來,自己寫額外腳本進行多線程恢復。

2. mysqlpump:MySQL 5.7 GA 後推出的 mysqldump工具的增強版。可以對同一個數據集多個線程並發備份,備份速度很快。

其他缺點和 mysqldump 一樣。

3. MySQL Shell UTIL 對象附帶的備份工具:隨 MySQL 8.0.21 最新版本捆綁發布,自帶多線程備份以及多線程恢復功能, 可以直接替代 mysqldump/mysqlpump。

dump_instance/dumpInstance 用來多線程備份 MySQL 整個單機實例

dump_schemas/dumpSchemas 用來多線程備份 MySQL 單個數據庫

load_dump/loadDump 用來多線程恢復之前兩個工具導出的數據集文件

MySQL Shell UTIL 備份恢復工具具備如下特性:

1. 壓縮導出(默認壓縮算法 zstd)

2. 數據集分塊導出,每塊 32M

3. 默認導出存儲過程、存儲函數、觸發器、事件、用戶、視圖

4. 默認 4 個線程導出

5. 默認進度展示

6. 默認字符集 utf8mb4

7. 默認開啟一致性導出

8. 默認表,視圖等定義導出為 SQL 語句

9. 默認數據導出為 TSV 格式數據

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/240502.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-12 12:23
下一篇 2024-12-12 12:23

相關推薦

  • 如何修改mysql的端口號

    本文將介紹如何修改mysql的端口號,方便開發者根據實際需求配置對應端口號。 一、為什麼需要修改mysql端口號 默認情況下,mysql使用的端口號是3306。在某些情況下,我們需…

    編程 2025-04-29
  • Python操作MySQL

    本文將從以下幾個方面對Python操作MySQL進行詳細闡述: 一、連接MySQL數據庫 在使用Python操作MySQL之前,我們需要先連接MySQL數據庫。在Python中,我…

    編程 2025-04-29
  • MySQL遞歸函數的用法

    本文將從多個方面對MySQL遞歸函數的用法做詳細的闡述,包括函數的定義、使用方法、示例及注意事項。 一、遞歸函數的定義 遞歸函數是指在函數內部調用自身的函數。MySQL提供了CRE…

    編程 2025-04-29
  • MySQL bigint與long的區別

    本文將從數據類型定義、存儲空間、數據範圍、計算效率、應用場景五個方面詳細闡述MySQL bigint與long的區別。 一、數據類型定義 bigint在MySQL中是一種有符號的整…

    編程 2025-04-28
  • MySQL左連接索引不生效問題解決

    在MySQL數據庫中,經常會使用左連接查詢操作,但是左連接查詢中索引不生效的情況也比較常見。本文將從多個方面探討MySQL左連接索引不生效問題,並給出相應的解決方法。 一、索引的作…

    編程 2025-04-28
  • 用什麼來備份 ssbackup 文件?

    SSBackup是一種用於存儲數據的文件格式,可以在Snapshots和Debian GNU / Linux系統上使用。備份文件是大多數用戶和數據中心管理員的關鍵需求。通過備份,可…

    編程 2025-04-27
  • CentOS 7在線安裝MySQL 8

    在本文中,我們將介紹如何在CentOS 7操作系統中在線安裝MySQL 8。我們會從安裝環境的準備開始,到安裝MySQL 8的過程進行詳細的闡述。 一、環境準備 在進行MySQL …

    編程 2025-04-27
  • 如何在Linux中添加用戶並修改配置文件

    本文將從多個方面詳細介紹在Linux系統下如何添加新用戶並修改配置文件 一、添加新用戶 在Linux系統下創建新用戶非常簡單,只需使用adduser命令即可。使用以下命令添加新用戶…

    編程 2025-04-27
  • 如何使用MySQL字段去重

    本文將從多個方面為您詳細介紹如何使用MySQL字段去重並給出相應的代碼示例。 一、SELECT DISTINCT語句去重 MySQL提供了SELECT DISTINCT語句,通過在…

    編程 2025-04-27
  • MySQL正則表達式替換

    MySQL正則表達式替換是指通過正則表達式對MySQL中的字符串進行替換。在文本處理方面,正則表達式是一種強大的工具,可以方便快捷地進行字符串處理和匹配。在MySQL中,可以使用正…

    編程 2025-04-27

發表回復

登錄後才能評論