mysql主從複製

mysql數據庫的主從複製是通過bin日記來實現的。以下是我在linux上的實現。

 

主機:192.168.1.2

從機:192.168.1.4

 

先分別在主機,從機創建一個數據庫moviecreate database movie;

 

在主機上執行語句:GRANT all ON *.* TO [email protected] IDENTIFIED BY 'password';

創建一個mysql用戶,讓從機可以訪問該主機。

 

修改主機的my.cnf配置文件:

log-bin = /db/mysql/binlog/binlog         //指定bin日記的存放位置爲/db/mysql/binlog

binlog-do-db=movie                    //指定需要在bin日記裏記錄的數據庫是movie

server-id = 1                          //server-id應該與從機不一樣

修改配置文件後記得重新啓動數據庫。

 

修改從機的my.cnf配置文件:

#log-bin = /db/mysql/binlog/binlog        //這句應該註釋掉,因爲從機不用寫bin日記

replicate-do-db=movie                  //只對movie數據庫進行復制

server-id = 2                          //server-id應該與主機不一樣

修改配置文件後記得重新啓動數據庫。

 

通過mysql客戶端登錄從機數據庫,執行如下語句:

CHANGE MASTER TO

MASTER_HOST = '192.168.1.2',

MASTER_PORT = 3306,

MSTER_USER = 'slave',-----------此帳號和密碼就是在主機上建立的賬號和密碼

MASTER_PASSWORD = 'password',

MASTER_LOG_FILE = 'mysql-bin.000009',

MASTER_LOG_POS = 126;

Master_log_filemaster_log_pos是在主機上執行如下語句獲得:

show master status;

 

從機上執行語句:slave start;然後可以通過語句查看從機的狀態:show slave status

應該看到這2個變量的狀態:Slave_IO_Running: YesSlave_SQL_Running: Yes,出現error,則說明配置有錯誤。

 

以上就實現了mysql的主從複製,可以測試一下看看:在主機上建立一個表,然後插入幾條記錄,如果配置成功,那麼在從機上就會出現相同的表和記錄。

 

文章最開始的時候提到這個:

先分別在主機,從機創建一個數據庫moviecreate database movie;

 

這是針對需要新建一個數據庫的情況,其實很多時候,主機可能已經運行一段時間了,這時主機已經有了一定的數據,我們可以把裏面的數據通過mysqldump工具把裏面的數據備份一下:mysqldump -uroot –p –S /tmp/mysql.sock movie > movie.sql;

然後再通過mysql工具將數據導入到從機:mysql –uroot –p –S /tmp/mysql.sock movie < movie.sql,當然在這之前,先要在從機中建立數據庫movie.

這樣,主機,從機都有了相同的數據,之後就可以通過bin日記來同步數據了。

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