Mysql读写分离是为了提高网站的访问速度,提高数据库的并发负载能力。
但在实际的生产环境中,由单台Mysql作为独立的数据库是完全不能满足实际需求的,无论是在安全性,高可用性以及高并发等各个方面。
因此,一般来说都是通过 主从复制(Master-Slave)的方式来同步数据,再通过读写分离来提升数据库的并发负载能力, 这样的方案来进行部署与实施的。
先做主从复制,再做读写分离。
MySQL主从复制结构是基于mysql bin-log日志基础上,从库通过打开IO进程收到主库的bin-log日志增量信息,并保存到本地relay log,而后再通过打开MYSQL进程从relay log上获取的增量信息并翻译成SQL语句后写到从数据库。
先在主服务器和从服务器分别安装mysql,最简单的就是用yum安装:
yum -y install mysql mysql-server
service mysqld start
可以给mysql的root用户改一个密码,默认为空。
mysqladmin -u root -p password 123456 (#设置root密码)
敲完上面命令会出现enter password: 这里应该直接敲回车,应为mysql默认密码为空。
然后登陆:mysql -u root –p123456
现在mysql的root 用户的密码已经改为123456了。
主数据库服务器:192.168.28.185,MySQL已经安装,并且无应用数据。
从数据库服务器:192.168.28.123,MySQL已经安装,并且无应用数据。
先配置主服务器
修改主数据库的配置文件,即/etc/my.cnf,开启二进制日志并修改server_id。然后重启mysqld。
修改完之后可以用这个命令查看一下是否修改 grep -E "server_id|log_bin" /etc/my.cnf (这一步不用写,建议养成这个习惯)
MySQL复制基于主服务器在二进制日志中跟踪所有对数据库的更改(更新、删除等等)。因此,要进行复制,必须在主服务器上启用二进制日志。
然后登陆主数据库进行操作:
- mysql -uroot –p123456
- 可以查看此时登录账号 select user(); (这一步不用写)
- mysql>grant replication slave on *.* to 'zxq'@'192.168.28.123' identified by 'zxqzxq';
(在master上为slave添加同步帐号并授权)
说明: *.* 为所有的库和所有的表,可以自己定义某一个库里的某一个表。
授权之后可以在slave用授权用户登录验证 mysql -u zxq -h 192.168.28.185 -pzxqzxq
4 mysql>flush privileges; (使授权命令生效)
检查刚才创建的用户 select user,host from mysql.user;(这步不用写,建议养成这个习惯)