mysql主從配置

查看mysql版本mysql

mysql -Vsql


192.168.60.166 主數據庫

192.168.60.167 從vim

1.首先安裝mysql服務器

apt-get install mysql-server網絡


2.修改主服務器的配置文件/etc/mysql/my.cnfide

vim /etc/mysql/my.cnf函數

把下面2行註釋去掉測試

server-id = 1ui

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秒)

相關文章
相關標籤/搜索