PHP+MySQL读写分离是一种数据库架构模式,旨在提高数据库的性能和可扩展性。在这种模式下,数据库的读操作和写操作被分离到不同的服务器上。通常,主服务器处理写操作(如插入、更新、删除),而从服务器处理读操作(如查询)。这种分离可以显著减轻主服务器的负载,提高系统的整体性能。
以下是一个简单的PHP+MySQL读写分离的实现示例:
<?php
// 主服务器配置
$master_host = 'master_host';
$master_user = 'master_user';
$master_pass = 'master_pass';
$master_db = 'master_db';
// 从服务器配置
$slave_hosts = [
'slave_host1',
'slave_host2',
// 可以添加更多的从服务器
];
$slave_user = 'slave_user';
$slave_pass = 'slave_pass';
$slave_db = 'slave_db';
// 创建数据库连接
function connect($host, $user, $pass, $db) {
$conn = new mysqli($host, $user, $pass, $db);
if ($conn->connect_error) {
die("连接失败: " . $conn->connect_error);
}
return $conn;
}
$master_conn = connect($master_host, $master_user, $master_pass, $master_db);
// 随机选择一个从服务器连接
$slave_conn = connect($slave_hosts[array_rand($slave_hosts)], $slave_user, $slave_pass, $slave_db);
?>
<?php
function execute_query($conn, $query) {
return $conn->query($query);
}
// 写操作(例如插入数据)
function write_query($query) {
global $master_conn;
return execute_query($master_conn, $query);
}
// 读操作(例如查询数据)
function read_query($query) {
global $slave_conn;
return execute_query($slave_conn, $query);
}
// 示例:插入数据
write_query("INSERT INTO users (name, email) VALUES ('John Doe', 'john@example.com')");
// 示例:查询数据
$result = read_query("SELECT * FROM users");
while ($row = $result->fetch_assoc()) {
echo $row['name'] . ' - ' . $row['email'] . '<br>';
}
?>
MHA
(Master High Availability)来实现自动切换。通过以上方法,你可以实现PHP+MySQL的读写分离,提高系统的性能和可扩展性。
领取专属 10元无门槛券
手把手带您无忧上云