標籤:style blog http color io os ar 使用 for
我們知道 Mysql讀和寫在效能方面的開銷區別是較大的,一般來說 伺服器頂著20%寫的壓力,另外80%的壓力來自讀,當然這也得看實際業務情況。
這篇文章準備配置一主三從,其實多少從沒什麼關係,一主多從其實是一主一從的延伸,因為從庫之間是沒有任何通訊的,具體使用哪種方式看頻寬負載和具體流量。
Mysql的主從replication原理其實就是Master不斷地寫二進位日誌,Slave去讀取日誌,按照裡面的SQL記錄去執行!如:
Mysql主從配置是與生俱來的功能,只需做簡單配置即可,好了,廢話少說,開始吧!
我的環境是這樣,四台機器都在Vmware上,都使用橋接,用dhcp直接擷取動態IP
Master:192.168.83.61
Slave1:192.168.83.87
Slave2:192.168.83.88
Slave3:192.168.83.89
四台機器的Mysql版本都是Mysql 5.5.40
第一,配置Master
vi /etc/my.cnf
server-id = 61log-bin=mysql-binbinlog-do-db=test //需要同步的資料庫binlog-ignore-db=mysql //被忽略的資料庫binlog-ignore-db=information-schema //被忽略的資料庫
在master上為三台slave添加一個同步帳號
mysql> grant replication slave1 on *.* to 'slave1'@'192.168.83.87' identified by 'slave1';//在slave1上登陸成功mysql> grant replication slave on *.* to 'slave2'@'192.168.83.88' identified by 'slave2';//在slave2上登陸成功<pre name="code" class="plain">mysql> grant replication slave on *.* to 'slave3'@'192.168.83.89' identified by 'slave3';//在slave3上登陸成功
儲存後重啟Mysql服務
service mysqld restart
然後在mysql命令列模式下用
mysql> show master status\G;
*************************** 1. row ***************************File: mysql-bin.000001Position: 106Binlog_Do_DB: testBinlog_Ignore_DB: mysql,information-schema1 row in set (0.00 sec)
第二,在三台Slave上添加配置:
vi /etc/my.cnf
replicate-do-db=test //同步的資料庫replicate-ignore-db=mysql //被忽略的資料庫replicate-ignore-db=information-schema //被忽略的資料庫
server-id看預設有沒有配置 一般是用的 如果沒有加上 一般用IP後斷命名
注意最重要的一點 配置主庫資訊,mysql 5.1開始廢棄了再my.cnf的這種寫法
master-host=192.168.83.61master-user= slave1master-password=slave1master-port=3306
所以5.1之後的版本都應該這樣寫:
change master to master_host='192.168.83.61', master_user='slave1', master_password='slave1';
然後重啟mysql服務
mysql命令列模式下:
mysql>start slave;mysql>show slave status\G;
如果這兩個變數是yes的話 說明主從是在正常啟動並執行
Slave_IO_Running: YesSlave_SQL_Running: Yes
Slave_IO_Running:串連到主庫,並讀取主庫的日誌到本地,產生本地記錄檔
Slave_SQL_Running:讀取本地記錄檔,並執行日誌裡的SQL命令。
向主庫插入資料 發現三個從庫都更新了,that‘s it!
Mysql 5.5.40實現一主多從 One-Master muil-slave