设为首页 收藏本站
查看: 1091|回复: 0

[经验分享] MySQL主从配置及实现读写分离

[复制链接]

尚未签到

发表于 2018-10-10 12:55:50 | 显示全部楼层 |阅读模式
  大型网站为了软解大量的并发访问,除了在网站实现分布式负载均衡,远远不够。到了数据业务层、数据访问层,如果还是传统的数据结构,或者只是单单靠一台服务器扛,如此多的数据库连接操作,数据库必然会崩溃,数据丢失的话,后果更是不堪设想。这时候,我们会考虑如何减少数据库的联接,一方面采用优秀的代码框架,进行代码的优化,采用优秀的数据缓存技术如: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,通过该用户读取二进制日志,实现数据同步。
  1 mysql>create user repl; //创建新用户

  2 //repl用户必须具有REPLICATION SLAVE权限,除此之外没有必要添加不必要的权限,密码为mysql。说明一下192.168.0.%,这个配置是指明repl用户所在服务器,这里%是通配符,表示192.168.0.0-192.168.0.255的Server都可以以repl用户登陆主服务器。当然你也可以指定固定Ip。3 mysql> GRANT REPLICATION SLAVE ON *.* TO ’repl’@’192.168.0.%’>  (2)找到MySQL安装文件夹修改my.Ini文件。mysql中有好几种日志方式,这不是今天的重点。我们只要启动二进制日志log-bin就ok。
  在[mysqld]下面增加下面几行代码
  1 server-id=1 //给数据库服务的唯一标识,一般为大家设置服务器Ip的末尾号
  2 log-bin=master-bin3 log-bin-index=master-bin.index
  (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]下面增加下面几行代码
  1 [mysqld]
  2 server-id=2

  3>
  4>  重启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所有操作日志,所以,你的任何改变主服务器数据库的操作,都会同步到从服务器上。创建个数据库,表试试吧。
  来源:linux公社
  MySQL主从配置及实现读写分离


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-619984-1-1.html 上篇帖子: c#访问mysql数据库 下篇帖子: mysql 索引长度和区分度
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表