1、mysql 資料庫沒有增量備份的機制,當資料量太大的時候備份是一個很大的問題。還好 mysql 資料庫提供了一種主從備份的機制,其實就是把主要資料庫的所有的資料同時寫到備份資料庫中。實現 mysql 資料庫的熱備份。
2、要想實現雙機的熱備首先要瞭解主從資料庫伺服器的版本的需求。要實現熱備 mysql 的版本都要高於3.2,還有一個基本的原則就是作為從資料庫的資料庫版本可以高於主伺服器資料庫的版本,但是不可以低於主伺服器的資料庫版本。
3、設定主要資料庫伺服器:
a. 首先查看主伺服器的版本是否是支援熱備的版本。然後查看 my.cnf(類 unix)或者 my.ini(windows)中 mysqld 配置塊的配置有沒有 log-bin (記錄資料庫變更記錄檔),因為 mysql 的複製機制是基於日誌的複製機制,所以主伺服器一定要支援變更記錄檔才行。然後設定要寫入日誌的資料庫或者不要寫入日誌的資料庫。這樣只有您感興趣的資料庫的更改才寫入到資料庫的日誌中。
server-id=1 //資料庫的 id 這個應該預設是1就不用改動
log-bin=log_name //記錄檔的名稱,這裡可以制定日誌到別的目錄 如果沒有設定則預設主控件名的一個日誌名稱
binlog-do-db=db_name //記錄日誌的資料庫
binlog-ignore-db=db_name //不記錄日誌的資料庫
以上的如果有多個資料庫用","分割開,然後設定同步資料庫的使用者帳號
mysql> GRANT REPLICATION SLAVE ON *.*
-> TO 'repl'@'%.mydomain.com' IDENTIFIED BY 'slavepass';
4.0.2 以前的版本, 因為不支援 REPLICATION 要使用下面的語句來實現這個功能
mysql> GRANT FILE ON *.*
-> TO 'repl'@'%.mydomain.com' IDENTIFIED BY 'slavepass';
設定好主伺服器的設定檔後重新啟動資料庫
b.鎖定現有的資料庫並備份現在的資料
鎖定資料庫
mysql> FLUSH TABLES WITH READ LOCK;
備份資料庫有兩種辦法一種是直接進入到 mysql 的 data 目錄然後打包你需要備份資料庫的檔案夾,第二種是使用 mysqldump 的方式來備份資料庫但是要加上"--master-data " 這個參數,建議使用第一種方法來備份資料庫
c.查看主伺服器的狀態
mysql> show master status\G;
+---------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+---------------+----------+--------------+------------------+
| mysql-bin.003 | 73 | test | manual,mysql |
+---------------+----------+--------------+------------------+
記錄 File 和 Position 項目的值,以後要用的。
d.然後把資料庫的鎖定開啟
mysql> UNLOCK TABLES;
4、設定從伺服器
a.首先設定資料庫的設定檔
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 //報告錯誤的伺服器