㈠ php mysql 怎么实现读写分离
<?php
class Db
{
private $res;
function __construct($sql)
{
$querystr = strtolower(trim(substr($sql,0,6)));
//如果是select,就连接slave服务器
if($querystr == 'select')
{
$res=$this->slave_select($sql);
$this->res=$res;
}
//如果不是select,就连接master服务器
else
{
$res=$this->master_change($sql);
$this->res=$res;
}
}
/**
* slave从库返回sql查询结果
* @param $sql
* @return array
*/
private function slave_select($sql){
//该处只是随机获取slave节点的ip,当然,还可以采用其他算法获取slave_ip
$slave_server=$this->get_slave_ip();
$dsn="mysql:host=$slave_server;dbname=test";
$user='root';
$pass='123456';
$dbh=new PDO($dsn, $user, $pass);
return $dbh->query($sql)->fetchAll(PDO::FETCH_ASSOC);
}
/**master主库返回sql执行结果
* @param $sql
* @return int
*/
private function master_change($sql){
$master_server='192.168.33.22';
$dsn="mysql:host=$master_server;dbname=test";
$user='root';
$pass='123456';
$dbh=new PDO($dsn, $user, $pass);
return $dbh->exec($sql);
}
/**
* 随机获取slave-ip
* @return mixed
*/
private function get_slave_ip(){
$slave_ips=['192.168.33.33','192.168.33.44'];
$count=count($slave_ips)-1;
$random_key=mt_rand(0,$count);
return $slave_ips[$random_key];
}
/**
* 获取结果
* @return int
*/
public function get_res(){
return $this->res;
}
}
$sql1 = "select * from t1";
$sql2 = "insert into t1 (name) values ('haha')";
$sql3 = "delete from t1 where id=1";
$sql4 = "update t1 set name='Jerry' where id=2";
$db = new Db($sql1);
//$db = new Db($sql2);
//$db = new Db($sql3);
//$db = new Db($sql4);
var_mp($db->get_res());
㈡ mysql 实现读写分离时 必须要用mysql-proxy吗或者直接更改mysql配置就可以主从分离吗
写的时候是写到主库上,然后通过mysql主从,数据会复制到从库,那么可先测试主从同步是否正常,然后停掉主从同步功能,再写数据,数据会插入到主库,从库是查不到的。或者修改从库中的某条数据,通过客户端连到代理上查询这条数据,查询到代表读写分离没问题了。
http://www.rootop.org/pages/2413.html
这是当时测试读写分离的文档,可供参考下。
㈢ PHP服务器与MYSQL服务器分开如何做
在PHP.INI中把mysql扩展模块加进去.即;extension=php_mysql.dll前面的分号去掉,再装个ODBC连上B电脑上的MYSQL,然后你在程序里用B电脑的IP就可以连上了,mysql_connect("b电脑IP","数据库用户名","数据库密码");哦,对了把B电脑的MYSQL服务必须打开.
㈣ php mysql读写分离的原理好处,什么情况下需要读写分离,怎样做到读写分离,和读写分离后数据如何统一
数据库主从关系,读写分离。减轻数据库 压力
㈤ mysql 主从复制 php 怎么办
mysql主从复制与php没有半毛钱关系,如果你是想说php怎么连接mysql主从环境,这个必须代码里面实现,网上多的是教程
㈥ lnmp环境php与mysql分离不同服务器,linux下php和nginx在A服务器IP192
已经很明白了啊 ,php.ini里搜索"extension" ,会发现有关于mysql的扩展,你需要把前面的";"去掉,然后重启你的web服务器
㈦ Linux环境nginx php与mysql分离
建议php用源码安装
./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-iconv-dir=/usr/local --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --disable-rpath --enable-discard-path --enable-safe-mode --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --with-curlwrappers --enable-mbregex --enable-fastcgi --enable-fpm --enable-force-cgi-redirect --enable-mbstring --with-mcrypt --with-gd --enable-gd-native-ttf --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-ldap --with-ldap-sasl --with-xmlrpc --enable-zip --enable-soap
用这个命令编译
基本上常用的功能都有了
㈧ 把php和mysql分开放在两台服务器哪台更耗资源
一般来说,是mysql更耗资源
但也和你的网站程序复杂度有关
如果你的程序和mysql交互很少,那就有可能php压力大些
㈨ mysql 如何实现读写分离,用mysql-proxy 或者直接用php连接两个数据库
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安装,我建议不要在线下载安装,还是离线安装的好。大家可以参考 http://www.linuxidc.com/Linux/2013-01/78716.htm 这位不知道大哥还是姐妹,写的挺好按照这个就能装上。在安装的时候可能会出现几种现象,大家可以参考解决一下:
(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主从读写分离 怎么保证数据同步
如果两台电脑在一个局域网内,一般只会有很小的时延。理论上确实存在微小差别的可能,所以读写分离业务也不是说所有读业务都放在从机,读写一体的操作还是需要放在主机上的。