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

MySQL主從同步讀寫分離的集群配置

編輯:MySQL綜合教程

MySQL主從同步讀寫分離的集群配置


大型網站為了解決大量的高並發訪問問題,除了在網站實現分布式負載均衡,遠遠不夠。到了數據業務層、數據訪問層,如果還是傳統的數據結構,或者只是單單靠一台服務器支持,如此多的數據庫連接操作,服務器性能再好數據庫必然會崩潰。數據丟失的話,後果更是不堪設想。這時候,我們會考慮如何減少數據庫的連接,一方面采用優秀的代碼框架,進行代碼的優化,采用優秀的數據緩存技術如:memcached等。如果資金充足的話,必然會想到假設服務器集群,來分擔主數據庫的壓力。或者在硬件設備上,投入大量資金,購買高性能的服務器。出名的有f5,硬件負載,軟件負載等。
Ok切入今天的主題,利用MySQL主從配置,實現讀寫分離,減輕數據庫壓力。這種方式,在如今很多網站裡都有使用,也不是什麼新鮮事情,今天總結一下,方便大家學習參考一下。
讀寫分離:
1.多個服務器肯定比一個服務器好。
2.在數據庫寫入的時候,會加入大量的鎖(排它鎖,共享鎖等等),從而影響性能。
3.數據更安全,多數據庫存在備份數據。
搭建環境:
1.搭設一台Master服務器(win7系統64bit,Ip:10.10.2.33)
2.一台台Slave服務器(winXp系統32bit,ip:10.10.2.157)
原理:主服務器(Master)負責網站寫操作,從服務器負責查詢操作。主從服務器利用MySQL的二進制日志文件,實現數據同步。二進制日志由主服務器產生,從服務器響應獲取同步數據庫。
-- 在主服務器上創建為10.10.2.157一個dbadmin用戶,密碼為123456
-- CREATE USER 'dbadmin'@'10.10.2.157' IDENTIFIED BY '123456';
-- 為用戶dbadmin賦從復制權限(如果不想創建用戶的話,可以使用root用戶)。
-- grant replication slave,replication client on *.* to 'slave'@'10.10.2.157' identified by 'dbadmin'; 
-- 鎖定所有表的寫操作
-- flush tables with read lock; 
-- 顯示主服務器的狀態
-- show master status;
-- 更改從服務器從主的二進制文件mysql-test-bin.000002中的8042位置開始同步
-- change master to  master_host='10.10.2.33', master_user='slave', master_password='root', master_log_file='mysql-test-bin.000002', master_log_pos=8042;
-- 開始同步
-- start slave;
-- 顯示同步狀態
-- show slave status;
-- 放開鎖定的所有表
-- unlock tables;
在主服務器上找到my.ini文件(版本不同可能文件名字不同,如:my.cnf)。
mysql中有好幾種日志方式,我們只要啟動二進制日志log-bin就ok。在[mysqld]下面增加下面幾行代碼
server-id=1   //給數據庫服務的唯一標識,一般為大家設置服務器Ip的末尾號
log-bin=master-bin 
log-bin-index=master-bin.index
binlog-do-db=test 需要同步的數據庫 如果有不需要同步的數據庫可以用binlog_ignore_db,兩個都不設置,則全部同步     
auto_increment_offset=1 避免主鍵沖突重新設置自增主鍵的初始值
auto_increment_increment=2 自增主鍵的增量
expire_logs_days=1 設置log過期時間為兩天,只保留兩天的log日志
log_bin_trust_function_creators=1 給函數賦值權限
在從的服務器上也找到my.ini文件。在[mysqld]下面增加下面幾行代碼
server-id=2
relay-log-index=slave-relay-bin.index
relay-log=slave-relay-bin 
auto_increment_offset=2 自增主鍵的初始值
auto_increment_increment=2 自增主鍵的增量

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