mysql備份與還原
一、備份常用操作基本命令
1、備份命令mysqldump格式
格式:mysqldump -h主機名 -p埠 -u使用者名稱 -p密碼 –database 資料庫名 > 檔名.sql
2、備份mysql資料庫為帶刪除表的格式
備份mysql資料庫為帶刪除表的格式,能夠讓該備份覆蓋已有資料庫而不需要手動刪除原有資料庫。
mysqldump --add-drop-table -uusername -ppassword -database databasename > backupfile.sql
3、直接將mysql資料庫壓縮備份
mysqldump -hhostname -uusername -ppassword -database databasename | gzip > backupfile.sql.gz
4、備份mysql資料庫某個(些)表
mysqldump -hhostname -uusername -ppassword databasename specific_table1 specific_table2 > backupfile.sql
5、同時備份多個mysql資料庫
mysqldump -hhostname -uusername -ppassword –databases databasename1 databasename2 databasename3 > multibackupfile.sql僅僅備6、僅備份份資料庫結構
mysqldump –no-data –databases databasename1 databasename2 databasename3 > structurebackupfile.sql
7、備份伺服器上所有資料庫
mysqldump –all-databases > allbackupfile.sql
8、還原mysql資料庫的命令
mysql -hhostname -uusername -ppassword databasename < backupfile.sql
9、還原壓縮的mysql資料庫
gunzip < backupfile.sql.gz | mysql -uusername -ppassword databasename
unzip sql.zip | mysql -hhostname -uusername -ppassword databasename
10、將資料庫轉移到新伺服器
mysqldump -uusername -ppassword databasename | mysql –host=... -c databasename
11、–master-data 和–single-transaction
在mysqldump中使用–master-data=2,會記錄binlog檔案和position的資訊 。–single-transaction會將隔離級別設定成repeatable-commited
12、匯入資料庫
常用source命令,用use進入到某個資料庫,mysql>source d:\test.sql,後面的引數為指令碼檔案。
13、檢視binlog日誌
檢視binlog日誌可用用命令 mysqlbinlog binlog日誌名稱|more
14、general_log
general_log記錄資料庫的任何操作,檢視general_log 的狀態和位置可以用命令show variables like 「general_log%」 ,開啟general_log可以用命令set global general_log=on
二、增量備份
小量的資料庫可以每天進行完整備份,因為這也用不了多少時間,但當資料庫很大時,就不太可能每天進行一次完整備份了,這時候就可以使用增量備份。增量備份的原理就是使用了mysql的binlog志。
1、首先做一次完整備份:
mysqldump -h10.6.208.183 -utest2 -p123 -p3310 --single-transaction --master-data=2 test>test.sql這時候就會得到乙個全備檔案test.sql
在sql檔案中我們會看到:
– change master to master_log_file=『bin-log.000002』, master_log_pos=107;是指備份後所有的更改將會儲存到bin-log.000002二進位制檔案中。
2、在test庫的t_student表中增加兩條記錄,然後執行flush logs命令。這時將會產生乙個新的二進位制日誌檔案bin-log.000003,bin-log.000002則儲存了全備過後的所有更改,既增加記錄的操作也儲存在了bin-log.00002中。
3、再在test庫中的a表中增加兩條記錄,然後誤刪除t_student表和a表。a中增加記錄的操作和刪除表a和t_student的操作都記錄在bin-log.000003中。
三、恢復
1、首先匯入全備資料
mysql -h10.6.208.183 -utest2 -p123 -p3310 < test.sql,也可以直接在mysql命令列下面用source匯入
2、恢復bin-log.000002
mysqlbinlog bin-log.000002 |mysql -h10.6.208.183 -utest2 -p123 -p3310
3、恢復部分 bin-log.000003
在general_log中找到誤刪除的時間點,然後更加對應的時間點到bin-log.000003中找到相應的position點,需要恢復到誤刪除的前面乙個position點。
可以用如下引數來控制binlog的區間
–start-position 開始點 --stop-position 結束點
–start-date 開始時間 --stop-date 結束時間
找到恢復點後,既可以開始恢復。
mysqlbinlog mysql-bin.000003 --stop-position=208 |mysql -h10.6.208.183 -utest2 -p123 -p3310
mysql備份與還原
假設mysql 安裝在c 盤,mysql資料庫的使用者名稱是root,密碼是123456,資料庫名是database name,在d 盤根目錄下面存放備份資料庫,備份資料庫名字為backup20070713.sql。備份資料庫 mysqldump uroot p123456 database nam...
mysql備份與還原
備份檔案 檔案開頭記錄了mysql的版本 備份的主機名和資料庫名。檔案中,以 開頭的的都是sql語言的注釋 不會被執行 但是,以 40101 等形式開頭 的是與mysql有關的注釋。40101 是mysql資料庫的版本號,這裡就表示mysql 4.1.1 如果還原資料時,mysql的版本比4.1.1...
mysql備份與還原
工作中用到了mysql,在這裡做個備忘記錄 1 備份 匯出整個資料庫database mysqldump u root p database dump.sql 只匯出表結構 mysqldump u root p d database dump.sql 匯出單個資料表table mysqldump a...