我的Mysql 读写分离实践
最近去参加面试,对于一些小公司或者创业公司都面临的一个问题是随着业务的快速增长,如何提高数据库的并发提高的系统的吞吐量。 我没有这方面的经验,于是我想自己尝试一下,用mysql建立了一个主从数据库服务器,实现读写分离的功能。
应该说,最初的和主要的步骤都是学习这篇博客上的, 然后也遇到了一些问题,希望能给同样在困境中摸索的读者一些启发。
我用VirtualBox建了两台Linux虚拟机,它们的IP地址为: 10.86.19.59(主数据库)和10.86.19.17(从数据库)。
Linux我用的是Centos 6, 安装Mysql我用的是最简单的方式:yum install mysql mysql-server mysql-libs mysql-server
安装完成之后对root用户设置密码:
mysql> mysql -u root mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('root');
之后就是按照前面引用的博客来做了。在配置主服务器的时候,遇到一个问题, 用Mysql: Show master status 时的结果是Empty set. 这个时候主要是做两个事情:
1)查看主从服务器的防火墙,确保它们相互之间能telnet( telnet server_ip 3306);
2) 查看数据库的配置文件是否少了什么东西,下面的两段是不能少的。
[mysqld] server-id=1 log-bin=mysql-bin ...
如果你重启数据库服务失败,肯定是你的配置有问题。另外,主从服务器的server-id属性不能一样。
如果配置正确,你会看到一个简单的表格记录了文件以及位置的信息。(Show master status;)
在配置从服务器时,直到出现 Show slave status如下时,才表示配置正确。
Slave_IO_Running: YES
Slave_SQL_Running: YES
我在配置的过程中出现了错误,报错提示“Got fatal error 1236 from master when reading data from binary log:’Client requested master to start replication from impossible position.’”. 很明显,主服务器的起始点出错了,于是重新设置master_log_pos= 为正确的数据(从show master status处可获知)以后就正常了。
用Amoeba来做读写分离和负载均衡可参加详细的博客。
浙公网安备 33010602011771号