mysql主從搭建

來源:互聯網
上載者:User

標籤:

一. 主從複製原理

mysql主從同步過程主要依賴bin-log,主要分為以下三個步驟:

       1.   master將改變記錄到二進位日誌(binary log)中(這些記錄叫做二進位日誌事件,binary log events);
       2.    slave將master的binary log events拷貝到它的中繼日誌(relay log);
       3.    slave重做中繼日誌中的事件,將改變反映它自己的資料。

  

      

二.主從搭建過程

1.master授權:在master上建立用於同步的帳號,並授予複製許可權  

  GRANT REPLICATION SLAVE ON *.* TO ‘repl‘@‘10.10.1.1‘ IDENTIFIED BY ‘123456‘;  flush privileges ;2.master開啟bin-log日誌:  my.conf配置舉例:  server-id = 2
  binlog-do-db = test
  binlog-ignore-db = mysql
  replicate-do-db = test
  replicate-ignore-db = mysql
  sync-binlog = 1
  log-salve-updates = 1       重啟master,運行SHOW MASTER STATUS,記錄下binlog的檔案名稱和檔案位置position;3.slave配置server_id和master地址:   (1)my.conf配置:   server_id         = 3
//   log_slave_updates = 1  (設定從庫binlog是否更新的選項,若該從庫為其他slave的master則需要設定,並開啟binlog);   (2)重啟slave,在mysql命令列執行:      CHANGE MASTER TO
    MASTER_HOST=‘10.10.1.2‘,
    MASTER_USER=‘repl‘,
    MASTER_PASSWORD=‘123456‘,
    MASTER_LOG_FILE=‘mysql-bin.000017‘,     //根據主庫情況確定
    MASTER_LOG_POS=868040264                //根據主庫情況確定    (3)執行SHOW SLAVE STATUS語句查看slave的設定是否正確: 

三.主從切換

當主要資料庫宕機的情況下,我們需要將從庫切換為主庫:

  主從切換步驟:
  從庫執行:
  slave stop;
  reset slave;
  //reset master;(主從替換時記錄binlog位置) 
  show master status;
  待主庫恢複後,將從庫資料更新到主庫,並執行:
  slave stop;
  CHANGE MASTER TO ;
  slave start; 

四.排錯與恢複

1.主從狀態查看:

  主庫狀態:show master status\G;

  從庫狀態: show slave status\G;

同步異常時,查看原因,根據具體情況進行操作;

//同步錯誤恢複
change master to master_log_file=‘mysql-bin.000288‘,master_log_pos=627625631;
SET GLOBAL sql_slave_skip_counter = 1;

可參考:http://716737.blog.51cto.com/706737/1302972 

2.mysql負載查詢最佳化:

看看db裡各項status的值.同時看看系統的記憶體 CPU IO等值的情況;

load average: 0.49, 0.52, 0.53
系統負載,即任務隊列的平均長度。 三個數值分別為 1分鐘、5分鐘、15分鐘前到現在的平均值。

排查思路
1. 確定高負載的類型,top命令看負載高是CPU還是IO。
  ps aux 進程情況;
  top 查看記憶體和CPU;
  iostat -d -x 10 3 查看系統IO情況;
    -c 僅顯示CPU統計資訊.與-d選項互斥.
    -d 僅顯示磁碟統計資訊.與-c選項互斥.
    -k 以K為單位顯示每秒的磁碟請求數,預設單位塊.
    -p device | ALL
    與-x選項互斥,用於顯示塊裝置及系統磁碟分割的統計資訊.也可以在-p後指定一個裝置名稱,如:
    # iostat -p hda
    或顯示所有裝置
    # iostat -p ALL
    -t 在輸出資料時,列印搜集資料的時間.
    -V 列印版本號碼和協助資訊.
    -x 輸出擴充資訊.

vmstat 查看系統記憶體使用量情況

2. mysql 下執行查看當前的串連數與執行的sql 語句。
  show processlist 查看當前串連;
  kill QUERY id 負載過大時,強行中斷連線;

3. 檢查慢查詢日誌,可能是慢查詢引起負載高。
記錄慢查詢
  編輯Mysql 設定檔(my.cnf),在[mysqld]欄位添加以下幾行:
  log_slow_queries = /usr/local/mysql/var/slow_queries.log #慢查詢日誌路徑
  long_query_time = 5 #記錄SQL查詢超過5s的語句
  log-queries-not-using-indexes = 1 #記錄沒有使用索引的sql

 

參考連結:

http://716737.blog.51cto.com/706737/1302972 

http://blog.csdn.net/hguisu/article/details/7325124 

 

mysql主從搭建

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.