Linux備份和匯入Mysql

2021-10-01 15:23:11 字數 3809 閱讀 2238

/usr/bin/mysqldump --opt -ubatsing -pbatsingpw -hlocalhost timepusher > /mnt/mysqlbackup/db_`date +

%f`.sql

#!/bin/sh

# database info

db_user=

"batsing"

db_pass=

"batsingpw"

db_host=

"localhost"

db_name=

"timepusher"

# others vars

bin_dir=

"/usr/bin"

#the mysql bin path

bck_dir=

"/mnt/mysqlbackup"

#the backup file directory

date=

`date +%f`

# todo

#/usr/bin/mysqldump --opt -ubatsing -pbatsingpw -hlocalhost timepusher > /mnt/mysqlbackup/db_`date +%f`.sql

$bin_dir/mysqldump --opt -u$db_user -p$db_pass -h$db_host

$db_name

>

$bck_dir/db_$date.sql

#還原資料庫

#用mysql-front匯入前一天的 *.sql 檔案即可恢復資料

儲存檔案或上傳到 /usr/local/apache/htdocs/timepusher/sqlbak/sqlautobak.sh

1、進入到該指令碼檔案目錄 chmod +x sqlautobak.sh 新增執行許可權,否則會報錯 permission denied

2、./sqlautobak.sh ,如果是在windows編寫上傳的檔案可能會報錯

/bin/sh^m: bad interpreter: no such file or directory 這是不同系統編碼格式引起的:在

windows系統中編輯的 .s**件可能有不可見字元,所以在

linux系統下執行會報以上異常資訊。可以在windows上使用notepad++轉換成unix格式(選單中選擇:編輯》檔案格式轉換》轉換成unix)

3、修改後上傳繼續執行 ./sqlautobak.sh ,沒有報錯。再檢視匯出的sql檔案。

1、檢視匯出來的sql檔案,發現其檔案大小非常大,mysqldump也提供了生成gzip壓縮檔案的引數設定

2、sqlautobak.sh修改為如下

#!/bin/sh

# database info

db_user=

"batsing"

db_pass=

"batsingpw"

db_host=

"localhost"

db_name=

"timepusher"

# others vars

bin_dir=

"/usr/bin"

#the mysql bin path

bck_dir=

"/mnt/mysqlbackup"

#the backup file directory

date=

`date +%f`

# todo

# /usr/bin/mysqldump --opt -ubatsing -pbatsingpw -hlocalhost timepusher > /mnt/mysqlbackup/db_`date +%f`.sql

# $bin_dir/mysqldump --opt -u$db_user -p$db_pass -h$db_host $db_name > $bck_dir/db_$date.sql

$bin_dir/mysqldump --opt -u$db_user -p$db_pass -h$db_host

$db_name

|gzip

>

$bck_dir/db_$date.sql.zip

# 還原資料庫

# 把 *.sql.zip 使用gunzip 或 本地的解壓軟體 解壓為 *.sql 檔案

# 用mysql-front匯入前一天的 *.sql 檔案即可恢復資料

1、編輯定時任務列表 crontab -e

2、插入下面這一行,因為通常來說5點鐘**的訪問量最低。 00 05 * * * /bin/sh

/usr/local/apache/htdocs/timepusher/sqlbak/sqlautobak.sh

#每天早上 5:00am 執行

3、檢視任務是否建立成功 crontab -l

# for details see man 4 crontabs

# example of job definition:

# .---------------- minute (0 - 59)

# | .------------- hour (0 - 23)

# | | .---------- day of month (1 - 31)

# | | | .------- month (1 - 12) or jan,feb,mar,apr ...

# | | | | .---- day of week (0 - 6) (sunday=0 or 7) or sun,mon,tue,wed,thu,fri,sat

# | | | | |

# * * * * * user-name command to be executed

如果生成的檔案和解壓出來檢視沒有問題,那麼這個自動定時備份資料庫的指令碼就算是完成了。因為生成的檔案多了會占用一定的空間,所以建議要定期(比如乙個月)清理一下檔案。

$、補充

1、如果該資料庫的使用者沒有分配 鎖表 的許可權,則備份會報錯 when using lock tables 。那是因為mysqldump命令預設在匯出時是要鎖定表的,所以解決方式有兩個。乙個是給該使用者開放 鎖表 的許可權;另乙個是在命令中加上 --skip-lock-tables 這個引數。即是:

$bin_dir/mysqldump --opt -u$db_user -p$db_pass -h$db_host

$db_name --skip-lock-tables| gzip

>

$bck_dir/db_$date.sql.gz

匯入資料庫

mysql>create database abc;
方法一:

選擇資料庫

mysql>use abc;
設定資料庫編碼

mysql>set names utf8;
匯入資料(注意sql檔案的路徑)

mysql>source /home/abc/abc.sql;
方法二:

mysql -u使用者名稱 -p密碼 資料庫名 < 資料庫名.sql

#mysql -uabc_f -p abc < abc.sql
建議使用第二種方法匯入。

MySql匯入和備份

在dos的 mysql安裝目錄 bin 目錄下用下面命令 color red mysql c default character set utf8 u username p databasename h ipaddress sql color 其中username 為mysql使用者名稱,一般為ro...

linux 簡單的mysql備份和匯入

1.匯出整個資料庫 mysqldump u 使用者名稱 p 資料庫名 匯出的檔名 例 mysqldump u dbadmin p myblog home zhangy blog database bak myblog.sql 2.匯出乙個表 mysqldump u 使用者名稱 p 資料庫名 表名 匯...

mysql備份 匯入

mysql備份和匯入 以mysql執行在192.168.2.199 3306,使用者root 為例 安裝mysql會預設安裝mysqldump,手動安裝 yum y install mysql client 1備份所有庫 會備份所有庫,包括mysql自帶的庫,匯入到其他例項的時候可能有問題,不推薦使...