MySQL 5.5 Master/Slave 配置
半同步模式其實是作為MySQL5.5的一個plugin實現的,master和slave使用不同的plugin。預設情況下沒有安裝該plugin,官方提供的MySQL Server RPM包預設安裝後,會在/usr/lib(64)/mysql/plugin/下面找到該外掛。安裝完外掛之後,還需要手動設定系統引數以開啟半同步複製模式。
------------------------------------------------------------------------------------------------------------------------------------------------------------------
Master 伺服器:
vi my.cnf
[mysqld]
log-bin=NEW_NAME
server-id=1 #配一個唯一的ID編號,1至32。
#設定要進行或不要進行主從複製的資料庫名,同時也要在 Slave 上設定。
binlog-do-db=資料庫名
binlog-ignore-db=資料庫名
安裝外掛
mysql>install plugin rpl_semi_sync_master soname 'semisync_master.so';
刪除外掛是:uninstall plugin PLUGIN_NAME;
mysql>show status;
Rpl_semi_sync_master_clients 0 ##表示有多少slave設定了半同步模式。
Rpl_semi_sync_master_no_tx 0 ##表示沒有成功接收slave回執的提交次數
Rpl_semi_sync_master_status OFF ##表示當前是非同步模式還是半同步模式,設成ON狀態,set global rpl_semi_sync_master_enabled=1;
mysql> SET GLOBAL rpl_semi_sync_master_timeout=1000; (1s, 預設是 10s)
mysql> grant replication slave on *.* to NEW_NAME@Slave伺服器IP identified by '**';
mysql> flush tables with read lock;
mysql> show master status; #記下現在的日誌檔案位置。
顯示: saturn-bin.002 106
Slave伺服器:
vi my.cnf
[mysqld]
server-id=2 #也是要唯一。
#設定要進行或不要進行主從複製的資料庫名,同時也要在 Master 上設定。
replicate-do-db=資料庫名
replicate-ignore-db=資料庫名
安裝外掛
mysql> install plugin rpl_semi_sync_slave soname ‘semisync_slave.so’;
mysql> change master to master_host='Master伺服器IP',master_user='授權使用者(不可以是root)',master_password='',master_log_file='saturn-bin.002',master_log_pos=106;
設定rpl_semi_sync_slave_enabled =ON,重啟才生效 mysql>slave stop;slave start
檢查設定沒有問題後,Master伺服器:mysql> unlock tables;
mysql>show master status \G #檢視Master狀態
mysql>show slave status \G #檢視Slave狀態
------------------------------------------------------------------------------------------------------------------------------------------------------------------
問題處理記錄:
1、Slave伺服器當機,導致Slave伺服器啟動後 show slave status \G 後提示錯誤
Last_IO_Error: Got fatal error 1236 from master when reading data from binary log: 'binlog truncated in the middle of event'
解決:
Master: show master status \G #記錄 Master 以下資訊
File: mysql-MasterSlave.000006
Position: 174367
Slave: slave stop;
reset slave;
change master to master_host='192.168.1.126',master_user='USER',master_password='PW',master_log_file='mysql-MasterSlave.000006',master_log_pos=174367;
提示:從 Mysql 5.5 開始 Mysql 加入半同步複製,取消了 load data from master 之類的用法,MySQL Slave/Master例項在異常終止恢復之後,MySQL Slave可以處理未完成的或丟棄Master寫如log失敗資料,從而重新從master上獲取源資料,同樣,Master 例項重啟不會使 Slave 丟失資料。
------------------------------------------------------------------------------------------------------------------------------------------------------------------
Master 同步執行緒狀態
以下列出了master的 Binlog Dump 執行緒 State 欄位中最常見的幾種狀態。如果在master上沒有 Binlog Dump 執行緒,那麼同步就沒有在執行。也就是說,沒有slave連線上來。
Sending binlog event to slave
事件是由二進位制日誌構成,一個事件通常由更新語句加上其他資訊。執行緒讀取到一個事件並正傳送到slave上。
Finished reading one binlog; switching to next binlog
讀取完了一個二進位制日誌,正切換到下一個。
Has sent all binlog to slave; waiting for binlog to be updated
已經讀取完全部未完成更新日誌,並且全部都傳送到slave了。它處於空閒狀態,正等待在master上執行新的更新操作以在二進位制日誌中產生新的事件,然後讀取它們。
Waiting to finalize termination
當前執行緒停止了,這個時間很短。
Slave的執行緒狀態
以下列出了slave的I/O執行緒 State 欄位中最常見的幾種狀態。從MySQL 4.1.1開始,這個狀態在執行 SHOW SLAVE STATUS 語句結果的 Slave_IO_State 欄位也會出現。這意味著可以只執行 SHOW SLAVE STATUS 語句就能瞭解到更多的資訊。
Connecting to master
該執行緒證嘗試連線到master上。
Checking master version
確定連線到master後出現的一個短暫的狀態。
Registering slave on master
確定連線到master後出現的一個短暫的狀態。
Requesting binlog dump
確定連線到master後出現的一個短暫的狀態。該執行緒向master傳送一個請求,告訴它要請求的二進位制檔案以及開始位置。
Waiting to reconnect after a failed binlog dump request
如果二進位制日誌轉儲(binary log dump)請求失敗了(由於連線斷開),該執行緒在休眠時進入這個狀態,並定期重連。重連的時間間隔由 --master-connect-retry 選項來指定。
Reconnecting after a failed binlog dump request
該執行緒正嘗試重連到master。
Waiting for master to send event
已經連線到master,正等待它傳送二進位制日誌。如果master閒置時,這個狀態可能會持續較長時間,如果它等待超過 slave_read_timeout 秒,就會發生超時。這時,它就會考慮斷開連線,然後嘗試重連。
Queueing master event to the relay log
已經讀取到一個事件,正把它複製到中繼日誌中以備SQL執行緒處理。
Waiting to reconnect after a failed master event read
讀日誌時發生錯誤(由於連線斷開)。該執行緒在重連之前休眠 master-connect-retry 秒。
Reconnecting after a failed master event read
正嘗試重連到master。當連線確定後,狀態就變成 Waiting for master to send event。
Waiting for the slave SQL thread to free enough relay log space
relay_log_space_limit 的值非零,中繼日誌的大小總和超過這個值了。I/O執行緒等待SQL執行緒先處理中繼日誌然後刪除它們以釋放足夠的空間。
Waiting for slave mutex on exit
當前執行緒停止了,這個時間很短。
Reading event from the relay log
從中繼日誌裡讀到一個事件以備執行。
Has read all relay log; waiting for the slave I/O thread to update it
已經處理完中繼日誌中的全部事件了,正等待I/O執行緒寫入更新的日誌。
Waiting for slave mutex on exit
當前執行緒停止了,這個時間很短。
------------------------------------------------------------------------------------------------------------------------------------------------------------------
附 Last_SQL_Errno 錯誤程式碼說明:
1005:建立表失敗
1006:建立資料庫失敗
1007:資料庫已存在,建立資料庫失敗
1008:資料庫不存在,刪除資料庫失敗
1009:不能刪除資料庫檔案導致刪除資料庫失敗
1010:不能刪除資料目錄導致刪除資料庫失敗
1011:刪除資料庫檔案失敗
1012:不能讀取系統表中的記錄
1020:記錄已被其他使用者修改
1021:硬碟剩餘空間不足,請加大硬碟可用空間
1022:關鍵字重複,更改記錄失敗
1023:關閉時發生錯誤
1024:讀檔案錯誤
1025:更改名字時發生錯誤
1026:寫檔案錯誤
1032:記錄不存在
1036:資料表是隻讀的,不能對它進行修改
1037:系統記憶體不足,請重啟資料庫或重啟伺服器
1038:用於排序的記憶體不足,請增大排序緩衝區
1040:已到達資料庫的最大連線數,請加大資料庫可用連線數
1041:系統記憶體不足
1042:無效的主機名
1043:無效連線
1044:當前使用者沒有訪問資料庫的許可權
1045:不能連線資料庫,使用者名稱或密碼錯誤
1048:欄位不能為空
1049:資料庫不存在
1050:資料表已存在
1051:資料表不存在
1054:欄位不存在
1065:無效的SQL語句,SQL語句為空
1081:不能建立Socket連線
1114:資料表已滿,不能容納任何記錄
1116:開啟的資料表太多
1129:資料庫出現異常,請重啟資料庫
1130:連線資料庫失敗,沒有連線資料庫的許可權
1133:資料庫使用者不存在
1141:當前使用者無權訪問資料庫
1142:當前使用者無權訪問資料表
1143:當前使用者無權訪問資料表中的欄位
1146:資料表不存在
1147:未定義使用者對資料表的訪問許可權
1149:SQL語句語法錯誤
1158:網路錯誤,出現讀錯誤,請檢查網路連線狀況
1159:網路錯誤,讀超時,請檢查網路連線狀況
1160:網路錯誤,出現寫錯誤,請檢查網路連線狀況
1161:網路錯誤,寫超時,請檢查網路連線狀況
1062:欄位值重複,入庫失敗
1169:欄位值重複,更新記錄失敗
1177:開啟資料表失敗
1180:提交事務失敗
1181:回滾事務失敗
1203:當前使用者和資料庫建立的連線已到達資料庫的最大連線數,請增大可用的資料庫連線數或重啟資料庫
1205:加鎖超時
1211:當前使用者沒有建立使用者的許可權
1216:外來鍵約束檢查失敗,更新子表記錄失敗
1217:外來鍵約束檢查失敗,刪除或修改主表記錄失敗
1226:當前使用者使用的資源已超過所允許的資源,請重啟資料庫或重啟伺服器
1227:許可權不足,您無權進行此操作
1235:MySQL版本過低,不具有本功能
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/90618/viewspace-740328/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Mysql Master-slave複製簡單配置記錄MySqlAST
- The slave I/O thread stops because master and slave have equal MySQL server UUIDthreadASTMySqlServerUI
- Mysql 5.6 Master和Slave 主備切換MySqlAST
- MySQL報錯Slave: received end packet from server, apparent master shutdownMySqlServerAPPAST
- Mysqldump實現mysql的master-slave主從複製MySqlAST
- mysql slave 跟進 master 的關鍵狀態指標MySqlAST指標
- CentOS中MySQL5.6 資料庫主從(Master/Slave)同步安裝與配置詳解CentOSMySql資料庫AST
- Setup MariaDB Master/Slave Replication for Docker MariaDBASTDocker
- Innobackupex實現mysql線上搭建master-slave主從複製MySqlAST
- 故障案例:主從同步報錯Fatal error: The slave I/O thread stops because master and slave have equal MySQL server主從同步ErrorthreadASTMySqlServer
- MySQ 資料庫主從同步安裝與配置詳解(Master/Slave)資料庫主從同步AST
- Redis for linux原始碼&叢集(cluster)&主從(master-slave)&哨兵(sentinel)安裝配置RedisLinux原始碼AST
- 資料庫讀寫分離Master-Slave資料庫AST
- MySQL主從複製配置引數 -- logs-slave-updatesMySql
- 分散式資料中的坑(一)Master-Slave架構分散式AST架構
- 使用etcd選舉sdk實踐master/slave故障轉移AST
- 基於Kubernetes構建企業Jenkins master/slave CI/CD平臺JenkinsAST
- MySQL複製跳過錯誤--slave_skip_errors、sql_slave_skip_counter、slave_exec_modeMySqlError
- Centos5.5中安裝Mysql5.5過程分享CentOSMySql
- 實屬無奈!Redis 作者被迫修改 master-slave 架構的描述RedisAST架構
- MYSQL Slave開機啟動指令碼MySql指令碼
- redhat 5.5 配置網路yum源Redhat
- centos7 RPM MySQL5.5CentOSMySql
- MySQL5.7 Master-Master主主搭建for Centos7MySqlASTCentOS
- [MySQL進階之路][No.0002] SHOW SLAVE STATUSMySql
- MySQL複製命令slave被REPLICA命令取代MySql
- Vmware-vSphere 5.5:安裝、配置、管理
- mysql MASTER_POS_WAIT函式MySqlASTAI函式
- 從Mysql slave system lock延遲說開去MySql
- MySQL:關於Wating for Slave workers to free pending events等待MySql
- 故障分析 | MySQL : slave_compressed_protocol 導致 crashMySqlProtocol
- Tomcat5.5 Admin的安裝與配置Tomcat
- 手把手教你寫一個自己的 master-slave 架構的 TCP 伺服器AST架構TCP伺服器
- jenkins slave節點上的job構建記錄 都只會在master伺服器JenkinsAST伺服器
- MySQL5.5升級到MySQL5.7踩坑日記MySql
- zabbix應用-監控mysql slave 主從狀態MySql
- MySQL中slave監控的延遲情況分析MySql
- 1.MongoDB 2.7主從複製(master –> slave)環境基於時間點的恢復MongoDBAST
- 企業環境下MySQL5.5調優MySql