Mysql主从配置,实现读写分离


大型站点为了软解大量的并发訪问。除了在站点实现分布式负载均衡,远远不够。到了数据业务层、数据訪问层,假设还是传统的数据结构,或者仅仅是单单靠一台server扛,如此多的数据库连接操作。数据库必定会崩溃。数据丢失的话,后果更是 不堪设想。这时候。我们会考虑怎样降低数据库的联接。一方面採用优秀的代码框架,进行代码的优化,採用优秀的数据缓存技术如:memcached,假设资金丰厚的话,必定会想到假设server群,来分担主数据库的压力。Ok切入今天微博主题,利用MySQL主从配置,实现读写分离,减轻数据库压力。这样的方式,在现在非常多站点里都有使用。也不是什么新奇事情,今天总结一下,方便大家学习參考一下。

概述:搭设一台Masterserver(win8.1系统,Ip:192.168.0.104)。搭设两台Slaveserver(虚拟机——一台Ubuntu,一台 Windows Server 2003)

原理:主server(Master)负责站点NonQuery操作。从server负责Query操作,用户能够依据站点功能模特性块固定訪问Slaveserver,或者自己写个池或队列。自由为请求分配从server连接。

主从server利用MySQL的二进制日志文件,实现数据同步。二进制日志由主server产生。从server响应获取同步数据库。

详细实现:

1、在主从server上都装上MySQL数据库,windows系统鄙人安装的是mysql_5.5.25.msi版本号,Ubuntu安装的是mysql-5.6.22-linux-glibc2.5-i686.tar

windows安装mysql就不谈了,一般地球人都应该会。鄙人略微说一下Ubuntu的MySQL安装,我建议不要在线下载安装,还是离线安装的好。大家能够參考http://www.linuxidc.com/Linux/2013-01/78716.htm这位不知道大哥还是姐妹。写的挺好依照这个就能装上。在安装的时候可能会出现几种现象,大家能够參考解决一下:

(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主server

(1)在Master MySQL上创建一个用户‘repl’。并同意其它Slaveserver能够通过远程訪问Master,通过该用户读取二进制日志,实现数据同步。

创建用于读取日志的数据库用户

(2)找到MySQL安装目录改动my.Ini文件。

mysql中有好几种日志方式,这不是今天的重点。

我们仅仅要启动二进制日志log-bin就ok。

在[mysqld]以下添加以下几行代码

View Code

(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从server(windows)

(1)找到MySQL安装目录改动my.ini文件。在[mysqld]以下添加以下几行代码

my.cnf 配置

重新启动MySQL服务

(2)连接Master

change master to master_host='192.168.0.104', //Master serverIp
master_port=3306,
master_user='repl',
master_password='mysql',
master_log_file='master-bin.000001',//Masterserver产生的日志
master_log_pos=0;

(3)启动Slave

start slave;

4、Slave从server(Ubuntu)

(1)找到MySQL安装目录改动my.cnf文件,vim my.cnf

s

(2)./support-files/myql.server restart重新启动MySQL服务 , ./bin/mysql进入MySQL命令窗体

(3)连接Master

change master to master_host='192.168.0.104', //Master serverIp
master_port=3306,
master_user='repl',
master_password='mysql',
master_log_file='master-bin.000001',//Masterserver产生的日志
master_log_pos=0;

(4)启动Slave

start slave;

OK全部配置都完毕了,这时候大家能够在Master Mysql 中进行測试了,由于我们监视的时Master mysql 全部操作日志,所以。你的不论什么改变主server数据库的操作,都会同步到从server上。创建个数据库,表试试吧。。

优质内容筛选与推荐>>
1、Beautiful
2、Windows Azure入门教学系列 (九):Windows Azure 诊断功能
3、【风马一族_Python】 决策树
4、设计模式学习笔记——状态模式(state)
5、229. Majority Element II


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号





    联系我们

    欢迎来到TinyMind。

    关于TinyMind的内容或商务合作、网站建议,举报不良信息等均可联系我们。

    TinyMind客服邮箱:support@tinymind.net.cn