利用MySQL主从配置实现读写分离减轻数据库压力
大型网站为了软解大量的并发访问,除了在网站实现分布式负载均衡,远远不够。到了数据业务层、数据访问层,如果还是传统的数据结构,或者只是单单靠一台服务器扛,如此多的数据库连接操作,数据库必然会崩溃,数据丢失的话,后果更是 不堪设想。这时候,我们会考虑如何减少数据库的联接,一方面采用优秀的代码框架,进行代码的优化,采用优秀的数据缓存技术如:memcached,如果资金丰厚的话,必然会想到假设服务器群,来分担主数据库的压力。ok切入今天文章主题,利用mysql主从配置,实现读写分离,减轻数据库压力。这种方式,在如今很多网站里都有使用,也不是什么新鲜事情,今天总结一下,方便大家学习参考一下。
概述:搭设一台master服务器(win8.1系统,ip:192.168.0.104),搭设两台slave服务器(虚拟机——一台ubuntu,一台 windows server 2003)
原理:主服务器(master)负责网站nonquery操作,从服务器负责query操作,用户可以根据网站功能模特性块固定访问slave服务器,或者自己写个池或队列,*为请求分配从服务器连接。主从服务器利用mysql的二进制日志文件,实现数据同步。二进制日志由主服务器产生,从服务器响应获取同步数据库。
具体实现:
1、在主从服务器上都装上mysql数据库,windows系统鄙人安装的是mysql_5.5.25.msi版本,ubuntu安装的是mysql-5.6.22-linux-glibc2.5-i686.tar
windows安装mysql就不谈了,一般地球人都应该会。鄙人稍微说一下ubuntu的mysql安装,我建议不要在线下载安装,还是离线安装的好。大家可以参考 这位不知道大哥还是姐妹,写的挺好按照这个就能装上。在安装的时候可能会出现几种现象,大家可以参考解决一下:
(1)如果您不是使用root用户登录,建议 su - root 切换到root用户安装,那就不用老是 sudo 了。
(2)存放解压的mysql 文件夹,文件夹名字最好改成mysql
(3)在./support-files/mysql.server start 启动mysql的时候,可能会出现一个警告,中文意思是启动服务运行读文件时,忽略了my.cnf文件,那是因为my.cnf的文件权限有问题,mysql会认为该文件有危险不会执行。但是mysql还会启动成功,但如果下面配置从服务器参数修改my.cnf文件的时候,你会发现文件改过了,但是重启服务时,修改过后的配置没有执行,而且您 list一下mysql的文件夹下会发现很多.my.cnf.swp等中间文件。这都是因为mysql启动时没有读取my.cnf的原因。这时只要将my.cnf的文件权限改成my_new.cnf的权限一样就ok,命令:chmod 644 my.cnf就ok
(4)ubuntu中修改文档内容没有vim,最好把vim 装上,apt-get install vim,不然估计会抓狂。
这时候我相信mysql应该安装上去了。
2、配置master主服务器
(1)在master mysql上创建一个用户‘repl',并允许其他slave服务器可以通过远程访问master,通过该用户读取二进制日志,实现数据同步。
(2)找到mysql安装文件夹修改my.ini文件。mysql中有好几种日志方式,这不是今天的重点。我们只要启动二进制日志log-bin就ok。
在[mysqld]下面增加下面几行代码
(3)查看日志
mysql> show master status; +-------------------+----------+--------------+------------------+ | file | position | binlog_do_db | binlog_ignore_db | +-------------------+----------+--------------+------------------+ | master-bin.000001 | 1285 | | | +-------------------+----------+--------------+------------------+ 1 row in set (0.00 sec)
重启mysql服务
3、配置slave从服务器(windows)
(1)找到mysql安装文件夹修改my.ini文件,在[mysqld]下面增加下面几行代码
重启mysql服务
(2)连接master
change master to master_host='192.168.0.104', //master 服务器ip master_port=3306, master_user='repl', master_password='mysql', master_log_file='master-bin.000001',//master服务器产生的日志 master_log_pos=0;
(3)启动slave
start slave;
4、slave从服务器(ubuntu)
(1)找到mysql安装文件夹修改my.cnf文件,vim my.cnf
(2) ./support-files/myql.server restart 重启mysql服务 , ./bin/mysql 进入mysql命令窗口
(3)连接master
change master to master_host='192.168.0.104', //master 服务器ip master_port=3306, master_user='repl', master_password='mysql', master_log_file='master-bin.000001',//master服务器产生的日志 master_log_pos=0;
(4)启动slave
start slave;
ok所有配置都完成了,这时候大家可以在master mysql 中进行测试了,因为我们监视的时master mysql 所有操作日志,所以,你的任何改变主服务器数据库的操作,都会同步到从服务器上。创建个数据库,表试试吧。。
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对的支持。如果你想了解更多相关内容请查看下面相关链接
上一篇: Spring Boot 启动、停止、重启、状态脚本
下一篇: 二货爆笑,真是破窑出好货呀!