在咱們平常工做場景,首先要作到架構無單點隱患,其次在優化【安全、性能、高可用、高併發等】,Mysql這款關係型數據庫穩定、高效,因此使用普遍,若是企業架構是1主多從,那若是Mysql主庫宕機,如何解決?html
1)硬件問題,(服務器、ecs、虛擬主機等等)宕機mysql
2)service問題,Mysql宕機,服務異常,端口異常等sql
硬件問題咱們能夠查看IDC巡檢記錄,或經過遠程控制卡查看硬件運行狀態,根據事實狀況就行硬件故障報修進行處理,恢復業務步驟:數據庫
1)查看報警信息,確認業務是否收到影響,必要時切從庫進行數據交互 2)IDC詢問排查 3)確認硬件故障,短期沒法修復開Case處理 4)通知部門領導,處理進度,並實時記錄 5)事件處理完成後,擬寫故障報告,會議通報。
1)首先要作的就是判斷是否影響業務,是否須要切庫,保證業務運行時首要任務
2)若是此時須要切從庫,安裝以下步驟進行: vim
1> 先查看MySQL 從庫狀態 show processlist\G ##若是看到兩個狀態,說明此時的從庫和主庫是同步的 =====[若是不一樣步,建議考出binlog進行同步] #state: waiting for master to send event I/O線程 #state:has read all relay log;waiting for the slave I/O thread to update it sql線程 2> 登陸從庫分別查看:【多個從庫 哪一個替代主庫呢??】 cat /data/3306/data/master.info cat /data/3307/data/master.info ##看哪一個從庫的哪一個master.info哪一個更新,就說明哪一個從庫一致性更高,因此此時就肯定最新的庫爲主庫。 選個pos最大的做爲主庫 或利用半同步的功能,直接選擇作實時同步的這個從庫。 3> 確保全部relay log所有更新完畢。 stop slave io_thread;show processlist; [在每一個從庫上執行] ##直到看到has read all relay log;表示從庫更新都執行完畢 4> 登陸從庫 mysql -uroot -p您的密碼 -S /data/3306/mysql.sock #sock路徑根據本身的進行修改 stop slave; reset master; quit; 5> 進入數據庫數據目錄,刪除master.info relay-log.info cd /data/3306/data/master rm -f master.info relay-log.info ## 檢查受權表,相似read-only參數 6> 3306 提高從庫爲主庫 vim /data/3306/my.cnf 開啓: log-bin =/data/3306/mysql-bin ## //若是存在log-slave-updates read-only等參數必定要註釋掉。 /data/3306/mysql stop /data/3306/mysql start
7> 若是主庫服務器沒down,須要去主庫拉取bin-log補全提高主庫的從庫 8> 其它從庫操做 【指向新的master】 已檢查(同步user rep均存在) 登陸從庫 stop slave; change master to master_host='192.168.1.32'; //若是不一樣步,就指定位置點 start slave; show slave status\G;
以上就是關於數據庫如何快速回復業務的介紹,若是你們有更好的方法能夠告訴我,下面是集中數據庫高可用方案:安全
方法不少,就看您如何選擇。
一、mha必須是0.56版本才支持GTID 二、阿里雲ECS不支持浮動IP 阿里雲HaVIP禁用 ##要注意:阿里雲的上ECS服務器跟咱們本身的虛擬機不同,它不支持浮動IP的 三、阿里雲服務器上keepalived只能設置單播 四、keepalived配置文件里加腳本判斷mysql是否啓動須要首尾寫好配置文件
阿里雲工單反饋截圖
服務器