linux系統mysql主從配置


一、原理

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

1)master會將變動記錄到二進制日志里面;

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

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

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

 

二、操作步驟

按照原理,我們開啟mysql主從復制,我們大體需要做以下操作:

1)開啟master的二進制日志

2)開啟slave的二進制日志

3)將slave指向master

4)開始復制

 

三、開啟master二進制日志

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

vim /etc/my.cnf

2)添加二進制日志配置,開啟二進制(master-bin只是日志文件名稱,可以自己指定)

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

注意:server-id是要指定的,不然會報錯,每一台指定一個唯一標識符

 

四、授權

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

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

這行命令的意思是:允許在某個IP地址的某個用戶某個密碼當前數據庫所有庫所有表進行復制操作

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

 

mysql>flush privileges;

 

或者直接重啟mysql服務:

service mysql restart;

 

五、查看以下master的狀態

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

show master status;

可以看到類似如下信息:

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

| File              | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |

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

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

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

 

File: 日志文件名稱

Position: 日志所在位置

 

六、開啟slave的二進制日志

進入slave的服務器

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

vim /etc/my.cnf

2)添加二進制日志配置,開啟二進制(relay-bin只是日志文件名稱,可以自己指定)

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

注意:server-id是要指定的,不然會報錯,每一台指定一個唯一標識符

 

七、將slave指向master

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

 

八、開始主從復制

在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執行線程開啟

如果有主從復制有錯誤信息其實也可以看到

 

九、測試

以上我們就將主從復制功能設置完畢了,我們可以通過在master里面創建數據庫,或者表,插入數據等來測試一下

 

十、注意點

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM