mysql主從配置

來源:互聯網
上載者:User

標籤:主從   master   mysql   slave   

查看mysql版本

mysql -V


192.168.60.166 主

192.168.60.167 從

1.首先安裝mysql

apt-get install mysql-server


2.修改主伺服器的設定檔/etc/mysql/my.cnf

vim /etc/mysql/my.cnf

把下面2行注釋去掉

server-id = 1

log_bin                 = /var/log/mysql/mysql-bin.log

bind-address           = 192.168.60.166


service mysql stop

service mysql start

mysql -uroot -p #登入管理mysql

GRANT REPLICATION SLAVE ON *.* to ‘root‘@‘192.168.60.167‘ identified by ‘123456‘;

#授權給從資料庫伺服器192.168.60.167


GRANT ALL ON *.* TO ‘root‘@‘192.168.60.86‘ IDENTIFIED BY ‘123456‘;

flush privileges;

#允許遠端連線MYSQL


show master status; #查詢主要資料庫狀態

+------------------+----------+--------------+------------------+

| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |

+------------------+----------+--------------+------------------+

| mysql-bin.000003 |      106 |              |                  |

+------------------+----------+--------------+------------------+

1 row in set (0.00 sec)


記錄下 FILE 及 Position 的值,在後面進行從伺服器操作的時候需要用到。

xf是如下

+------------------+----------+--------------+------------------+

| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |

+------------------+----------+--------------+------------------+

| mysql-bin.000001 |      106 |              |                  |

+------------------+----------+--------------+------------------+


3.配置從伺服器

修改從伺服器的設定檔/etc/mysql/my.cnf

vim /etc/mysql/my.cnf

將 server-id = 1修改為 server-id = 10,並確保這個ID沒有被別的MySQL服務所使用。

bind-address           = 192.168.1.153

service mysql stop

service mysql start

mysql -uroot -p


change master to

master_host=‘192.168.1.156‘,

master_user=‘rep1‘,

master_password=‘ylmf‘,

master_log_file=‘mysql-bin.000005‘,

master_log_pos=242;

xf如下

mysql> change master to

master_host=‘192.168.60.166‘,

master_user=‘root‘,

master_password=‘123456‘,

master_log_file=‘mysql-bin.000001‘,

master_log_pos=106;


正確執行後啟動Slave同步進程


mysql> START SLAVE; #主從同步檢查

show slave status;

其中Slave_IO_Running 與 Slave_SQL_Running 的值都必須為YES,才表明狀態正常。


GRANT ALL ON *.* TO ‘root‘@‘192.168.60.86‘ IDENTIFIED BY ‘123456‘;

flush privileges;

#允許遠端連線MYSQL


如果主伺服器已經存在應用資料,則在進行主從複製時,需要做以下處理:

(1)主要資料庫進行鎖表操作,不讓資料再進行寫入動作

FLUSH TABLES WITH READ LOCK;


(2)查看主要資料庫狀態

show master status;


(3)記錄下 FILE 及 Position 的值。

將主伺服器的資料檔案(整個/opt/mysql/data目錄)複製到從伺服器,建議通過tar歸檔壓縮後再傳到從伺服器解壓。

(4)取消主要資料庫鎖定

mysql> UNLOCK TABLES;


4.驗證主從複製效果

在主伺服器上建立資料庫first_db

create database first_db;


在主伺服器上建立表first_tb

create table first_tb(id int(3),name char(10));


在主伺服器上的表first_tb中插入記錄

insert into first_tb values (001,‘myself‘);


在從伺服器上查看,所有記錄已複製過來

由此,整個MySQL主從複製的過程就完成了.


##############################################

5.MYSQL讀寫分離Amoeba方式 xf

(MySQL-Proxy方式指令碼配置比較複雜,不容易擴充)

jdk1.5以上

主伺服器:192.168.60.166

從伺服器:192.168.60.167

MySQL-Proxy調度伺服器:192.168.60.168


配置參考:Amoeba搞定mysql主從讀寫分離.htm


Amoeba

http://ncu.dl.sourceforge.net/sourceforge/amoeba/


9. 測試讀寫分離效果

為了清晰的看到讀寫分離的效果,需要暫時關閉MySQL主從複製功能

登陸從資料庫伺服器192.168.60.167 (從),通過命令列登入管理MySQL伺服器

mysql -u root -pylmf 

stop slave;

串連MySQL-Proxy

mysql -uroot -p123456 -P3307 -h192.168.60.168

mysql -uroot -p123456 -h192.168.60.168 -P8066

登陸成功後,在first_db資料的first_tb表中插入兩條記錄

use first_db;

insert into first_tb values (007,‘first‘);

insert into first_tb values (008,‘second‘);

quit


分別登陸到主從資料庫伺服器,對比記錄資訊,首先,檢查主要資料庫伺服器

登入到192.168.1.156主要資料庫伺服器

use first_db;

select * from first_tb;


然後,檢查從資料庫伺服器

登入到192.168.1.153從資料庫伺服器

use first_db;

select * from first_tb;

沒有新記錄存在



由此,我們已經實現了MySQL讀寫分離,目前所有的寫操作都全部在Master主伺服器上,

另外,所有的讀操作都分攤給了其它各個Slave從伺服器上,用來分擔資料庫壓力。


 


調整服務指令碼,重啟mysqld服務

    通過修改start()函數的執行語句,可以調控mysqld服務的啟動選項。例如:

--log-slave-updates=1              #//記錄從庫更新,以便允許鏈式複製

--read-only                        #//將從庫設為唯讀,僅允許從伺服器線程或具有SUPER許可權的使用者執行

--relay-log=mysqld-relay-bin       #//使用固定的中繼記錄檔

--report-host=server205            #//報告給主伺服器的主機名稱或IP地址

--slave_compressed_protocol=1      #//複製過程啟用壓縮,若啟用此項,主、從伺服器都應該添加

--replicate-do-db=mysql            #//僅複製指定的庫,其他庫將被忽略,此選項可設定多條(省略時複製所有庫)

--replicate-do-db=mytestdb

--replicate-ignore-db=test         #//不複製(忽略)指定的庫,此選項也可以設定多條,do和ignore用其中一種就可以了

--skip-slave-start                 #//伺服器啟動時跳過複製,需要手動 SLAVE START

--slave-net-timeout=60             #//當從伺服器網路中斷時,再次重試之前等待的時間(預設為60秒)

--master-connect-retry=60          #//當主伺服器串連丟失時,再次重試之前等待的時間(預設為60秒)


本文出自 “XFICC” 部落格,請務必保留此出處http://xficc.blog.51cto.com/1189288/1562168

mysql主從配置

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.