91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Mysql主從復制搭建過程

發布時間:2021-08-13 22:47:28 來源:億速云 閱讀:158 作者:chen 欄目:MySQL數據庫

這篇文章主要講解了“Mysql主從復制搭建過程”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Mysql主從復制搭建過程”吧!

一、相關概念

mysql主從復制的官方概念可自行百度,在這里談一下個人理解以及它和DataGuard的區別(理解有誤請指正)。
主庫通過mysql引擎將master庫中執行的所有sql語句轉儲到一個二進制log文件中(binlog),然后將這個binlog通過網絡傳輸到slave端,然后解析binlog中的語句成sql語句,再在備庫中執行,由此可見,mysql的主從復制功能是基于sql語句邏輯的傳輸方法,所以在配置mysql主從復制的過程中,參數一定要優化得當,否則就會出現由于參數限制的問題出現各種各樣的報錯。。。
-和DataGuard的比較
DataGuard(太懶,下面簡稱DG)中文名稱叫做數據衛士,是oracle提供的一種容災解決方案。DG一般稱主庫為primary(對應mysql中的master),備庫叫standby(對應mysql中的slave),它有三種模式,分別是物理standby、邏輯standby和快照standby,我們一般采用物理standby的配置方法,優點是配置簡單,不易出錯,對參數方面優化較少,是通過將歸檔日志通過網絡傳輸到備庫,再通過block-to-block(塊對塊的復制)的方式在備庫端進行應用(注意:這里區別于mysql的是,并不涉及sql語句,采用數據塊復制的方法呈現的),優點是維護簡單,不涉及sql語句的邏輯,適用于絕大多數生產環境。(mysql這方面和DG相比還是略遜一籌,好了廢話不多說,下面開始配置)

二、試驗環境(其實這是個真實的生產環境,已脫敏)

平臺:Hyper-V

OS:CentOS 6.5

DB: Mysql 5.6

三、開始搭建

前提條件

-操作系統以及數據庫安裝完畢
-版本一致
-關閉iptables、selinux

修改master配置文件

-主庫
vi /etc/my.cnf

[mysqld]

log-bin=mysql-bin //開啟binlog功能

server-id=1    //service-id 主從要區別開
-從庫
vi /etc/my.cnf

[mysqld]

log-bin=mysql-bin //開啟binlog功能

server-id=2    //service-id 主從要區別開

建立同步賬號并授權slave

mysql>GRANT REPLICATION SLAVE ON *.* to 'mysync'@'%' identified by 'mysync';

鎖定主庫

mysql>flush tables with read lock;

確定master庫狀態值

mysql>show master status;

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

   | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |

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

   | mysql-bin.000039 |      308 |              |                  |

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

   1 row in set (0.00 sec)

   注:執行完此步驟后不要再操作主服務器MYSQL,防止主服務器狀態值變化 

配置從庫slave

mysql>change master to master_host='xx.xx.xx.xx',master_user='mysync',master_password='mysync',master_log_file='mysql-bin.000089',master_log_pos=592700228;
Mysql>start slave;    //啟動從服務器復制功能

解鎖主庫

mysql>unlock tables;

檢查主從復制狀態

mysql> show slave status \G
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 10.9.40.70
                  Master_User: mysync
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000089
          Read_Master_Log_Pos: 182083231
               Relay_Log_File: mysqld-relay-bin.000100
                Relay_Log_Pos: 182083394
        Relay_Master_Log_File: mysql-bin.000089
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
              Replicate_Do_DB: 
          Replicate_Ignore_DB: 
           Replicate_Do_Table: 
       Replicate_Ignore_Table: 
      Replicate_Wild_Do_Table: 
……………………………………………………
          SQL_Remaining_Delay: NULL
      Slave_SQL_Running_State: Slave has read all relay log; waiting for the slave I/O thread to update it
           Master_Retry_Count: 86400
                  Master_Bind: 
      Last_IO_Error_Timestamp: 
     Last_SQL_Error_Timestamp: 
               Master_SSL_Crl: 
           Master_SSL_Crlpath: 
           Retrieved_Gtid_Set: 
            Executed_Gtid_Set: 
                Auto_Position: 0
1 row in set (0.00 sec)
注:標紅的IO和SQL狀態均為yes,主從配置完成!

四、Troubleshooting

在實際環境過程中,可能會出現各種各樣的異常,在這里就不模擬異常了(實在無法模擬Mysql主從復制搭建過程),主要討論處理方法。

一般主從出現異常之后通過show slave status\G可以看到是IO的問題還是SQL執行的問題,如果IO為NO,請檢查主從之間的網絡是否存在異常或者防火墻是否開啟。
如果是SQL選項為NO,那就要具體問題具體分析了,在Last_SQL_Error中會提示哪個sql語句卡主,注意。。。這里的坑比較多,如果是參數問題導致卡sql,那么優化指定參數文件之后重啟mysql服務應該就沒有問題了,如果從庫有寫入導致不一致的情況只能跳過錯誤了。曾經在某項目遇到過執行一個表的update一直被卡,無論怎么跳過也不行,參數也沒有問題,被坑了好久之后發現原來這個庫連著一個備用的應急環境,里面的job會每隔一段時間進行更新,由于環境不同導致初始值不同所以update必然失敗,但如果是block-to-block的復制方式就會屏蔽這個錯誤。解決方法:將這個庫的應用服務停掉就ok了。
-處理主從報錯的通用方法:
start slave;

set  global sql_slave_skip_counter=1;
start slave;

下面給大家貼一下主從復制報錯然后自動發郵件提醒的腳本

#!/bin/bash


array=($(mysql  -u root -pxxxx  -e "show slave status\G"|grep "Running" |awk '{print $2}'))
if [ "${array[0]}" == "Yes" ] || [ "${array[1]}" == "Yes" ]
          then
            echo "slave is OK" >/var/lib/mysql/backup/script/sync_log.tmp
       else
       echo "mysql主從復制出錯" >/var/lib/mysql/backup/script/sync_log.tmp
mailx -s "mysql_sync_check" tsl-baijin0829@tasly.com < /var/lib/mysql/backup/script/sync_log.tmp
fi

感謝各位的閱讀,以上就是“Mysql主從復制搭建過程”的內容了,經過本文的學習后,相信大家對Mysql主從復制搭建過程這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

呼和浩特市| 枣庄市| 平利县| 长岛县| 南召县| 泸西县| 宁远县| 桃源县| 太仓市| 平乡县| 连南| 通海县| 鹤庆县| 达孜县| 横峰县| 馆陶县| 宣恩县| 镇康县| 家居| 井冈山市| 文成县| 宜州市| 铜梁县| 宁夏| 灌云县| 济南市| 宝丰县| 永顺县| 铜鼓县| 乐至县| 富民县| 新兴县| 巴林左旗| 济宁市| 泗阳县| 垣曲县| 梁河县| 开化县| 南宁市| 彰化县| 安乡县|