当前位置: 首页 » MYSLQ » ThinkPHP实现MySQL读写分离

ThinkPHP实现MySQL读写分离

ThinkPHP提供了完善的读写分离功能,不需要手动切换数据库。什么时候读,什么时候写系统会自动判断。读数据时系统会操作从服务器,而写数据时系统会操作主服务器。最终由数据库实现同步,这就是一个最典型的数据库读写分离,下以将配置好的两台主从数据库为例,详细介绍实现读写分离。

首先打开项目下的数据库配置文件,修改其中的数据库连接参数。要实现多数据库连接,只需要使用”,”分隔多台服务器即可,如以下代码所示。

 

注意事项:

1、当采用原生态的sql语句进行写入操作的时候,要用execute,读操作要用query。
2、MySQL数据主从同步还是要靠MySQL的机制来实现,所以这个时候MySQL主从同步的延迟问题是需要优化,延迟时间太长不仅影响业务,还影响用户体验。

 

下面是MySQL主从数据库配置:

环境:
A: 192.168.1.1 作为master,没有数据
B: 192.168.1.2  作为slave,没有数据
一:主服务器上:
注意:mysql参数
binlog-do-db = 数据库名      (你要备份的数据库)
binlog-ignore-db = 数据库名  (你不需要备份的数据库)
如果没有在/etc/my.cnf添加以上2个参数,那就是说明备份所有数据库
(1) 确保/etc/my.cnf 中有如下参数,一般情况下都是都有的,但是以确保实验的成功率还是检查一下比较好。假如没有如下参数,自己手动添加,并重启mysql服务器
[mysqld]
log-bin=mysql-bin (启动二进制文件)
server-id=1  (服务器ID)
( 2 ) :登录mysql服务器,添加一个叫做beifen的用户,并授权给从服务器
[root@localhost ~]# mysql -uroot –p123456 登录mysql
这里需要指明一下啊 这个123456是我的mysql的密码
mysql> grant replication slave on *.* to ‘beifen’@’192.168.1.2′ identified by ’123′; 创建 beifen用户,密码设置为123  并授权给192.168.1.2使用。

( 3 )查询主数据库的状态,并记下File和Position的值,这个在配置从数据库的时候用的到

1113453339-0

 

二:从服务器上
(1) 修改配置文件/etc/my.cnf 将service-id=1修改为server-id=2
(2) 并重启mysql服务器
[root@localhost ~]# mysqladmin -p123456 shutdown
[root@localhost ~]# mysqld_safe –user=mysql &
(3)登录mysql服务器
[root@localhost ~]# mysql -uroot –p123456
mysql>change master to master_host=’192.168.1.1′,master_user=’beifen’,master_password=’123′,master_log_file=’mysql-bin.000010′,master_log_pos=257;
( 4 ) 启动slave同步
mysql > start slave;
(5) 检查主从同步,如果您看到Slave_IO_Running和Slave_SQL_Running均为Yes,则主从复制连接正常。
mysql > show slave status\G

如下图:

22222222222221

 

OK! 主从复制完成,现在可以去验证了
验证方法:去主服务器上新建一个数据库,然后登录从服务器看看刚才在主服务器新建的数据库在不在
注意:如果master服务器上做主从之前已经有数据了,我们就必须要把数据库导出来  然后导入从数据库 。

请尊重我们的辛苦付出,未经允许,请不要转载 本站 的文章,鄙视各种无耻的采集行为!