mysql抄書6:MySQL讀寫分離

來源:互聯網
上載者:User

標籤:/usr   運行   問題:   slave   .com   pass   tin   isp   syslog   

Amoeba

  • 以MySQL為底層資料存放區,並對應用提供MySQL協議介面的proxy
  • 集中想用應用的請求,根據使用者事先設定的規則,將SQL請求發送到特定的資料庫上執行
  • 基於此可以實現負載平衡、讀寫分離、高可用性等需求
  • 強調的是amoeba配置的方便,基於XML的設定檔,用SQLJEP文法書寫規則
  • 相當於一個SQL請求的路由器
  • 需結合mysql的replication等機制實現副本同步等功能
  • 對底層資料庫連接管理和路由實現才用了可插拔機制

MySQL-Proxy

  • 官方工具
  • 基於lua指令碼

基於程式讀寫分離

  • 寫一個庫,讀一個庫
  • 使用情境?

 

MySQL-Proxy讀寫分離

 

 

 

 

  • 配置mysql讀寫分離 
yum install mysql-server mysql mysql-devel  -y
  • master庫的my.cnf
[mysqld]  datadir=/var/lib/mysql  socket=/var/lib/mysql/mysql.sock  user=mysql # Disabling symbolic-links is recommended to prevent assorted security risks  symbolic-links=0 log-bin=mysql-bin  server-id = 1auto_increment_offset=1    auto_increment_increment=2[mysqld_safe]  log-error=/var/log/mysqld.log  pid-file=/var/run/mysqld/mysqld.pid   replicate-do-db =all
master my.cnf
  • slave庫的my.cnf
[mysqld]  datadir=/var/lib/mysql/socket=/var/lib/mysql/mysql.sock  user=mysql # Disabling symbolic-links is recommended to prevent assorted security risks  symbolic-links=0 log-bin=mysql-bin  server-id = 2 auto_increment_offset=2    auto_increment_increment=2[mysqld_safe]  log-error=/var/log/mysqld.log  pid-file=/var/run/mysqld/mysqld.pid  master-connect-retry=60 replicate-do-db =all
slave my.cnf
  • 主從同步授權
  • mysql-proxy安裝
wget wget https://downloads.mariadb.com/archives/mysql-proxy/mysql-proxy-0.8.3-linux-glibc2.3-x86-64bit.tar.gz  useradd -r mysql-proxytar zxvf mysql-proxy-0.8.3-linux-glibc2.3-x86-64bit.tar.gz -C /usr/localmv /usr/local/mysql-proxy-0.8.3-linux-glibc2.3-x86-64bit /usr/local/mysql-proxy
  • 設定環境變數
export PATH=$PATH:/usr/local/mysql-proxy/bin/echo "PATH=$PATH:/usr/local/mysql-proxy/bin"
Mysql-proxy的相關參數如下:--help-all   :擷取全部協助資訊;--proxy-address=host:port  :代理服務監聽的地址和連接埠;--admin-address=host:port  :管理模組監聽的地址和連接埠;--proxy-backend-addresses=host:port :後端mysql伺服器的地址和連接埠;--proxy-read-only-backend-addresses=host:port :後端唯讀mysql伺服器的地址和連接埠;--proxy-lua-script=file_name :完成mysql代理功能的Lua指令碼;--daemon  :以守護進程模式啟動mysql-proxy;--keepalive  :在mysql-proxy崩潰時嘗試重啟之;--log-file=/path/to/log_file_name :記錄檔名稱;--log-level=level :記錄層級;--log-use-syslog :基於syslog記錄日誌;--plugins=plugin:在mysql-proxy啟動時載入的外掛程式;--user=user_name  :運行mysql-proxy進程的使用者;--defaults-file=/path/to/conf_file_name : 預設使用的設定檔路徑;其配置段使用[mysql-proxy]標識;--proxy-skip-profiling : 禁用profile;--pid-file=/path/to/pid_file_name :進程檔案名稱;
  • 啟動mysql-proxy
mysql-proxy --daemon --log-level=debug --user=mysql-proxy --keepalive --log-file=/var/log/mysql-proxy.log --plugins="proxy" --proxy-backend-addresses="192.168.1.14:3306" --proxy-read-only-backend-addresses="192.168.1.15:3306" --proxy-lua-script="/usr/local/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua" --plugins=admin --admin-username="admin" --admin-password="admin" --admin-lua-script="/usr/local/mysql-proxy/lib/mysql-proxy/lua/admin.lua"
  • 查看連接埠及測試
netstat -ntpl |grep mysql-proxymysql -h192.168.1.14 -uadmin -p -P4041select * from backends;

  • 使用4040連接埠進行資料寫入和測試即可

 

問題:

VIP怎麼產生的?

mysql抄書6: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.