服務(wù)器Linux系統(tǒng)配置mysql數(shù)據(jù)庫主從自動備份

服務(wù)器Linux系統(tǒng)配置mysql數(shù)據(jù)庫主從自動備份
當(dāng)數(shù)據(jù)內(nèi)容越來越多的時候,數(shù)據(jù)庫也變得越來越大了。如果不小心誤刪了,或者被黑主機(jī)了,那就什么都沒有了。所以數(shù)據(jù)庫的數(shù)據(jù)怎么能讓它不丟失做到萬無一失變得尤為重要!
我是艾西,今天跟大家聊聊服務(wù)器數(shù)據(jù)庫數(shù)據(jù)怎么設(shè)置自動備份? ? ? ?
備份方式為主從:
即一臺服務(wù)器作為主服務(wù)器,另外一臺服務(wù)器作為備份服務(wù)器,當(dāng)主服務(wù)器故障時,可以通過備份服務(wù)器來接管/恢復(fù)。
數(shù)據(jù)庫主備備份的原理:
MySQL主服務(wù)器從又叫做Replication、AB復(fù)制。簡單講就是A和B兩臺機(jī)器做主從后,在A上寫數(shù)據(jù),另外一臺B也會跟著寫數(shù)據(jù),兩者數(shù)據(jù)實時同步的
MySQL主服務(wù)器從是基于binlog的,主上須開啟binlog才能進(jìn)行主從。 主從過程大致有3個步驟?
1)主服務(wù)器將更改操作記錄到binlog里?
2)從將主服務(wù)器的binlog事件(sql語句)同步到從本機(jī)上并記錄在relaylog里?
3)從根據(jù)relaylog里面的sql語句按順序執(zhí)行
主服務(wù)器有一個log dump線程,用來和從的I/O線程傳遞binlog
從上有兩個線程,其中I/O線程用來同步主服務(wù)器的binlog并生成relaylog,另外一個SQL線程用來把relaylog里面的sql語句執(zhí)行一遍
兩種情況:一種是做備份用,一種是作為讀用
?

如上圖,簡單的說就是master將數(shù)據(jù)庫的改變寫入二進(jìn)制日志,slave同步這些二進(jìn)制日志,并根據(jù)這些二進(jìn)制日志進(jìn)行數(shù)據(jù)操作。
環(huán)境配置:
本次配置的環(huán)境為:centos7,使用LNMP1.4安裝的Mysql5.5,主服務(wù)器為馳網(wǎng)服務(wù)器(下面簡稱主服務(wù)器),從服務(wù)器為馳網(wǎng)云服務(wù)器(下面簡稱從服務(wù)器),現(xiàn)在需要將主服務(wù)器中名為img的數(shù)據(jù)庫做主從同步,自動同步到從服務(wù)器上。
準(zhǔn)備工具:xshell?(用于遠(yuǎn)程服務(wù)器)
一、復(fù)制數(shù)據(jù)庫
1.首先要將主服務(wù)器的數(shù)據(jù)庫復(fù)制到從服務(wù)器中。
用xshell連接主服務(wù)器,導(dǎo)出數(shù)據(jù)庫:
mysqldump?-uroot?-p?img?>/root/img.sql---輸入數(shù)據(jù)庫密碼---
然后ls看下,可以看到一個 img.sql的文件。
2.用xshell連接從服務(wù)器,使用sftp命令遠(yuǎn)程到主服務(wù)器(有提示輸入yes):
sftp?root@主服務(wù)器IP地址---輸入ssh密碼
cd?/root
然后ls看下,可以看到主服務(wù)器的目錄,里面有個img.sql的文件,執(zhí)行:
get?img.sql
這樣數(shù)據(jù)庫文件就被復(fù)制到從服務(wù)器上了。 exit 退出sftp。
3.接下來在從服務(wù)器上建立一個名為img的數(shù)據(jù)庫,排序規(guī)則設(shè)為uft8
mysql?-uroot?-p---輸入數(shù)據(jù)庫密碼---
create?database?img;use?img;set?names?utf8;
source?img.sql
這樣就成功導(dǎo)入了,exit退出回到linux命令行。
二、主服務(wù)器配置
1.切回主服務(wù)器,用vim 編輯 /etc下的my.cnf,如圖
?

這里主要配置的是server-id和log-bin。server-id用于區(qū)分不同主機(jī)上的數(shù)據(jù)庫,log-bin是二進(jìn)制文件的名字(可以隨意命名)。同時,為了保證只同步需要的數(shù)據(jù)庫,我們需要加上:
binlog-do-db=img
binlog-ignore-db=mysql
?
然后 :wq 保存退出,重啟mysql:
service?mysql?restart
?

2.連接數(shù)據(jù)庫進(jìn)行如下操作:
mysql?-uroot?-p?img---輸入數(shù)據(jù)庫密碼---
?
以下為修改數(shù)據(jù)庫連接權(quán)限
?
grant?all?privileges?on?.?to?'root'@'%'?identified?by?'自定義密碼';
flush?privileges;
?
下面為顯示bin-log文件名和位置
?
show?master?status;
執(zhí)行完最后一條后我們可以看到:
?

記下紅框處的文件名和數(shù)字。
三、從服務(wù)器配置
1.連接到從服務(wù)器,用vim修改/etc下的my.cnf文件,把server-id改為2。
重啟mysql服務(wù):
service?mysql?restart
2.連接數(shù)據(jù)庫,配置從數(shù)據(jù)庫:
mysql?-uroot?-p---輸入數(shù)據(jù)庫密碼---
stop?slave;
change?master?to
master_user='root',
master_password='你設(shè)置的自定義密碼',
master_host='主服務(wù)器地址',
master_log_file='mysql-bin.000011',???#記下的上圖紅框的文件名
master_log_pos=255;???#記下的上圖紅框的位置
start?slave;
show?slave?status\G???#查看是否安裝成功
如圖,這兩個是YES就成功了
?

四、其他說明
現(xiàn)在只要主服務(wù)器上的數(shù)據(jù)庫有變動,從服務(wù)器上也會時時變動,達(dá)到了數(shù)據(jù)庫異地容災(zāi)備份的功能。如果需要多服務(wù)器備份,那么可以把多個服務(wù)器中my.cnf中的server_id修改為不同,并按以上教程重新配置一遍,每個服務(wù)器的數(shù)據(jù)庫可做主服務(wù)器也可以做從服務(wù)器。
如要同步多個數(shù)據(jù)庫,可在主服務(wù)器的my.cnf 中,添加多條?binlog-do-db,指向多個數(shù)據(jù)庫。
?
總結(jié):
備份數(shù)據(jù)庫是非常重要的,通過定期備份可以避免因為意外刪除或者系統(tǒng)故障等情況導(dǎo)致數(shù)據(jù)的丟失。
MySQL 自帶的 mysqldump 和 MySQLdump.exe 可以幫助我們實現(xiàn)基本的備份,使用計劃任務(wù)可以自動備份我們需要的數(shù)據(jù)。
如果你需要更加定制化的備份選項,那么使用腳本語言編寫備份腳本或者使用第三方工具會更加合適。
無論你選擇哪種方法,在備份數(shù)據(jù)之前,請確保你已經(jīng)仔細(xì)檢查過自動備份選項,避免出現(xiàn)不必要的數(shù)據(jù)丟失問題。
今天的分享就到這里啦,我是馳網(wǎng)艾西希望對需要的小伙伴有幫助我們下期見
?
?