您好,登錄后才能下訂單哦!
在 PHP 中實現 MySQL 讀寫分離,可以采用以下幾種方法:
主從復制是一種通過將數據從一個 MySQL 服務器(主服務器)復制到另一個 MySQL 服務器(從服務器)的技術。你可以將讀操作分發到從服務器上,從而降低主服務器的負載。
步驟如下:
a. 配置主服務器(Master):
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):
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');
代理中間件如 ProxySQL 可以在應用層實現 MySQL 讀寫分離。它們通常提供負載均衡、故障轉移和連接池等功能。
a. 安裝并配置 ProxySQL:
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 讀寫分離了。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。