随着用户量的增多,数据库操作往往会成为一个系统的瓶颈所在,因此我们可以通过实现数据库的读写分离来提高系统的性能。
通过设置主从数据库实现读写分离,主库负责“写”操作,从库负责“读”操作,根据压力情况,从库可以部署多个已提高“读”的速度,借此来提高系统总体的性能。
要实现读写分离,就要解决主从数据库数据同步的问题,在主数据库写入数据后要保证从数据库的数据也要更新。
主服务器(master)记录数据库操作日志到二进制日志(Binary log),从服务器开启I/O线程将二进制日志记录的操作同步到relay log中继日志(存在从服务器的缓存中),另外sql线程将relay log(中继日志)记录的操作在从服务器执行。
记住这张图,接下来基于这个图实际设置主从数据库。
首先要有两个数据库服务器master(主库)、slave(从库)(也可以用一个服务器安装两套数据库环境运行在不同端口,slave也可以举一反三设置多个)。以下操作假设你的两台服务器上都已经安装好了MysqL服务。
vim /etc/my.cnf
2.在主服务器master上配置开启Binary log,主要是在[MysqLd]下面添加:
#日志文件名
log-bin = MysqL-bin
#主数据库端ID号
server-id = 1
3.重启MysqL,并创建用于同步的账户
service MysqLd restart
# 创建slave从库帐号slave_account,密码123456
MysqL>grant replication slave on *.* to 'slave_account'@'从库ip' identified by '123456';
# 更新数据库权限
MysqL>flush privileges;
4.检查配置效果,进入主数据库并执行
MysqL> SHOW MASTER STATUS;
注:执行完这个步骤后不要再操作主数据库了,防止主数据库状态值变化
5.配置从服务器的 my.cnf
server-id = 2
这里面的server-id 一定要和主库的不同。
6.重启从数据库
service MysqL restart
7.执行同步命令(进入从数据库执行)
MysqL>change master to master_host='主库ip',master_port=端口号,master_user='slave_account',master_password='123456',master_log_file='MysqL-bin.000003',master_log_pos=9049;
8.开启同步
MysqL> start slave;
检查从数据库状态
MysqL > show slave status \G
Slave_IO_Running及Slave_sql_Running进程必须正常运行,即YES状态,否则说明同步失败。
接下来在主库的操作,在从库都会执行了。我们可以主库负责写,从库负责读,达到读写分离的效果。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。