QNAP SQL Service TS-253A備援至TS-212E

擁有兩台NAS的使用者通常會拿一台當作備份,而QNAP並沒有辦法備份SQL Service的資料,
因此要透過MySQL本身提供的備援機制(replication)來達到備份的目的。只要配合好資料網站同步的設定即可達到整個網站備援的效果,一魚兩吃阿。
要示範的機器為QNAP TS-253A (Master)以及 TS-212E(Slave),
目標是將一台 MySQL Server (Master) 的資料同步到另一台 MySQL Server (Slave)。

  1. 確認SQL Server版本,TS-253A為Maria,而TS-212E為MySQL。

    由於MariaDB為MySQL的升級版本,官方不建議使用新的版本Replication至舊的(會有編碼等許多問題,我花了很多時間嘗試解決才發現我的機器版本不一樣),因此如果發現版本不一樣必須將Slave的版本升級至與Master一樣。QPKG有提供MariaDB的Package讓MySQL升級至Maria。
  2. 找到SQL Server的config檔案。
    原生的Config檔案應該會在:

    /etc/config/my.cnf

    而透過升級的config路徑應該會在:

    /usr/local/mysq/my.cnf

    我還不太清處要如何驗證是不是有效的config,如果是正確地改了以後在phpMyAdmin的變數視窗內有一起更新那就是正確的了(要記得restart)。

  3. 修改Config:
        • Master
          #允許上傳內容的大小,原本是1M,對於上傳Slave可能會太小
          max_allowed_packet = 16M
          #Server唯一碼,通常Master是設為1
          server-id=1
          #Log檔案記錄位置,如果已經存在這條設定就代表這台主機已經被設定為Master
          log-bin=mysql-bin
          #需要同步的DB,如果不設定則視為全部同步。
          binlog-do-db = syncdbname
          
        • Slave
          #Server唯一碼,通常Slave隨便設定都可。
          server-id=2
          設定時要注意config的設定有無重複,完成後確認設定已生效。
                      
          

          slave 的 server id 已被更正為2。

  4. 建立Replication User:
    參考MySQL 官方

    mysql> CREATE USER 'repl'@'%.mydomain.com' IDENTIFIED BY 'slavepass';
    mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%.mydomain.com';

     

  5. 啟用Replication前的準備:
    1. Export Master 要備援的DB。
      這裡以psyduck_village為例。
    2. Import to Slave
    3. 設定Slave



      如果設定失敗則要檢查使用者權限以及slave與master通訊是否通暢。
    4. 啟動Replication


      如果Slave_IO_Running以及Slave_SQL_Running都是Yes則表示啟動成功。
    5. 驗證
      最笨的方式就是在Master新增一筆資料,再看看Slave有沒有同步,如果有就代表完成Replication的設定囉。