- 1、如何實現mysql讀寫分離
- 2、mysql 讀寫分離 有幾種實現方法
- 3、mysql5.7.13支持讀寫分離嗎
- 4、mysql 如何實現讀寫分離,用mysql-proxy 或者直接用php連接兩個資料庫?
- 5、mysql如何做讀寫分離啊 ?
- 6、mysql讀寫分離原理是什麼
Slave從伺服器(Ubuntu)
(1)找到MySQL安裝文件夾修改my.cnf文件,vim my.cnf
s
(2) ./support-files/myql.server restart 重啟MySQL服務 , ./bin/mysql 進入MySQL命令窗口
(3)連接Master
change master to master_host=’192.168.0.104′, //Master 伺服器Ip
master_port=3306,
master_user=’repl’,
master_password=’mysql’,
master_log_file=’master-bin.000001′,//Master伺服器產生的日誌
master_log_pos=0;
(4)啟動Slave
start slave;
利用mysql proxy來實現的。 MySQL Proxy最強大的一項功能是實現「讀寫分離(Read/Write Splitting)」。基本的原理是讓主資料庫處理事務性查詢,而從資料庫處理SELECT查詢。資料庫複製被用來把事務性查詢導致的變更同步到集群中的從資料庫。
mysql支持讀寫分離,可以參考如下實例:
1.確認環境
linux centos 7–64bit
2.準備材料
lua
mysql-proxy
3.安裝lua
[root@bogon ~]# mkdir /opt/install/
[root@bogon ~]# cd /opt/install/
[root@bogon install]# tar zxvf lua-5.2.3.tar.gz
[root@bogon install]# cd lua-5.3.3
[root@bogon install]# make linux test
pre name=”code” class=”plain”若沒有錯誤擇執行
[root@bogon install]# make linux
pre name=”code” class=”plain”[root@bogon install]# make install
寫入環境變數
[root@bogon install]# export LUA_CFLAGS=”-I/usr/local/include” LUA_LIBS=”-L/usr/local/lib -llua -ldl” LDFLAGS=”-lm”
若是顯示
readline/readline.h: No such file or directory
擇需要安裝
yum install readline-devel
4.安裝mysql-proxy
[root@bogon install]# cd /opt/install
[root@bogon install]# tar zxvf mysql-proxy-0.8.5-linux-glibc2.3-x86-64bit.tar.gz
[root@bogon install]# mkdir /opt/mysql-proxy/
[root@bogon install]# cp /opt/install/mysql-proxy-0.8.4-linux-rhel5-x86-32bit/* /opt/mysql-proxy/
[root@bogon install]# cd /opt/mysql-proxy/
[root@bogon install]# export PATH=$PATH:/opt/mysql-proxy/bin/ #寫入環境變數
5.編輯mysql-proxy配置文件
[root@bogon install]# cp share/doc/mysql-proxy/rw-splitting.lua ./
[root@bogon install]# vi rw-splitting.lua
6修改以下配置文件內容
if not proxy.global.config.rwsplit then
proxy.global.config.rwsplit = {
min_idle_connections = 4, # 4改成1
max_idle_connections = 8, # 8改成1
is_debug = false
}
end
7.執行任務
[root@bogon install]# mysql-proxy –proxy-read-only-backend-addresses=192.168.23.132:3306
span style=”white-space:pre” /span–proxy-backend-addresses=192.168.2.131:3306 –proxy-lua-script=/opt/mysql-proxy/share/rw-splitting.lua
proxy-read-only-backend-addresses:從庫的地址
pre name=”code” class=”plain”proxy-backend-addresses: 主庫的地址
pre name=”code” class=”plain”proxy-lua-script=rw-spliting.lua腳本的路徑
8.查看監聽情況
[root@bogon install]# netstat -tlp | grep mysql-proxy
tcp 0 0 *:yo-main *:* LISTEN 13364/mysql-proxy
9.創建用於讀寫分離的資料庫連接用戶
CREATE USER ‘proxy’@’ip’ IDENTIFIED BY ‘000000’;
GRANT ALL ON *.* TO ‘proxy1’@’ip’ IDENTIFIED BY ‘000000’;
FLUSH PRIVILEGES;
10.設置mysql-proxy服務腳本
#!/bin/sh
#
# mysql-proxy This script starts and stops the mysql-proxy daemon
#
# chkconfig: – 78 30
# processname: mysql-proxy
# description: mysql-proxy is a proxy daemon to mysql
# Source function library.
. /etc/rc.d/init.d/functions
#PROXY_PATH=/usr/local/bin
PROXY_PATH=/opt/mysql-proxy/bin
prog=”mysql-proxy”
# Source networking configuration.
. /etc/sysconfig/network
# Check that networking is up.
[ ${NETWORKING} = “no” ] exit 0
# Set default mysql-proxy configuration.
#PROXY_OPTIONS=”–daemon”
PROXY_OPTIONS=”–proxy-read-only-backend-addresses=192.168.23.132:3306 –proxy-backend-addresses=192.168.23.131:3306 –proxy-lua-script=/opt/mysql-proxy/share/rw-splitting.lua”
PROXY_PID=/opt/mysql-proxy/run/mysql-proxy.pid
# Source mysql-proxy configuration.
if [ -f /etc/sysconfig/mysql-proxy ]; then
. /etc/sysconfig/mysql-proxy
fi
PATH=$PATH:/usr/bin:/usr/local/bin:$PROXY_PATH
# By default it’s all good
RETVAL=0
# See how we were called.
case “$1” in
start)
# Start daemon.
echo -n $”Starting $prog: ”
$NICELEVEL $PROXY_PATH/mysql-proxy $PROXY_OPTIONS –daemon –pid-file=$PROXY_PID –user=root –log-level=debug –log-file=/opt/mysql-proxy/log/mysql-proxy.log
RETVAL=$?
echo
if [ $RETVAL = 0 ]; then
touch /var/lock/subsys/mysql-proxy]
echo “ok”
fi
;;
stop)
# Stop daemons.
echo -n $”Stopping $prog: ”
killproc $prog
RETVAL=$?
echo
if [ $RETVAL = 0 ]; then
rm -f /var/lock/subsys/mysql-proxy
rm -f $PROXY_PID
fi
;;
restart)
$0 stop
sleep 3
$0 start
;;
condrestart)
[ -e /var/lock/subsys/mysql-proxy ] $0 restart
;;
status)
status mysql-proxy
RETVAL=$?
;;
*)
echo “Usage: $0 {start|stop|restart|status|condrestart}”
RETVAL=1
;;
esac
exit $RETVAL
11.啟動腳本
[root@bogon init.d]# /opt/mysql-proxy/init.d/mysql-proxy start
Mysql主從配置,實現讀寫分離
原理:主伺服器(Master)負責網站NonQuery操作,從伺服器負責Query操作,用戶可以根據網站功能模特性塊固定訪問Slave伺服器,或者自己寫個池或隊列,自由為請求分配從伺服器連接。主從伺服器利用MySQL的二進位日誌文件,實現數據同步。二進位日誌由主伺服器產生,從伺服器響應獲取同步資料庫。
具體實現:
1、在主從伺服器上都裝上MySQL資料庫,windows系統鄙人安裝的是mysql_5.5.25.msi版本,Ubuntu安裝的是mysql-5.6.22-linux-glibc2.5-i686.tar
windows安裝mysql就不談了,一般地球人都應該會。鄙人稍微說一下Ubuntu的MySQL安裝,我建議不要在線下載安裝,還是離線安裝的好。大家可以參考 這位不知道大哥還是姐妹,寫的挺好按照這個就能裝上。在安裝的時候可能會出現幾種現象,大家可以參考解決一下:
(1)如果您不是使用root用戶登錄,建議 su – root 切換到Root用戶安裝,那就不用老是 sudo 了。
(2)存放解壓的mysql 文件夾,文件夾名字最好改成mysql
(3)在./support-files/mysql.server start 啟動MySQL的時候,可能會出現一個警告,中文意思是啟動服務運行讀文件時,忽略了my.cnf文件,那是因為my.cnf的文件許可權有問題,mysql會認為該文件有危險不會執行。但是mysql還會啟動成功,但如果下面配置從伺服器參數修改my.cnf文件的時候,你會發現文件改過了,但是重啟服務時,修改過後的配置沒有執行,而且您 list一下mysql的文件夾下會發現很多.my.cnf.swp等中間文件。這都是因為MySQL啟動時沒有讀取my.cnf的原因。這時只要將my.cnf的文件許可權改成my_new.cnf的許可權一樣就Ok,命令:chmod 644 my.cnf就Ok
(4)Ubuntu中修改文檔內容沒有Vim,最好把Vim 裝上,apt-get install vim,不然估計會抓狂。
這時候我相信MySQL應該安裝上去了。
2、配置Master主伺服器
(1)在Master MySQL上創建一個用戶『repl』,並允許其他Slave伺服器可以通過遠程訪問Master,通過該用戶讀取二進位日誌,實現數據同步。
我剛給公司做完mysql的主從讀寫分離
先給你個思路
第一步:先做mysql的主從(Master/Slave Replication),實現數據同步
第二部:通過Amoeba來實現讀寫分離,也可以通過mysql proxy(比較麻煩)。
ps:
我的環境是兩台裝windows server 2008,一台做主,一台做從。
如果你需要的話,留下郵箱,我發給你一個我自己剛做好的文檔。照著做就可以了
利用mysql proxy來實現的。
MySQL Proxy最強大的一項功能是實現「讀寫分離(Read/Write Splitting)」。基本的原理是讓主資料庫處理事務性查詢,而從資料庫處理SELECT查詢。資料庫複製被用來把事務性查詢導致的變更同步到集群中的從資料庫。 當然,主伺服器也可以提供查詢服務。使用讀寫分離最大的作用無非是環境伺服器壓力。
原創文章,作者:UMHFB,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/127275.html