mysql讀寫分離實例(mysql 讀寫分離)

  • 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-hk/n/127275.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
UMHFB的頭像UMHFB
上一篇 2024-10-03 23:13
下一篇 2024-10-03 23:13

相關推薦

  • 如何修改mysql的端口號

    本文將介紹如何修改mysql的端口號,方便開發者根據實際需求配置對應端口號。 一、為什麼需要修改mysql端口號 默認情況下,mysql使用的端口號是3306。在某些情況下,我們需…

    編程 2025-04-29
  • Python生成隨機數的應用和實例

    本文將向您介紹如何使用Python生成50個60到100之間的隨機數,並將列舉使用隨機數的幾個實際應用場景。 一、生成隨機數的代碼示例 import random # 生成50個6…

    編程 2025-04-29
  • Python操作MySQL

    本文將從以下幾個方面對Python操作MySQL進行詳細闡述: 一、連接MySQL數據庫 在使用Python操作MySQL之前,我們需要先連接MySQL數據庫。在Python中,我…

    編程 2025-04-29
  • MySQL遞歸函數的用法

    本文將從多個方面對MySQL遞歸函數的用法做詳細的闡述,包括函數的定義、使用方法、示例及注意事項。 一、遞歸函數的定義 遞歸函數是指在函數內部調用自身的函數。MySQL提供了CRE…

    編程 2025-04-29
  • MySQL bigint與long的區別

    本文將從數據類型定義、存儲空間、數據範圍、計算效率、應用場景五個方面詳細闡述MySQL bigint與long的區別。 一、數據類型定義 bigint在MySQL中是一種有符號的整…

    編程 2025-04-28
  • 如何在dolphinscheduler中運行chunjun任務實例

    本文將從多個方面對dolphinscheduler運行chunjun任務實例進行詳細的闡述,包括準備工作、chunjun任務配置、運行結果等方面。 一、準備工作 在運行chunju…

    編程 2025-04-28
  • MySQL左連接索引不生效問題解決

    在MySQL數據庫中,經常會使用左連接查詢操作,但是左連接查詢中索引不生效的情況也比較常見。本文將從多個方面探討MySQL左連接索引不生效問題,並給出相應的解決方法。 一、索引的作…

    編程 2025-04-28
  • CentOS 7在線安裝MySQL 8

    在本文中,我們將介紹如何在CentOS 7操作系統中在線安裝MySQL 8。我們會從安裝環境的準備開始,到安裝MySQL 8的過程進行詳細的闡述。 一、環境準備 在進行MySQL …

    編程 2025-04-27
  • Python存為JSON的方法及實例

    本文將從以下多個方面對Python存為JSON做詳細的闡述。 一、JSON簡介 JSON(JavaScript Object Notation)是一種輕量級的數據交換格式,易於人閱…

    編程 2025-04-27
  • 如何使用MySQL字段去重

    本文將從多個方面為您詳細介紹如何使用MySQL字段去重並給出相應的代碼示例。 一、SELECT DISTINCT語句去重 MySQL提供了SELECT DISTINCT語句,通過在…

    編程 2025-04-27

發表回復

登錄後才能評論