mysql備份與還原

查看mysql版本號html

select version();mysql

 

mysql備份與還原

 

1、備份經常使用操做基本命令

一、備份命令mysqldump格式sql

   格式:mysqldump -h主機名  -P端口 -u用戶名 -p密碼 –database 數據庫名 > 文件名.sql 數據庫

二、備份MySQL數據庫爲帶刪除表的格式centos

備份MySQL數據庫爲帶刪除表的格式,可以讓該備份覆蓋已有數據庫而不須要手動刪除原有數據庫。服務器

mysqldump  --add-drop-table -uusername -ppassword -database databasename > backupfile.sqlpost

三、直接將MySQL數據庫壓縮備份url

mysqldump -hhostname -uusername -ppassword -database databasename | gzip > backupfile.sql.gzspa

四、備份MySQL數據庫某個(些)表命令行

mysqldump -hhostname -uusername -ppassword databasename specific_table1 specific_table2 > backupfile.sql

五、同時備份多個MySQL數據庫

mysqldump -hhostname -uusername -ppassword –databases databasename1 databasename2 databasename3 > multibackupfile.sql僅僅備六、僅備份份數據庫結構

mysqldump –no-data –databases databasename1 databasename2 databasename3 > structurebackupfile.sql

七、備份服務器上全部數據庫

mysqldump –all-databases > allbackupfile.sql

八、還原MySQL數據庫的命令

mysql -hhostname -uusername -ppassword databasename < backupfile.sql

九、還原壓縮的MySQL數據庫

gunzip < backupfile.sql.gz | mysql -uusername -ppassword databasename

十、將數據庫轉移到新服務器

mysqldump -uusername -ppassword databasename | mysql –host=*.*.*.* -C databasename

十一、--master-data 和--single-transaction

   在mysqldump中使用--master-data=2,會記錄binlog文件和position的信息 。--single-transaction會將隔離級別設置成repeatable-commited

十二、導入數據庫

經常使用source命令,用use進入到某個數據庫,mysql>source d:\test.sql,後面的參數爲腳本文件。

1三、查看binlog日誌

查看binlog日誌可用用命令 mysqlbinlog  binlog日誌名稱|more

 

1四、general_log

General_log記錄數據庫的任何操做,查看general_log 的狀態和位置能夠用命令show variables like "general_log%"  ,開啓general_log能夠用命令set global general_log=on

2、增量備份

小量的數據庫能夠天天進行完整備份,由於這也用不了多少時間,但當數據庫很大時,就不太可能天天進行一次完整備份了,這時候就可使用增量備份。增量備份的原理就是使用了mysql的binlog志。

 

一、首先作一次完整備份:

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二進制文件中。
二、在test庫的t_student表中增長兩條記錄,而後執行flush logs命令。這時將會產生一個新的二進制日誌文件bin-log.000003,bin-log.000002則保存了全備事後的全部更改,既增長記錄的操做也保存在了bin-log.00002中。

三、再在test庫中的a表中增長兩條記錄,而後誤刪除t_student表和a表。a中增長記錄的操做和刪除表a和t_student的操做都記錄在bin-log.000003中。

 

3、恢復

一、首先導入全備數據

mysql -h10.6.208.183 -utest2 -p123  -P3310 < test.sql,也能夠直接在mysql命令行下面用source導入

二、恢復bin-log.000002

   mysqlbinlog bin-log.000002 |mysql -h10.6.208.183 -utest2 -p123  -P3310  

三、恢復部分 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 

相關文章
相關標籤/搜索