1. 程式人生 > >微贊微擎V0.8以上版本:【資料庫讀寫分離】實戰教程 [複製連結]

微贊微擎V0.8以上版本:【資料庫讀寫分離】實戰教程 [複製連結]

http://www.efwww.com/forum.php?mod=viewthread&tid=4870

 

馬上註冊,下載更多原始碼,讓你輕鬆玩轉微信公眾平臺。

您需要 登入 才可以下載或檢視,沒有帳號?立即註冊 

x 【MYSQL資料庫主從分離準備】
1、主伺服器資料庫準備
     首先安裝主資料庫:這段內容大家問度娘 
  1.1配置主資料庫my.ini
     
開啟my.ini,在[mysqld]下面新增以下引數    
  • #開啟MYSQL二進位制日誌
  • log-bin=mysql-bin
  • #伺服器ID不能重複
  • server-id=1
  • #需要做備份的資料庫名稱
  • binglog-do-db=
  • #只保留7天的二進位制日誌
  • expire-logs-day=7

複製程式碼
1.2 配置主從複製賬號  登陸mysql控制器設定用於主從複製的獨立賬號 
  • MYSQL>GRANT REPLICATION SLAV<span style="line-height: 1.5;">E ON *.* TO ‘帳號’@’從伺服器IP’ IDENTIFIED BY ‘密碼';</span>

複製程式碼
1.3 重啟MySQL ,讓配置生效.可以通過show master status\G;檢視主資料庫是否配置成功。2、從資料庫的準備及資料同步
2.1 微擎系統關閉站點,備份資料庫。
2.2 在主伺服器設定只讀鎖
  • MYSQL > PlUSH TABLES WITH READ LOCK;

複製程式碼
2.3 通過命令列匯出資料庫以上資料庫匯出方式中也可以通過工具匯出,而後為主資料庫增加只讀鎖,匯出前增加只讀鎖處於資料保真的觀念,但並不是必須。
2.4 將主伺服器的資料庫匯入到從伺服器的資料庫
2.5 解除主資料庫只讀鎖,重新開啟微擎(開啟只讀鎖只是為了匯出資料保真,並不是必須步驟)

  • MYSQL > UNLOCK TABLES

複製程式碼
2.6 配置從資料庫my.ini (如果是win系統則是my.cnf)(主從資料系統可以混合,且主從資料庫支援多臺,以此實現分散式資料管理)
      開啟my.ini,在[mysqld]下面新增以下引數
  • #伺服器ID不可重複
  • server-id=2
  • #主資料庫的埠
  • master-port=3306
  • #需要做複製的資料庫名
  • replicate-do-db=
  • #不需要複製的表,一般session表可以跳過
  • relicate-ignore-table=
  • #自動跳過的錯誤程式碼,以防複製被中斷
  • slave-skip-errors=1032,1062,126,1114,1146,1048,1396

複製程式碼
2.7 重啟從資料庫,設定生效

2.8 登入從資料庫的MySQL命令列,執行:

  • change master to master_host=’主伺服器IP’, master_user=’主伺服器賬號’, master_password=’主伺服器密碼’, master_log_file=’file的值’, master_log_pos=position的值;

複製程式碼

//設定連線資訊,file及position的值是之前記錄下來(在主伺服器上通過show master status\G;),position的值沒有單引號,其他的值要單引號

2.9 啟動從庫連線,檢視從庫狀態,新增主資料庫賬號


start slave; //啟動從庫連線


show slave status\G; //檢視連線情況

再次開啟從資料庫的my.ini,在[mysqld]下面新增以下引數

  • #主資料庫的IP
  • master-host=
  • #主資料庫主從複製賬號
  • master-user=
  • #主資料主從複製密碼
  • master-password=

複製程式碼

重啟生效,再主資料隨意增加資料,檢視從資料庫備份資訊是否正常,如正常則主從複製已經完成。如不正常,檢視前面分步驟是否有不正常或者引數是否缺少標的

3 微擎config.php配置檔案設定

3.1開啟主從複製開關,在config.php上增加一條

  • $config['db']['slave_status'] = 1; //0代表未開啟

複製程式碼

3.2 配置主從或多組資料庫資訊(從資料庫增加只讀引數)

  • $config['db']['1']['host'] = '127.0.0.1';
  • $config['db']['1']['username'] = '';
  • $config['db']['1']['password'] = '';
  • $config['db']['1']['port'] = '3306';
  • $config['db']['1']['database'] = '主資料庫名';

複製程式碼

3.3 配置從資料庫禁用表名

在從資料配置中有幾個表名可以禁用掉,只從主資料庫讀取

  • #禁止從從資料庫讀寫的表名,表名之間用,分隔
  • $config['db']['common']['slave_excpet_table']=' '; //此引數要加在從資料庫的配置記錄下

複製程式碼

寫在後面,整理,基本配置如上,不是所有的環境都是如此配置,這個按照我們自己運營系統的情況所寫,對微擎原始碼多處都有修改,各位小夥伴按照自己實際生產環境走。

另外微擎的配置檔案只有一個,其實如果分離從主配置和從配置也是可以的,當然要修改一下程式碼。