linux系統mysql主從配置

1、原理php

mysql主從配置的流程大致如圖:html

1)master會將變更記錄到二進制日誌裏面;mysql

2)master有一個I/O線程將二進制日誌發送到slave;linux

3) slave有一個I/O線程把master發送的二進制寫入到relay日誌裏面;sql

4)slave有一個SQL線程,按照relay日誌處理slave的數據;數據庫

 

2、操做步驟vim

按照原理,咱們開啓mysql主從複製,咱們大致須要作如下操做:服務器

1)開啓master的二進制日誌測試

2)開啓slave的二進制日誌spa

3)將slave指向master

4)開始複製

 

3、開啓master二進制日誌

1)編輯mysql的配置文件,使用命令:

vim /etc/my.cnf

2)添加二進制日誌配置,開啓二進制(master-bin只是日誌文件名稱,能夠本身指定)

log-bin=master-bin
server-id=1

注意:server-id是要指定的,否則會報錯,每一臺指定一個惟一標識符

 

4、受權

咱們須要給slave配置一個用戶/密碼的權限

mysql>GRANT REPLICATION SLAVE ON *.* TO '用戶名'@'slave數據庫的IP地址' IDENTIFIED BY '密碼';

這行命令的意思是:容許在某個IP地址的某個用戶某個密碼當前數據庫全部庫全部表進行複製操做

注意:以上配置了權限,咱們須要刷新如下權限使用命令:

 

mysql>flush privileges;

 

或者直接重啓mysql服務:

service mysql restart;

 

5、查看如下master的狀態

其實主要是查看如下master的日誌文件名字,以及文件所在的位置,使用命令:

show master status;

能夠看到相似以下信息:

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

| File              | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |

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

| master-bin.000001 |     1516 |              |                  |                   |

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

 

File: 日誌文件名稱

Position: 日誌所在位置

 

6、開啓slave的二進制日誌

進入slave的服務器

1)編輯mysql的配置文件,使用命令:

vim /etc/my.cnf

2)添加二進制日誌配置,開啓二進制(relay-bin只是日誌文件名稱,能夠本身指定)

log-bin=relay-bin
server-id=2

注意:server-id是要指定的,否則會報錯,每一臺指定一個惟一標識符

 

7、將slave指向master

mysql>CHANGE MASTER TO
>MASTER_HOST='master所在服務器的IP',
>MASTER_USER='master受權的帳號',
>MASTER_PASSWORD='master受權的密碼',
>MASTER_LOG_FILE='master的日誌文件名',
>MASTER_LOG_POS=master的日誌所在位置;

 

8、開始主從複製

在slave上執行

mysql>start slave;

咱們能夠查看slave的運行狀態:

show slave status\G;

能夠看到相似以下內容:

*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: master的IP地址
                  Master_User: root
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: master-bin.000001
          Read_Master_Log_Pos: 1516
               Relay_Log_File: slave-bin.000004
                Relay_Log_Pos: 1117
        Relay_Master_Log_File: master-bin.000001
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
......    

注意:

Slave_IO_Running: YES 表示slave的日誌讀取線程開啓

Slave_SQL_Running: YES 表示SQL執行線程開啓

若是有主從複製有錯誤信息其實也能夠看到

 

9、測試

以上咱們就將主從複製功能設置完畢了,咱們能夠經過在master裏面建立數據庫,或者表,插入數據等來測試一下

 

10、注意點

1)開啓了主從複製,slave庫若是寫入數據的話,可能致使數據回滾從而主從複製線程中斷,能夠經過如下方式解決:

mysql> stop slave;
mysql> set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
mysql> start slave;

2)若是要中止slave的複製可使用命令:

mysql>stop slave;

3)因爲主從複製是基於I/O的日誌,因此會存在必定延時,若是對數據一致性要求很是高的話,簡單的主從複製在實際環境中會存在問題 

 

參考文章:

1)https://www.cnblogs.com/phpstudy2015-6/p/6485819.html#_label0

2)https://www.linuxidc.com/Linux/2014-02/96945.htm

相關文章
相關標籤/搜索