1. 程式人生 > >MySQL / Redis / MongoDB 讀寫分離設定

MySQL / Redis / MongoDB 讀寫分離設定

資料庫讀寫分離設定

MySQL

  
  # master配置
  server-id=200   # 一般取IP的最後一組數字
  innodb_flush_log_at_trx_commit=2
  sync_binlog=1
  log-bin=mysql-bin-200
  binlog-do-db=  # 同步的資料庫的名稱,全部可以使用 *
  重啟MySQL
  # 客戶端執行命令,授權給 slave
  grant replication slave on *.* to 'zhang'@"IP" identified by '123456';
  show master status;
  ​
  # slave 更改配置
  server-id=201
  innodb_flush_log_at_trx_commit=2
  sync_binlog=1
  log-bin=mysql-bin-201
  ​
  # slave mysql客戶端執行命令
  change master to master_host='10.7.152.77',  # 連線 master的 IP
  master_user='zhang',  # master授權的使用者
  master_password='123456',  # 密碼
  master_log_file='mysql-bin-200.000002',  # master 的日誌位置
  master_log_pos=448;  # master 的 Position
  ​
  start salve;
  show slave status\G; # 檢視狀態

Redis

  • 通過修改conf檔案來配置主從, 一般都是在一臺伺服器上面作為專門的 redis 伺服器

  • 啟動 redis-server redis.conf

  ​
  # master  master.conf
  ​
  port 6000
  requirepass 123456    # 480行
  # redis-server master.conf
  # 測試  redis-benchmark -h IP -p Port -a password
  # 檢視連線
  ​
  # slave  slave.conf  應該配置多個 slave 對master進行讀取
  ​
  port 6001
  slaveof 127.0.0.1 6000
  masterauth 123456  # 對主機的驗證,也是master的密碼
  requirepass 123456  # master設定的密碼
  ​
  # redis-server slave.conf
  ​
  # 配置 sentinel(哨兵,守護程序),當master宕機時,選取 slave 作為master
  # 更該 sentinel.conf檔案(最好將原檔案複製一份進行更改)
  ​
  bind IP # master-IP 即 內網 IP
  port 埠
  sentinel monitor mymaster IP port num # master的公網IP,port,哨兵數,指當有num個哨兵同時監測到master宕機時,開始選舉新的master
  sentinel anth-pass mymaster <password>  # master的 密碼
  sentinel down-after-millisenconds mymaster 3000   # 開始投票的反應時間
  sentinel failover-timeout mymaster 180000   # 設定返回的時間,在規定時間返回可以繼續作為master
  ​
  # 啟動哨兵,哨兵也會宕機,應該多啟動幾個進行守護
  redis-server sentinel.conf --sentinel
  ​

MongoBD

  • 可以在 slave 上啟動多個 salve 建立不同的目錄進行儲存資料,實現master執行20%的寫和salve實現80%的查詢操作

  # master 啟動
  mongod --bind_ip_all --dbpath /data/master -master
  ​
  # slave 啟動
  mongod --dbpath /data/slave -slave -source masterIP:port  # master的IP和埠

PostgreSQL