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了。
主数据库服务器:,MySQL已经安装,并且无应用数据。
从数据库服务器:,MySQL已经安装,并且无应用数据。
先配置主服务器
修改主数据库的配置文件,即/etc/f,开启二进制日志并修改server_id。然后重启mysqld。
修改完之后可以用这个命令查看一下是否修改 grep -E "server_id|log_bin" /etc/f (这一步不用写,建议养成这个习惯)
MySQL复制基于主服务器在二进制日志中跟踪所有对数据库的更改(更新、删除等等)。因此,要进行复制,必须在主服务器上启用二进制日志。
然后登陆主数据库进行操作:
mysql -uroot –p123456
可以查看此时登录账号 select user(); (这一步不用写)
mysql>grant replication slave on *.* to 'zxq'@'' identified by 'zxqzxq';
(在master上为slave添加同步帐号并授权)
说明: *.* 为所有的库和所有的表,可以自己定义某一个库里的某一个表。
授权之后可以在slave用授权用户登录验证 mysql -u zxq -h -pzxqzxq
4 mysql>flush privileges; (使授权命令生效)
检查刚才创建的用户 select user,host from ;(这步不用写,建议养成这个习惯)
还可以加password : select user, host, password from ;
也可以查看权限: show grants for 'zxq'@''; 下图显示与刚才操作的无误,并且密码加密了。(这一步也可不用写)
主从开始工作需要保证这两台服务器数据库信息一致,需要将master的数据库表全部备份导出,并传送到slave服务器上。有时还需要进行锁表只读的操作。但是因为我是刚创建的数据库,里面什么都没有,也就是说信息一样了。所以这一步就不用做了。
(2)查询主数据库的状态
1 mysql> show master status;
记下File以及Position的值,在后面进行从服务器操作的时候需要使用。
现在配置从服务器
(1)修改从服务器的配置文件/etc/f
修改server_id,并关闭bin_log日志。从库默认不开启bin-log日志功能,除非做下级从库级联同步,才需开启从库的bin-log日志。我修改的从数据库的“server-id=2”不能和主数据库的id一样。
从数据库配置文件里如果不写下面这两行则会复制主数据库账号信息,下面这两个库是专门存放mysql的系统账户的信息,。
binlog-ignore-db=mysql
binlog-ignore-db=information_schema (忽略mysql系统库复制)
从数据库里的中继日志是默认开启的,不需要单独添加。
f配置文件中加入 read-only参数,保证从库只读。
(2)启动mysql
mysql读写分离--张晓强(修正版) 来自淘豆网m.daumloan.com转载请标明出处.