91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

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

平陆县| 荥阳市| 武威市| 柘城县| 都安| 青河县| 西乌珠穆沁旗| 延川县| 马公市| 安顺市| 正安县| 天台县| 凉山| 麻城市| 太原市| 康定县| 射阳县| 宣威市| 泽州县| 郎溪县| 云南省| 临高县| 游戏| 灯塔市| 漯河市| 德昌县| 吉木萨尔县| 萍乡市| 定安县| 蒙自县| 峨眉山市| 宣武区| 岫岩| 察哈| 子洲县| 浦江县| 北辰区| 定日县| 南平市| 锡林浩特市| 邳州市|