MySQL--數據備份還原以及主從複製

作爲數據庫,爲了數據安全,mysql當然提供了數據備份和數據還原的功能,而且還提供了主從複製的功能,也就是說能搭建數據庫集羣,以下記錄下常用的操作步驟流程;

一. MYSQL的備份

備份相當簡單,使用mysqldump工具就可以實現:

//將指定的數據庫備份
mysqldump -uroot -h host -p123456 庫名 > test.sql  
//將指定的數據表備份
mysqldump -uroot -h host -p123456 庫名 表名> test.sql
//將多個數據庫
mysqldump -uroot -h host -p123456 -datebases 庫名1 庫名2> test.sql  
//備份時鎖定數據庫並且自動flush binlog
mysqldump -uroot -h host -p123456 庫名 -l -F> test.sql  

當然,除了將數據還原爲mysql腳本外,還可以直接備份MySQL存儲在磁盤上的文件,但是通過這種方式轉移數據時,可能會遇到因爲MYSQL版本不同或存儲殷勤不同,導致出現還原失敗的現象,所以這種方式備份不推薦;


二. MYSQL的SQL文件還原

得到sql腳本後,就可以用於數據的恢復還原了:

//登錄mysql-client後,使用source指令:
mysql> source sql文件路徑
//或者使用mysql工具:
#mysql -uroot -p123456 庫名 -v -f < sql文件路徑 //v是顯示信息 f遇到錯誤繼續

三. MYSQL的BINLOG(二進制日誌)數據恢復

使用上述的方式進行數據備份還原可以進行階段性的數據恢復,但是如果遇到突發情況(如不小心刪除表數據),在上一次備份和當前時間點的數據就會丟失。

因此解決的方法也很簡單,就是將mysql數據修改操作(增刪改)的每個步驟用日誌記錄下來,以便以後有跡可循;

mysql常用的日誌方式:二進制日誌(binlog)

1.開啓binlog,在my.ini中,這樣設置:

// log file storage path
log-bin [=path/[filename]] 
// period of binlog(before the period the log will be deleted),disabled if 0
expire_logs_days = 10  
// the max size of every file of binlog, cant set 4096K<x<1G(default)
max_binlog_size = 100M 

2.重啓MySQL使得配置生效,生效後每次進行增刪查改就會寫入binlog

3.查看binlog的內容

#mysqlbinlog --no-defaults --start-position="597" --stop-positon="746" --start-date="2012-01-04 10:00:25" --stop-date="2012-01-04 19:00:25" log文件 | more

4.運行指定binlog以還原數據

mysqlbinlog --no-defaults --stop-position="1017" mysql_bin.000001 | mysql -uroot -p 數據庫名字

四.主從機複製

MySQL提供了主從機機制,允許主機進行讀寫操作,而從機負責讀操作,這樣子就能同時加強了數據的安全性以及訪問的均衡性。

1.主機設置server-id

my.cnf 中[mysqld]寫上:

server-id=1 //注意server-id是mysql集羣中的唯一id

2.主機創建從機訪問賬戶

GRANT REPLICATION SLAVE ON *.* to 'slave_mac'@'%' identified by '123456'

3.主機導出mysql腳本(見“一. MYSQL的備份”)
注意:導出時對mysql進行鎖操作,然後再進行導出,同時查看bin-log的文件和position

4.從機導入主機的mysql腳本(見“二. MYSQL的SQL文件還原”)

5.從機設置server-id

server-id=2 //注意server-id是mysql集羣中的唯一id

6.從機設置主機信息

#mysql
mysql>change master to  
master_host='192.168.145.222',  //主句地址
master_user='slave_mac',
master_password='123456',
master_log_file='mysql-bin.000004', //主機當前bin-log的文件
master_log_pos=308; //主機當前bin-log的文件position

5.從機開啓slave模式

mysql>start slave;

6.從機查看slave狀態

mysql>show slave status;

好了,已經開啓了mysql的主從模式,當操作mysql的主數據庫數據時,從數據庫的數據也會跟着變化。
在實際應用中,從數據只允許讀訪問,這起到了備份數據的同時減輕了主服務器的讀數據壓力,也就起到了均衡訪問和集羣冗餘的作用了。

發佈了67 篇原創文章 · 獲贊 31 · 訪問量 16萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章