CentOS 7 MySQL 5.6 主從複制
-
- 一、準備工作
- 二、配置伺服器
- 三、主從伺服器常用指令
主從複制的作用:
一、準備工作
- 虛拟機上安裝一個
伺服器CentOS 7
Master192.168.25.130
- 在CentOS伺服器上安裝
,并建立一個使用者MySQL 5.6
密碼mysql1
mysql1
- 在用虛拟機克隆一個
,并修改靜态ipCentOS 7
Slave192.168.25.132
二、配置伺服器
-
伺服器給從伺服器賬号Master
授權mysql1
在 Master 的資料庫中建立一個複制賬戶,每個 Slave 使用該賬戶連接配接 Master 進行複制,需要
和replication slave
權限,Master 的連接配接資訊會存儲在文本檔案replication client
檔案中。master.info
## 連接配接`root`給`mysql1`授權 [[email protected] ~]# mysql -uroot -p Enter password: mysql> grant replication slave,replication client on *.* to 'mysql1'@'192.168.25.132' identified by 'mysql1'; mysql>FLUSH PRIVILEGES; mysql> quit;
說明:建立了一個使用者名為 mysql1的使用者,密碼為 mysql1,隻允許在 192.168.25.132 這個 Slave 上登入。
可将192.168.25.132設定為*,表示可以在區域網路内的Slave登入
- 修改(master與slave)my.cnf檔案
vi /etc/my.cnf [mysqld] ## 新增以下内容 server_id=130 ## 伺服器id必須是唯一存在(master 130, slave 132) log-bin=mysql-bin ## 開啟日志檔案
- 重新開機mysql服務
[[email protected] ~]# service mysqld restart
- slave連接配接master
CHANGE MASTER TO MASTER_HOST = '192.168.25.130', #另一台機器的位址 MASTER_PORT = 3306, #另一台機器的端口 MASTER_USER = 'mysql1',#另一台機器上第一步配置設定的使用者名 MASTER_PASSWORD = 'mysql1', #另一台機器上第一步配置設定的密碼 MASTER_LOG_FILE = 'mysql-bin.000001',#另一台機器上執行SHOW MASTER STATUS得到的檔案名 MASTER_LOG_POS = 192; #另一台機器上執行SHOW MASTER STATUS得到的偏移量
- 啟動slave,并檢視slave啟動是否成功啟動
START SLAVE; # 啟動slave
SHOW SLAVE STATUS; # 檢視slave狀态
成功了的狀态 在配置過程中,我遇到兩個問題
Slave_IO_Running為NO
造成原因:由于mysql是通過另一台虛拟機克隆的。
解決方案:修改
中的
[[email protected] ~]# vi /var/lib/mysql/auto.cnf
server-uuid
(區域網路内必須是唯一的)
參考:mysql主從複制之異常解決— Slave_IO_Running: NO 之三大原因
Slave_SQL_Running為NO
造成原因:同步前主從資料庫資料不一緻。
解決方案:将主資料庫備份到從資料庫。
參考:mysql主從同步注意事項
三、主從伺服器常用指令
- 主伺服器相關指令
mysql>show master status; # 查詢master伺服器狀态 mysql>show slave hosts; # 查詢master的slave相關資訊 mysql>show binlog events; # mysql執行改動産生的二進制日志檔案, 兩個作用: #(1)資料回複 #(2) 主從資料庫。用于slave端執行增删改,保持與master同步。 mysql>show binary logs;
- 從伺服器相關指令
mysql>slave start; # 啟動slave mysql>slave stop; #關閉slave mysql>SLAVE STOP IO_THREAD; # 此線程把master段的日志寫到本地 mysql>SLAVE start IO_THREAD; mysql>SLAVE STOP SQL_THREAD; # 此線程把寫到本地的日志應用于資料庫 mysql>SLAVE start SQL_THREAD; mysql>reset slave; mysql>SET GLOBAL SQL_SLAVE_SKIP_COUNTER; mysql>load data from master; mysql>show slave status; //SUPER,REPLICATION CLIENT mysql>CHANGE MASTER TO MASTER_HOST=127.0.0.1, MASTER_PORT=3306,MASTER_USER=user, MASTER_PASSWORD=pwd; //動态改變master資訊