搭建MySQL的Master/Slave架構

openkk 12年前發布 | 22K 次閱讀 MySQL 數據庫服務器

隨著訪問量的增加,對于一些比較耗時的數據庫讀取操作,一般采用將寫入與讀取操作分開來緩解數據庫的壓力,數據庫引擎一般采用Master/Slave架構。雖然這種架構不能從根本上解決數據庫的失敗設計,但對于數據庫的性能優化還是可以起到一些的作用的,特別是對于MySql,讀取的時候,沒有像SQL Server的unlock操作。 

為了搭建一個Master/Slave環境,由于資源有限,就在本機上安裝了兩個MySql服務,一個用于Master,一個用于Slave同步數據。

一、在windows環境下面安裝兩個MySql服務

從mysql項目主頁下載mysql,我下載的是5.1.46版。按照windows的向導一步一步安裝,安排過程不再詳述。

安裝完成之后,一般需要簡單的配置,根據你自己的機器配置,從my-huge.ini、my-innodb-heavy-4G.ini、my-large.ini、my-medium.ini、my-small.ini選擇一個合適的配置文件,將文件復制一份,更名為my.ini,修改里面的基本配置信息。

[mysqld]
basedir=D:\Program Files\MySQL Server 5.1  #MySql安裝路徑
datadir=D:\Data\MySQL\data  #MySql數據庫存放路徑,我不太喜歡將其存放在MySql安裝路徑中default-character-set=gbk  #默認字符集
port=3306  #端口號

打開MS-DOS窗口,進入DOS環境切換到"%MySQL_HOME%\bin"目錄
運行: %MySQL_HOME%\bin>mysqld --install mysql,創建mysql服務(去控制面板->服務中驗證)
啟動服務,進入mysql,show databases;一下,看是否正常運行。

安裝過一個服務之后,就可以安裝第二個服務了。

一、將安裝過的文件,復制一份,復制到合適的位置并更名,以我的為例,D:\Program Files\MySQL Slave 5.1

二、修改端口號,basedir、datadir

三、通過命令行方式進行D:\Program Files\MySQL Slave 5.1\Bin,創建服務:mysqld --install mysql2

四、進入注冊表編輯器,找到 HKEY_LOCAL_MACHINE ->SYSTEM->CurrentControlSet->services->mysql2 .編輯ImagePath為:”"D:\Program Files\MySQL Slave 5.1\bin\mysqld" mysql2”,保存即可。

五、在命令提示符下,net start mysql2,即可啟動服務。

注意:如果你安裝的MySql已經有一些數據了,需要將這些數據也拷貝到第二個MySql服務的datadir中。

創建成功后,啟動mysql2服務,進入mysql2(用相同的密碼),驗證是否創建成功。

二、搭建MySql的Master/Slave架構

在Master(Mysql5.1)的數據庫中建立一個備份帳戶,命令如下:

GRANT REPLICATION SLAVE ON *.* TO 'slave'@'localhost' IDENTIFIED BY '123';  

Master修改如下(my.ini):

[mysqld]

Master start

日志輸入地址 主要同步使用log-bin=D:\Data\log\Master\log-bin.log #同步數據庫

binlog-do-db=renli

主機id 不能和從機id重復

server-id=1 #Master end</pre>

</div>

Slave修改如下(my.ini):

#Slave startlog-bin=D:\Data\log\Slave\log-bin.log #從機id,區別于主機id
server-id=2 #主機ip,供從機連接主機用
master-host=localhost

主機端口

master-port=3306 #剛才為從機復制主機數據新建的帳號 master-user=slave

剛才為從機復制主機數據新建的密碼

master-password=123 #重試間隔時間10秒 master-connect-retry=10 #需要同步的數據庫replicate-do-db=renli

啟用從庫日志,這樣可以進行鏈式復制log-slave-updates

從庫是否只讀,0表示可讀寫,1表示只讀read-only=1 #Slave end</pre>

</div>

在Master上面可以通過show master status \G;查看當前Master的狀態
在Slave上面可以通過show slave status \G;查看當前slave的狀態

請避免數據不同步的時候,設置Master/Slave架構。可以通過start slave與stop slave來開啟和關閉同步。

三、MySql其它

看你的mysql現在已提供什么存儲引擎:mysql> show engines; 
看你的mysql當前默認的存儲引擎:mysql> show variables like '%storage_engine%';
你要看某個表用了什么引擎(在顯示結果里參數engine后面的就表示該表當前用的存儲引擎):mysql> show create table 表名; 
鎖表:flush tables with read lock;
原文地址:http://www.cnblogs.com/wildweeds/archive/2010/06/30/mysql_master_slave.html

 本文由用戶 openkk 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!