中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

PHP中如何實現MySQL的讀寫分離

發布時間:2024-09-22 09:30:25 來源:億速云 閱讀:87 作者:小樊 欄目:編程語言

在 PHP 中實現 MySQL 讀寫分離,可以采用以下幾種方法:

  1. 使用 MySQL 的主從復制 (Master-Slave Replication):

主從復制是一種通過將數據從一個 MySQL 服務器(主服務器)復制到另一個 MySQL 服務器(從服務器)的技術。你可以將讀操作分發到從服務器上,從而降低主服務器的負載。

步驟如下:

a. 配置主服務器(Master):

  • 修改 my.cnf 配置文件,開啟二進制日志(binlog)功能:
log-bin=mysql-bin
  • 在主服務器上創建一個專門用于復制的用戶:
CREATE USER 'repl_user'@'%' IDENTIFIED BY 'your_password';
GRANT REPLICATION SLAVE ON *.* TO 'repl_user'@'%';
FLUSH PRIVILEGES;
  • 獲取主服務器的二進制日志坐標(文件名和位置):
SHOW MASTER STATUS;

b. 配置從服務器(Slave):

  • 修改從服務器的 my.cnf 配置文件,開啟二進制日志(binlog)功能,并指定主服務器的 IP 地址、端口、用戶名和密碼:
server-id=1
relay-log=relay-bin
log-bin=mysql-bin
binlog-do-db=your_database_name
replicate-do-db=your_database_name
  • 在從服務器上創建一個專門用于復制的用戶:
CREATE USER 'repl_user'@'%' IDENTIFIED BY 'your_password';
GRANT REPLICATION SLAVE ON *.* TO 'repl_user'@'%';
FLUSH PRIVILEGES;
  • 使用從服務器連接主服務器,開始復制:
CHANGE MASTER TO
  MASTER_HOST='master_ip_address',
  MASTER_PORT=3306,
  MASTER_USER='repl_user',
  MASTER_PASSWORD='your_password',
  MASTER_LOG_FILE='mysql-bin.000001',
  MASTER_LOG_POS=  107;
START SLAVE;

c. 在 PHP 代碼中實現讀寫分離:

$read_host = 'slave_ip_address';
$write_host = 'master_ip_address';

// 連接讀數據庫
$read_conn = new mysqli($read_host, 'username', 'password', 'database');

// 連接寫數據庫
$write_conn = new mysqli($write_host, 'username', 'password', 'database');
  1. 使用代理中間件(Proxy Middleware):

代理中間件如 ProxySQL 可以在應用層實現 MySQL 讀寫分離。它們通常提供負載均衡、故障轉移和連接池等功能。

a. 安裝并配置 ProxySQL:

  • 參考 ProxySQL 官方文檔(https://proxysql.com/doc/)進行安裝和配置。

b. 在 PHP 代碼中使用 ProxySQL 連接數據庫:

$dsn = "mysql:host=127.0.0.1;port=3306;dbname=your_database_name;charset=utf8mb4";
$username = 'username';
$password = 'password';

$proxy = new ProxySQL();
$proxy->connect('localhost', 3306, $username, $password);
$proxy->set_read_timeout(5);
$proxy->set_write_timeout(5);

// 設置讀寫分離策略
$query_rules = [
    ['pattern' => '^SELECT', 'target' => 'read'],
    ['pattern' => '^INSERT|UPDATE|DELETE', 'target' => 'write'],
];
$proxy->add_query_rule($query_rules);

// 獲取連接
$conn = $proxy->get_connection();

這樣,你就可以在 PHP 代碼中使用配置好的主從服務器或代理中間件實現 MySQL 讀寫分離了。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

php
AI

宝清县| 南皮县| 兴安盟| 广南县| 扶余县| 犍为县| 桑植县| 云和县| 哈巴河县| 罗甸县| 鄄城县| 外汇| 广德县| 成都市| 无锡市| 湄潭县| 鄂尔多斯市| 南平市| 年辖:市辖区| 乐业县| 仁布县| 托克托县| 新蔡县| 柳州市| 渝中区| 金沙县| 濮阳市| 汝南县| 弋阳县| 民权县| 瑞安市| 中西区| 乌恰县| 天门市| 池州市| 台东市| 贞丰县| 沈阳市| 沅陵县| 柏乡县| 象州县|