導航:首頁 > 操作系統 > linuxmysql還原資料庫備份

linuxmysql還原資料庫備份

發布時間:2022-11-27 10:48:35

linux中mysql如何備份與恢復

mysql備份還是有很多學問的,最權威的回答在mysql的中文手冊:
mysql手冊:http://doc.linuxpk.com/doc/mysql/

廢話少說了,簡單的講,如果你的資料庫半夜可以停1~5分鍾,那麼推薦直接備份整個資料庫文件,這樣,恢復方便,很快的,我在機房工作的,已經搞過很多次了。可以寫個腳本放在自動任務里,比如我在linux上的mysql備份腳本:
#!/bin/bash
#History
#=====================================================
#When Who What
#2010/5/12 Zhaoyn Create
#
#=====================================================
basedir=/opt/backup
rm -f `find $basedir -name "mysql*.tgz" -mtime +22`
/etc/rc.d/init.d/mysqld stop
sleep 5s ;sync;sync
tar -czpf $basedir/mysql.$(date +%Y%m%d-%H%M).tgz /etc/my.cnf /var/lib/mysql
/etc/rc.d/init.d/mysqld start

如果你想臨時備份,又不能停資料庫,那就用mysqlmp了,其參數很多,但一般可以使用默認參數。
使用常用參數:
備份整個資料庫,使用默認選項,指定字元集:
mysqlmp --opt --default-character-set=gbk dbname > dbname-mysqlbackup.20100927.sql
在新建的伺服器上恢復整個資料庫:
創建資料庫,然後使用mysql客戶端恢復:
shell> mysqladmin create target_db_name
shell> mysql target_db_name < backup-file.sql
即 shell> mysql 庫名 < 文件名

至於備份一個軟體,直接打包就是了,跟mysql分開備份。

Ⅱ LINUX下如何直接對MYSQL資料庫進行備份

MYSQL提供了數據導入與導出的兩個命令,分別是mysqlimport(導入)和
mysqlmp(導出或者轉儲)。詳細用法請網路一下。

Ⅲ linux mysql備份和恢復

備份所有資料庫# mysqlmp -u root -p --opt --all-databases > /root/all-databases
修復# myisamchk -r /var/lib/mysql/allusers/names.MYI
或# myisamchk -o /var/lib/mysql/allusers/names.MYI

Ⅳ linux下mysql資料庫備份工具有哪些

命令行 mysqlmp
網頁phpmyadmin

Ⅳ 我把linux下的mysql文件夾拷貝了下來,想在另一台linux下的mysql上恢復數據,多個資料庫文件,出現1146錯誤

項目上 MySQL還原 SQL 備份經常會碰到一個錯誤如下,且通常出現在導入視圖、函數、存儲過程、事件等對象時,其根本原因就是因為導入時所用賬號並不具有SUPER 許可權,所以無法創建其他賬號的所屬對象。ERROR 1227 (42000) : Access denied; you need (at least one of) the SUPER privilege(s) for this operation常見場景:1. 還原 RDS 時經常出現,因為 RDS 不提供 SUPER 許可權;2. 由開發庫還原到項目現場,賬號許可權等有所不同。

處理方式:

1. 在原庫中批量修改對象所有者為導入賬號或修改SQL SECURITY為Invoker;2. 使用 mysqlmp 導出備份,然後將 SQL 文件中的對象所有者替換為導入賬號。
二、問題原因我們先來看下為啥會出現這個報錯,那就得說下 MySQL 中一個很特別的許可權控制機制,像視圖、函數、存儲過程、觸發器等這些數據對象會存在一個DEFINER和一個SQL SECURITY的屬性,如下所示:

Ⅵ Linux查看資料庫備份腳步的配置信息命令

Copyright © 1999-2020, CSDN.NET, All Rights Reserved

mysql

登錄

Linux 關於MYSQL資料庫命令(查看,備份等操作) 原創
2016-04-19 11:22:33

fuwen1989

碼齡7年

關注
1.Linux系統下啟動MySQL的命令:
/ect/init.d/mysql start (前面為mysql的安裝路徑)
2.linux下重啟mysql的命令:
/ect/init.d/mysql restart (前面為mysql的安裝路徑)
3.linux下關閉mysql的命令:
/ect/init.d/mysql shutdown (前面為mysql的安裝路徑)
4.連接本機上的mysql:
進入目錄mysql\bin,再鍵入命令mysql -u root -p, 回車後提示輸入密碼。

5.打開資料庫後的操作命令查看資料庫的命令

mysql> show databases;

打開mydb庫

mysql> use mydb;

查看數據表的詳細結構

mysql> desc funtb;

新建資料庫
mysql> create database school;新建表
mysql> create table user01(
-> id varchar(20) NOT NULL,
-> userName varchar(10) NOT NULL,
-> age int(11) default'0',
-> sex char(2) NOT NULL default'm',
-> PRIMARY KEY (id)
-> )TYPE=InnoDB;

Query OK, 0 rows affected, 1 warning (0.02 sec)

mysql>desc student;

插入
mysql> insert into student(id,stuName) values('1','tomcat');

刪除
mysql> delete from student where id='1';

刪除表中所有數據
mysql> truncate table student;

刪除表
mysql> drop table temp;

創建新用戶並給予許可權
mysql> grant all privileges on *.* to [email protected] identified by '1234'

with grant option;

更改Mysql用戶密碼
c:\Mysql5.0\bin>mysqladmin -u root -p password 1234

Enter password: ****

備份資料庫及表(新版資料庫不加3306埠號)

c:\mysql\bin\>mysqlmp –u root –p mydb >d:\backup.sql

執行此語句將把資料庫mydb 備份到D盤的backup.sql文件中 備份多個資料庫表

c:\mysql\bin\>mysqlmp –u root –p 3306 school user01 user >d:\backup.sql
此句的意思是把school庫中的user01表和user表的內容和表的定義備份到D盤backup.sql文件中。
備份所有的資料庫
c:\myql\bin>mysqlmp –u root –p 3306 –all –database>d:backup.sql
還原Mysql資料庫
c:\mysql\bin\mysql –u root –p 3306 school
還原其中的一個表
mysql> source d:\books.sql;

退出Mysql連接

mysql>quit(exit)

windows關閉mysql服務
C:\mysql\bin>net mysql

Ⅶ linux下mysql備份文件怎樣還原到windows下

在老版本的MySQL 3.22中,MySQL的單表限大小為4GB,當時的MySQL的存儲引擎還是ISAM存儲引擎。但是,當出現MyISAM存儲引擎之後,也就是從MySQL 3.23開始,MySQL單表最大限制就已經擴大到了64PB了(官方文檔顯示)。也就是說,從目前的技術環境來看,MySQL資料庫的MyISAM存儲 引擎單表大小限制已經不是有MySQL資料庫本身來決定,而是由所在主機的OS上面的文件系統來決定了。 而MySQL另外一個最流行的存儲引擎之一Innodb存儲數據的策略是分為兩種的,一種是共享表空間存儲方式,還有一種是獨享表空間存儲方式。 當使用共享表空間存儲方式的時候,Innodb的所有數據保存在一個單獨的表空間裡面,而這個表空間可以由很多個文件組成,一個表可以跨多個文件存在,所 以其大小限制不再是文件大小的限制,而是其自身的限制。從Innodb的官方文檔中可以看到,其表空間的最大限制為64TB,也就是說,Innodb的單 表限制基本上也在64TB左右了,當然這個大小是包括這個表的所有索引等其他相關數據。 而當使用獨享表空間來存放Innodb的表的時候,每個表的數據以一個單獨的文件來存放,這個時候的單表限制,又變成文件系統的大小限制了。

Ⅷ 如何將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,mysqlmp調用flush-logs後並且使用參數delete-master-logs,這些日誌文件會消失,並產生新的日誌文件(開始是空的).

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

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

完整備份腳本

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

#!/bin/sh

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

mysqlmp --quick --all-databases --flush-logs
--delete-master-logs --lock-all-tables
> $DumpFile

echo "Dump Done" >> $LogFile

tar czvf $GZDumpFile $DumpFile >> $LogFile 2>&1

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 " 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 "ing $base"
cp $base $BAKDIR
fi
fi
done

echo "backup mysql binlog ok"
增量備份腳本是備份前flush-logs,mysql會自動把內存中的日誌放到文件里,然後生成一個新的日誌文件,所以我們只需要備份前面的幾個即可,也就是不備份最後一個.
因為從上次備份到本次備份也可能會有多個日誌文件生成,所以要檢測文件,如果已經備份過,就不用備份了.

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

訪問設置

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

[mysqladmin]
password =password
user= root
[mysqlmp]
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中我用mysqlmp備份了全庫內容,但是我只想恢復某一張表,怎麼辦

這個問題不是MYSQL資料庫方面的問題,而是如何從一個文本文件中取出需要的部分內容的問題。 從資料庫角度來說,沒有什麼好辦法,可以使用操作系統中的文本編輯處理工具來實現。例如,如果不是太大,幾百M可以用editplus,ultraedit等編輯工具打開找你需要sql拷貝出來導入。

如果是linux/unix,可參考如下方法:

1.使用 awk:
可以先到原資料庫中使用 'show tables;' 查看資料庫表的列表,注意,此列表已經按照字母排序,例如:
table1

table2
table3
然後使用awk 來過濾sql語句,假設你要恢復 table2 表,可以使用下面的語句:
awk 『/^-- Table structure for table .table2./,/^-- Table structure for table .table3./{print}』 mympfile.sql > /tmp/recovered_table.sql

2.使用sed:
與上面類似,假設你要恢復 table2 表,可以使用下面的語句:
cat mympfile.sql | sed -n -e '/Table structure for table .test1./,/Table structure for table .test2./p' > /tmp/extracted_table.sql

閱讀全文

與linuxmysql還原資料庫備份相關的資料

熱點內容
命令行調用程序 瀏覽:73
汽缸壓縮比大了好嗎 瀏覽:667
工程電路分析pdf 瀏覽:48
k線圖源碼大全 瀏覽:457
c語言編譯器可以走c嘛 瀏覽:18
蘋果已經購買的app如何不再訂閱 瀏覽:150
ubuntu默認命令行 瀏覽:532
平面橢圓怎麼編程 瀏覽:516
安卓手機微信照片馬克筆怎麼去掉 瀏覽:231
編譯器工具是什麼 瀏覽:983
年底解壓的最佳方法 瀏覽:193
操作系統源碼查詢 瀏覽:853
陪聊app怎麼收費 瀏覽:88
python刪除csv文件的特定行 瀏覽:484
51單片機如何串口發送數據 瀏覽:998
文件夾的修改日期是啥 瀏覽:753
金碟雲伺服器數據稅務 瀏覽:988
java進程退出 瀏覽:849
redisjava使用 瀏覽:871
文件夾大小怎麼找 瀏覽:305