程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> mysql主從復制

mysql主從復制

編輯:MySQL綜合教程

mysql主從復制


1、mysql主從復制原理

對於主服務器來講,會不停的吧當前數據庫中產生的信息記錄進二進制日志中,如果服務器端接收到客戶端一個需要改變數據的語句之後,這個數據如果采用的是InnoDB的話,這些數據本身首先被記錄進事務日志,這些會影響數據的語句會被記錄進二進制日志中,而復制講的是,另外一個從服務器上,被動的接受數據,本身並不接受客戶端鏈接進來做任何寫操作,復制是單向的,只能從主服務器到從服務器,因此,從服務器中的數據都是來自於主服務器,主服務是監聽在3306端口上,從服務器啟動了一個客戶端進程,這個進程會向服務器點提供數據服務的端口發起請求,請求讀取二進制日志中的事件,在主服務器點上,mysql主要提供認證服務,同時會啟動一個sqldump線程,這個線程在接收到用戶的請求後,並確保這個用戶具有權限之後,會去讀取二進制日志中的事件,如果客戶端是第一次來請求,那麼這個進程就讀取日志中的第一個事件,讀一個就發送給客戶端一個,從服務的進程在接收到主服務器發行過來的數據之後,會保存在本地的中繼日志,然後再啟動一個具有特殊功能的線程,去中繼之日中讀取事件,讀一行,在本地執行一下,以此類推,最終生成本地的數據庫。mysql的復制時異步的,因此在接收到用戶的請求之後,將結果返回給用戶。並將信息存放在內存中,之後再記錄進二進制文件中,這樣會造成從服務器落後與主服務器,但是這樣也是有好處的,如果你有一個錯誤操作,在這個時間內,立即去從服務器上備份數據就OK,這需要mysql管理員把握。

2、mysql主從復制的實現

[1]首先確保主從服務器上的Mysql版本相同
[2]在主服務器上操作
(1)設置一個從數據庫的賬戶,使用REPLICATION SLAVE賦予權限,如:

 

mysql> GRANT REPLICATION SLAVE ON *.* TO 'slave001'@'192.168.0.99' IDENTIFIED BY '123456';
mysql> FLUSH PRIVILEGES; 
(2)修改主數據庫的配置文件my.cnf,開啟BINLOG,並設置server-id的值,修改之後必須重啟Mysql服務

 

 

log-bin = mysql-bin
server-id=10
(3)之後可以得到主服務器當前二進制日志名和偏移量,這個操作的目的是為了在從數據庫啟動後,從這個點開始進行數據的恢復

 

 

mysql> show master status\G;
(4)將主數據庫數據導入到從服務器,可以將數據庫原始文件拷貝過去,也可以通過導出腳本,然後倒入到從服務器中,導出腳本前,為確保數據一致,需要對主數據庫進行READ LOCK

 

 

mysql> flush tables with read lock;
然後進行數據庫導出

 

 

mysqldump -h127.0.0.1 -p3306 -uroot -p test > /home/ceshi/test.sql
數據備份好之後,需要對主服務器恢復寫錯做

 

 

mysql> unlock tables;

[3]在從服務器上操作
(1)將導出的test.sql導入到從數據庫上。
(2)修改從數據庫的配置文件my.cnf,指定主數據庫的基本信息

 

 

server-id      = 20                
read-only = 1  //開啟只讀模式 
(3)配置從服務器連接主服務器

 

 

mysql> CHANGE MASTER TO MASTER_HOST='192.168.0.98', MASTER_USER='slave001', MASTER_PASSWORD='123456', MASTER_LOG_FILE='mysql-bin.000003', MASTER_LOG_POS=107;
mysql> START SLAVE;
(4)在從服務器進行show salve status驗證

 

 

mysql> SHOW SLAVE STATUS\G
如果Slave_IO_Running或者Slave_SQL_Running表示yes,就代表正常

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved