天天看點

mysql 主從複制配置全過程簡介配置過程

簡介

一個伺服器上執行過的sql語句在别的伺服器上也重複執行一遍,這樣隻要兩個資料庫的初态是一樣的,那麼它們就能一直同步。

當然這種複制和重複都是mysql自動實作的,我們隻需要配置即可。 

對于一個mysql伺服器, 一般有兩個線程來負責複制和被複制。當開啟複制之後。 

1. 作為主伺服器Master,  會把自己的每一次改動都記錄到 二進制日志 Binarylog 中。 (從伺服器會負責來讀取這個log, 然後在自己那裡再執行一遍。) 

2. 作為從伺服器Slave, 會用master上的賬号登陸到 master上, 讀取master的Binarylog,  寫入到自己的中繼日志 Relaylog, 然後自己的sql線程會負責讀取這個中繼日志,并執行一遍。  到這裡主伺服器上的更改就同步到從伺服器上了。 

配置過程

伺服器資訊

示例:

主伺服器IP:  192.168.1.221    資料庫賬号: root/123456     資料庫名: healthcare

從伺服器IP:  192.168.1.209    資料庫賬号: root/123456     資料庫名: healthcare

主伺服器(master)配置

首先要保證從伺服器對主伺服器資料庫的通路,即開啟MySQL的遠端通路。

修改master的資料庫配置檔案,預設配置檔案在 /etc/my.cnf,打開之後在[mysqld]之後加入以下條目:

# 啟用二進制日志 Enable binary log

log_bin = mysql-bin

#伺服器唯一ID,預設是1,一般取IP最後一段

server-id = 111

#指定索引檔案

log-bin-index=mysql-bin.index

#控制何時将日志寫入硬碟,0由作業系統決定;1事務結束時

sync_binlog=1

#bin-log日志檔案格式,設定為MIXED可以防止主鍵重複。

binlog_format=mixed

#需要同步的資料庫名  多個庫以逗号分隔

binlog-do-db = healthcare

#不需要同步的資料庫名

binlog-ignore-db = mysql

binlog-ignore-db = performance_schema

binlog-ignore-db = information_schema

#若涉及及同步函數或者存儲過程需要配置,否則主備會産生異常不能同步  

log_bin_trust_function_creators=TRUE

修改my.cnf後重新開機mysql服務.

#service mysql restart

建立同步賬号:

mysql> grant replication slave on *.* to [email protected] identified by '123456';

mysql> flush privileges;

mysql> show master status;

mysql 主從複制配置全過程簡介配置過程

記錄一下file(檔案名)和position(位置).

從伺服器(slave)配置

修改slave的資料庫配置檔案,預設配置檔案在 /etc/my.cnf,打開之後在[mysqld]之後加入以下條目:

log-bin=mysql-bin   

server-id=17

relay-log-index = slave-relay-bin.index

relay-log = slave-relay-bin

sync_master_info = 1

sync_relay_log = 1

sync_relay_log_info = 1

配置後重新開機mysql服務

#service mysql restart

配置連接配接主庫

#mysql -uroot -p123456

mysql>

change master to master_host='172.16.0.10',master_user='slave',master_password='fbtslave20190220', master_log_file='mysql-bin.000003',master_log_pos=120;

開始同步:

mysql> start slave;

檢視狀态:

mysql> show slave status\G;

mysql 主從複制配置全過程簡介配置過程
mysql 主從複制配置全過程簡介配置過程

正常狀态:

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

如果Slave_IO_Running一直處于連接配接中,查詢原因可以從:網絡不通,密碼不對,position不對查找.

測試是否同步

這裡主要是測試一下主伺服器修改一條記錄後,看看主從伺服器的資料是否已經同步

主伺服器:

#mysq -uroot -p123456

Mysql>select id,mobile,real_name from tb_member where id = 9;

從伺服器:

#mysq -uroot -p123456

Mysql>select id,mobile,real_name from tb_member where id = 9;

主伺服器:

Mysql> update tb_member set real_name = 'demo_456' where id = 9;

Mysql>select id,mobile,real_name from tb_member where id = 9;

從伺服器:

Mysql>select id,mobile,real_name from tb_member where id = 9;

繼續閱讀