隨着訪問量的增長,對於一些比較耗時的數據庫讀取操做,通常採用將寫入與讀取操做分開來緩解數據庫的壓力,數據庫引擎通常採用Master/Slave架構。雖然這種架構不能從根本上解決數據庫的失敗設計,但對於數據庫的性能優化仍是能夠起到一些的做用的,特別是對於MySql,讀取的時候,沒有像SQL Server的unlock操做。 html
爲了搭建一個Master/Slave環境,因爲資源有限,就在本機上安裝了兩個MySql服務,一個用於Master,一個用於Slave同步數據。java
從mysql官方網站下載mysql,我下載的是5.1.46版。按照windows的嚮導一步一步安裝,安排過程再也不詳述。mysql
安裝完成以後,通常須要簡單的配置,根據你本身的機器配置,從my-huge.ini、my-innodb-heavy-4G.ini、my-large.ini、my-medium.ini、my-small.ini選擇一個合適的配置文件,將文件複製一份,改名爲my.ini,修改裏面的基本配置信息。sql
[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;一下,看是否正常運行。 數據庫
安裝過一個服務以後,就能夠安裝第二個服務了。windows
1、將安裝過的文件,複製一份,複製到合適的位置並改名,以個人爲例,D:\Program Files\MySQL Slave 5.1性能優化
2、修改端口號,basedir、datadir架構
3、經過命令行方式進行D:\Program Files\MySQL Slave 5.1\Bin,建立服務:mysqld --install mysql2編輯器
4、進入註冊表編輯器,找到 HKEY_LOCAL_MACHINE ->SYSTEM->CurrentControlSet->services->mysql2 .編輯ImagePath爲:」"D:\Program Files\MySQL Slave 5.1\bin\mysqld" mysql2」,保存便可。性能
5、在命令提示符下,net start mysql2,便可啓動服務。
注意:若是你安裝的MySql已經有一些數據了,須要將這些數據也拷貝到第二個MySql服務的datadir中。
建立成功後,啓動mysql2服務,進入mysql2(用相同的密碼),驗證是否建立成功。
在Master(Mysql5.1)的數據庫中創建一個備份賬戶,命令以下:
GRANT REPLICATION SLAVE ON *.* TO 'slave'@'localhost' IDENTIFIED BY '123';
[mysqld] #Master start #日誌輸入地址 主要同步使用log-bin=D:\Data\log\Master\log-bin.log #同步數據庫 binlog-do-db=renli #主機id 不能和從機id重複 server-id=1 #Master end
#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
請避免數據不一樣步的時候,設置Master/Slave架構。能夠經過start slave與stop slave來開啓和關閉同步。
看你的mysql如今已提供什麼存儲引擎:mysql> show engines; 看你的mysql當前默認的存儲引擎:mysql> show variables like '%storage_engine%'; 你要看某個表用了什麼引擎(在顯示結果裏參數engine後面的就表示該表當前用的存儲引擎):mysql> show create table 表名; 鎖表:flush tables with read lock;