Mysql集羣講解(五) 多主多從環境搭建

Mysql集羣講解(五) 多主多從環境搭建mysql

 

A:概述:sql

 一主多從,能夠緩解讀的壓力,可是一旦主宕機了,就不能寫了;緩存

因此咱們能夠採用雙主雙從架構安全

   

  架構規劃:服務器

主master 3307 ---> 從slave 3309 架構

主master 3308 ---> 從slave 3310socket

3307 <---> 3308 互爲主從ide

2個寫節點,每一個寫節點下又是2個讀節點;post

 

 

 

 

B:文件配置:命令行

一、配置每一臺MySQL服務器的配置文件my.cnf

[client]

port        = 3307

socket      = /usr/local/mysql-5.7.18/data/3307/mysql.sock

default-character-set=utf8

 

[mysqld]

port    = 3307

socket  = /usr/local/mysql-5.7.18/data/3307/mysql.sock

datadir = /usr/local/mysql-5.7.18/data/3307

log-error = /usr/local/mysql-5.7.18/data/3307/error.log

pid-file = /usr/local/mysql-5.7.18/data/3307/mysql.pid

 

character-set-server=utf8

lower_case_table_names=1

autocommit = 1

 

其餘的 3308 3309 3310 只須要修改端口號便可

 

二、與一主多從同樣,全部節點配置文件加上binlog配置

      3307配置:

log-bin=mysql-bin

server-id=3307

3308配置:

log-bin=mysql-bin

server-id=3308

3309配置:

 server-id=3309

                  3310配置:

server-id=3310

              注意:這裏咱們是把3307 3308 互爲主(主從)

log-bin=mysql-bin

server-id=實例的端口(server-id要惟一)

三、第一臺主服務器3307的my.cnf文件增長以下配置:(Master 3307)

   auto_increment_increment=2

auto_increment_offset=1

log-slave-updates

sync_binlog=1

四、第二臺主服務器3308的my.cnf文件增長以下配置:(Master 3308)

auto_increment_increment=2

auto_increment_offset=2

log-slave-updates

sync_binlog=1

 

C:配置項說明:

auto_increment_increment,控制主鍵自增的自增步長,用於防止Master與Master之間複製出現重複自增字段值,一般auto_increment_increment=n,有多少臺主服務器,n 就設置爲多少;

auto_increment_offset=1設置自增起始值,這裏設置爲1,這樣Master的auto_increment字段產生的數值是:1, 3, 5, 7, …等奇數ID

 

注意auto_increment_offset的設置,不一樣的master設置不該該同樣,不然就容易引發主鍵衝突,好比master1的offset=1,則master2的offset=2,master3的offset=3

 

在雙主模式中,log-slave-updates 配置項必定要配置,不然在master1(3307)上進行了更新數據,在master2(3308)和slave1(3309)上會更新,可是在slave2(3310)上不會更新

 

sync_binlog表示每幾回事務提交,MySQL把binlog緩存刷進日誌文件中,默認是0,最安全的是設置爲1;

 

 

 

 

F:主從設置:

     1:啓動服務:

    進入/usr/local/mysql-5.7.18/bin目錄,重啓四個MySQL服務,啓動時指定配置文件啓動:

./mysqld_safe --defaults-file=/usr/local/mysql-5.7.18/data/3307/my.cnf &

./mysqld_safe --defaults-file=/usr/local/mysql-5.7.18/data/3308/my.cnf &

./mysqld_safe --defaults-file=/usr/local/mysql-5.7.18/data/3309/my.cnf &

./mysqld_safe --defaults-file=/usr/local/mysql-5.7.18/data/3310/my.cnf &

           

   二、在兩臺主服務器上建立複製帳號並受權:(330七、3308)

使用端口、主機登陸進入兩臺主MySQL:

./mysql -uroot -p -P3307 -h127.0.0.1

./mysql -uroot -p -P3308 -h127.0.0.1
在主服務器上建立複製數據的帳號並受權:(copy爲名字:建議先按教程寫:熟悉以後隨意更改 123456 是密碼)

grant replication slave on *.* to 'copy'@'%' identified by '123456';

 

三、在兩臺主服務器上中止複製並刷新binlog日誌:(330七、3308)

四、在從服務器上中止複製:(330九、3310)

      在MySQL命令行執行:

stop slave;

reset slave;

reset master;

 

 

五、在主服務器上查看二進制日誌文件和Position值:(330七、3308)

    在MySQL命令行執行:

      即在3307和3308上分別執行:show master status;

 

六、在Slave上設置Master(至關因而4臺都須要設置)

 設置從服務器330八、3309,他們的主均爲3307,即在3308和3309上執行以下操做:

change master to master_host='192.168.91.135',

master_user='copy',

master_password='123456',

master_port=3307,

master_log_file='mysql-bin.000001',

master_log_pos=154;

 

設置從服務器330七、3310,他們的主均爲3308,即在3307和3310上執行以下操做:

change master to master_host='192.168.91.135',

master_user='copy',

master_password='123456',

master_port=3308,

master_log_file='mysql-bin.000001',

master_log_pos=154; 

 

七、在四臺MySQL服務器上執行:start slave; (MySQL命令行執行)

執行後即開始進入主從複製狀態

 

 

雙主雙從驗證:

檢查從服務器複製功能狀態,執行命令:

mysql> show slave status \G

若是Slave_IO_Running和Slave_SQL_Running的值爲Yes,即表示複製功能配置正常;

設置好雙主雙從複製後:

1. 一個主出現問題,能夠切換到另外的主進行寫數據,新主同步數據給它的從;

2. 待問題舊主恢復服務後,新的主會同步數據給它,它再同步數據給本身的從,這樣不會出現數據的不一樣步和服務的不可用。

相關文章
相關標籤/搜索