Mysql即時備份實現方法_Mysql

來源:互聯網
上載者:User

目前成熟的即時備份為雙機(master/slave),是基於同步處理記錄事件來實現,那單機如何?具有增量的備份呢?可以借用雙機的原理,非常簡單,實施步驟如下:
Mysql版本:mysql4.0+

1、vi my.cfg

複製代碼 代碼如下:

[mysqld]
log-update=/home/backup/update #添加該行

2、service mysql restart

會在/home/backup/update00001檔案,內容為資料庫變化的所有SQL(沒有select)

3、每天的全備,mysql4.0+最簡單就是備份data目錄。

複製代碼 代碼如下:

service mysql stop
tar -czf data(日期).tar.gz mysql/data
service mysql start

當mysql啟動時系統會自動在/home/backup/建立update0000*的檔案,那我們可以用該檔案作為當天全備的增量即時備份。

4、資料還原

複製代碼 代碼如下:

service mysql stop
tar -zxvf data(日期).tar.gz mysql/
service mysql start
mysqladmin -u -p /home/backup/update0000*

如想還原昨天、前天的資料只需要找相應的update0000*來還原即可:)

以下是補充:

1、MYSQL資料庫提供了一種主從備份的機制,其實就是把主要資料庫的所有的資料同時寫到備份資料庫裡面,從而實現MYSQL資料庫的即時備份。
2、版本要求,首先要保證主伺服器和從伺服器的MYSQL版本都高於3.2,另外,從資料庫的版本可以高於主伺服器,但不能低於主伺服器。
3、主伺服器設定:
A、先修改MY.INI中有關log-bin的設定,這是記錄資料庫更改的日誌,由於MYSQL的複製機制,是基於日誌的,所以主伺服器必須要支援變更記錄檔才可以。
接著設定要寫入日誌的資料庫,或者不要寫入日誌的資料庫,這是為了告訴MYSQL,那個庫需要備份,哪個不需要。
下面是配置詳情:

server-id=1 //資料庫的id這個應該預設是1就不用改動
log-bin=log_name //記錄檔的名稱,這裡可以制定日誌到別的目錄 如果沒有設定則預設主控件名的一個日誌名稱
binlog-do-db=db_name //記錄日誌的資料庫
binlog-ignore-db=db_name //不記錄日誌的資料庫

上面的binlog-do-db和binlog-ignore-db可以設定成多個資料庫,每個資料庫名稱之間用“,”分割開。
下一步是設定同步資料庫的使用者帳號
mysql> GRANT REPLICATION SLAVE ON *.*
-> TO ‘備份使用者名稱'@'只能從這個IP登入' IDENTIFIED BY ‘備份使用者密碼';

設定好以後,重啟一下資料庫服務。
B、鎖定現有的資料,並將資料備份
資料庫鎖定的命令是:
mysql> FLUSH TABLES WITH READ LOCK;
然後進入mysql的data目錄,然後打包你需要備份的資料庫目錄。
C、現在可以查看主伺服器的狀態了:
命令如下:
mysql> show master status\G;
返回結果會是這樣的
+—————+———-+————–+——————+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+—————+———-+————–+——————+
| mysql-bin.003 | 73 | test | manual,mysql |
+—————+———-+————–+——————+
當然,這個表,顯示了你剛才在MY.INI中寫入的配置。
然後解鎖資料庫:
mysql> UNLOCK TABLES;

4、從伺服器設定
還是和剛才一樣,修改資料庫設定檔,即MY.INI
配置詳情如下:
server-id=n //設定資料庫id預設主伺服器是1可以隨便設定但是如果有多台從伺服器則不能重複。
master-host=db-master.mycompany.com //主伺服器的IP地址或者網域名稱
master-port=3306 //主要資料庫的連接埠號碼
master-user=pertinax //同步資料庫的使用者
master-password=freitag //同步資料庫的密碼
master-connect-retry=60 //如果從伺服器發現主伺服器斷掉,重新串連的時間差
report-host=db-slave.mycompany.com //報告錯誤的伺服器

然後將你剛才打包的資料庫檔案拷貝到你的從資料庫目錄中。
重啟從資料庫伺服器。
然後停止SLAVE的服務

mysql> slave stop; //停止slave的服務

停止之後,還是在mysql提示符下,設定主伺服器的各種參數
命令如下:
mysql> CHANGE MASTER TO
-> MASTER_HOST='master_host_name', //主伺服器的IP地址
-> MASTER_USER='replication_user_name', //同步資料庫的使用者
-> MASTER_PASSWORD='replication_password', //同步資料庫的密碼
-> MASTER_LOG_FILE='recorded_log_file_name', //主伺服器二進位日誌的檔案名稱(前面要求記住的參數)
-> MASTER_LOG_POS=recorded_log_position; //記錄檔的開始位置(前面要求記住的參數)

然後啟動同步資料庫的進程
mysql> slave start;

沒有意外的話基本上到這一步,雙庫同步就已經實現了。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.