Mysql備份_MySQL

?

1.冷備

冷備份發生在數據庫已經正常關閉的情況下,當正常關閉時會提供給我們一個完整的數據庫。冷備份是將關鍵性文件拷貝到另外位置的一種說法。對于備份數據庫信息而言,冷備份是最快和最安全的方法。

只能提供到“某個時間點”的恢復;不能按表和用戶恢復;工作是需要關閉數據庫;恢復對版本有很高要求

備份速度取決于存儲引擎類型

cp

1.找到數據目錄存放位置

#mysql -uroot -pmypasswd mysql> show variables like ‘%datadir%’;

2.把內存中的數據都刷新到磁盤中,同時鎖定數據表,以保證拷貝過程中不會有新的數據寫入

#mysql -uroot -pmypasswd
mysql> FLUSH TABLES WITH READ LOCK;
mysql> FLUSH LOGS;

3.關閉mysql服務器

#service mysqld stop

4.備份

#tar -zcvf mysql.tar.gz /var/lib/mysql
#cp mysql.tar.gz mysql_bck

注意,對于 Innodb 類型表來說,還需要備份其日志文件,即 ib_logfile* 文件。因為當 Innodb 表損壞時,就可以依靠這些日志文件來恢復。

2.熱備

熱備份是在數據庫運行的情況下,備份數據庫操作的sql語句。

mysqldump

mysqldump 是采用SQL級別的備份機制(邏輯備份),它將數據表導成 SQL 腳本文件,在不同的 MySQL 版本之間升級時相對比較合適,這也是最常用的備份方法

Mysqldump命令的工作原理很簡單,它先查出需要備份的表的結構,再在文本文件中生成一個CREATE語句。然后,將表中的所有記錄轉換為一條INSTERT語句。這些CREATE語句和INSTERT語句都是還原時使用的。還原數據時就可以使用其中的CREATE語句來創建表。使用其中的INSERT語句來還原數據。它可以實現整個服務器備份,也可以實現單個或部分數據庫、單個或部分表、表中的某些行、存儲過程、存儲函數、觸發器的備份;并且能自動記錄備份時刻的二進制日志文件及相應的位置。對于InnoDB存儲引擎來講支持基于單事務模式實現熱備,對于MyISAM則最多支持溫備。

MySQL數據庫壓縮備份

#mysqldump -hhostname -uusername -pmypasswd db_name | gzip > backupfile.sql.gz

僅備份數據庫結構

#mysqldump –no-data –databases db_name1 db_name2 > backupfile.sql

備份服務器上所有數據庫

#mysqldump –all-databases > allbackupfile.sql

還原需要先手動創建一個數據庫 db_name
還原MySQL數據庫的命令

#mysql -hhostname -uusername -pmypasswd db_name

還原壓縮的MySQL數據庫

#gunzip

二進制(binlog)

二進制日志包含了所有更新了數據或者已經潛在更新了數據(例如,沒有匹配任何行的一個DELETE)的所有語句。

啟用binlog。

#vim /etc/my.cnf

 server-id = 1 log-bin = binlog log-bin-index = binlog.index

#service mysqld restart

1.滾動日志復制文件
終止對當前 binlog 的寫入

#mysql -uroot -pmypasswd
mysql> FLUSH LOGS;

復制導出二進制文件

cp mysql-bin.000001 /mysql_bck/mysql-bin.000001

2.mysqlbinlog導出二進制日志文件內容

# mysqlbinlog mysql-bin.000001 > binlog_date +%F.sql

3.恢復

#mysqlbinlog /mysql_bck/binlog.000001 | mysql -uroot -pmypasswd db_name

ps:如果是備份復制系統中的從服務器,還應該備份 master.info 和 relay-log.info 文件。

mysqldump全備 + binlog增備

#mysqldump -uroot -pmypasswd –lock-all-tables –master-data=2 –events
–routines–all-databases > /mysql_bck/database_date +%F.sql
tips:–lock-all-tables表示為所有表施加讀鎖;–master-data=2表示在備份文件中記錄當前二進制日志的位置;–events表示備份數據的同時備份時間調度器代碼;–routines表示備份數據的同時備份存儲過程和存儲函數;–all-databases表示備份所有庫。
# mysqlbinlog –start-position= –stop-position= mysql-bin.000001 > /mysql_bck/binlog_date +%F_%H.sql

http://www.bitsCN.com/article/74613.htm
http://www.bitsCN.com/article/22727.htm

mysqlhotcopy

mysqlhotcopy 是一個 PERL 程序,最初由Tim Bunce編寫。它使用 LOCK TABLES、FLUSH TABLES 和 cp 或 scp 來快速備份數據庫。它是備份數據庫或單個表的最快的途徑,但它只能運行在數據庫文件(包括數據表定義文件、數據文件、索引文件)所在的機器上。mysqlhotcopy 只能用于備份 MyISAM,并且只能運行在 類Unix 和 NetWare 系統上。

安裝

#yum -y install perl perl-DBI
#wget http://file.111cn.net/upload/2013/12/DBD-mysql-3.0002.tar.gz
#tar zxvf DBD-mysql-3.0002.tar.gz
#cd DBD-mysql-3.0002
#perl Makefile.PL –mysql_config=/usr/local/mysql/bin/mysql_config
#make
 #make install

備份

#mysqlhotcopy -uroot -pmypasswd db_name /mysql_bck

? 版權聲明
THE END
喜歡就支持一下吧
點贊7 分享