Mysql主從架構
阿新 • • 發佈:2021-02-09
# Mysql主從架構
## 1. 克隆虛擬機器
> **克隆的虛擬機器的網路適配,使得虛擬機器可以進入區域網**
>
> * **vi /etc/sysconfig/network-scripts/ifcfg-eth0**
> * **刪除 HWADDR所在行**
> **UUID所在行**
> * **將/etc/udev/rules.d/目錄中的**
> **70-persistent-net.rules檔案刪除**
> * **重啟虛擬機器:reboot**
## 2. 兩臺主機,各自安裝mysql
> **參考之前的mysql安裝過程即可.**
>
> **一臺做主機,一臺做從機。**
## 3. 搭建資料庫
> **主機和從機上的庫名一致**
## 4. 配置"主機"
### 4.1 配置
> **找到 `/etc/my.cnf`**
> **在[mysqld]下配置:**
```properties
server-id=9 // id
log-bin=zhj-bin // 二進位制日誌檔案的名稱,有此配置即為“主機”
binlog-do-db=db9 // 要記錄二進位制日誌的資料庫,可以有多個,如下
binlog-do-db=db10
binlog-do-db=db11
binlog_format=MIXED // 相容 日誌和read-commit
expire_logs_days=10 // 日誌超時時間
```
### 4.2 重啟主機
> **重啟主機:service mysqld restart**
### 4.3 檢視主機狀態
> **檢視主機狀態:**
```mysql
mysql>show master status;
*記錄下file欄位值,和position欄位值,要告知給從機
```
## 5. 配置"從機"
### 5.1 配置
> **找到 `/etc/my.cnf`**
> **在[mysqld]下配置:**
```properties
server-id=10
replicate-do-db=db9 #要複製的哪個庫
master-connect-retry=60 #60s後重連主機
```
### 5.2 同步資料
> **同步主從資料**
>
> `如果主機已經有資料,則需要將資料同步到從機`
```mysql
#主機匯出資料庫db9中的資料:
[root@zhj ~]# mysqldump -u root -h 192.168.1.66 -p db9 > /root/hh.sql (之後輸入密碼即可)
```
```mysql
#從機登入mysql,並選擇資料庫db9,然後執行如下:
mysql> use db9;
mysql> source /root/hh.sql;
```
### 5.3 重啟從機
> **重啟從機**
```sh
[root@zhj ~]# service mysqld restart
```
### 5.4 主從同步
```mysql
[root@zhj ~]# mysql -u root -p111111 # 登入mysql
mysql> slave stop; #停止slave同步程序
mysql> change master to master_host='192.168.1.66',master_user='root'
,master_password='123',master_log_file='zhj-bin.000001',master_log_pos=106;
mysql> slave start; #開啟slave同步程序
```
### 5.5 檢視從機狀態
```mysql
mysql> SHOW SLAVE STATUS\G #檢視slave同步資訊(G後不要加分號)
```
> **注意檢視:**
> `Slave_IO_Running: Yes`
> `Slave_SQL_Running: Yes`
> **以上這兩個引數的值為Yes,即說明配置成功!**
##6. 細節
> **mysql的bin-log和read-commit有衝突**
>
> **需要在主機的my.cnf的[mysqld]中配置:**
>
> `binlog_format=mixed //