阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

MySQL主从配置及实现读写分离

132次阅读
没有评论

共计 3073 个字符,预计需要花费 8 分钟才能阅读完成。

大型网站为了软解大量的并发访问,除了在网站实现分布式负载均衡,远远不够。到了数据业务层、数据访问层,如果还是传统的数据结构,或者只是单单靠一台服务器扛,如此多的数据库连接操作,数据库必然会崩溃,数据丢失的话,后果更是 不堪设想。这时候,我们会考虑如何减少数据库的联接,一方面采用优秀的代码框架,进行代码的优化,采用优秀的数据缓存技术如: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 安装,我建议不要在线下载安装,还是离线安装的好。大家可以参考  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

MySQL 主从配置及实现读写分离

(4)Ubuntu 中修改文档内容没有 Vim,最好把 Vim 装上,apt-get install vim, 不然估计会抓狂。

这时候我相信 MySQL 应该安装上去了。

2、配置 Master 主服务器

(1)在 Master MySQL 上创建一个用户‘repl’,并允许其他 Slave 服务器可以通过远程访问 Master,通过该用户读取二进制日志,实现数据同步。

MySQL 主从配置及实现读写分离

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.%' IDENTIFIED BY 'mysql';

(2)找到 MySQL 安装文件夹修改 my.Ini 文件。mysql 中有好几种日志方式,这不是今天的重点。我们只要启动二进制日志 log-bin 就 ok。

 在 [mysqld] 下面增加下面几行代码

MySQL 主从配置及实现读写分离

1 server-id=1   //给数据库服务的唯一标识,一般为大家设置服务器 Ip 的末尾号
2 log-bin=master-bin
3 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] 下面增加下面几行代码

MySQL 主从配置及实现读写分离

1 [mysqld]
2 server-id=2
3 relay-log-index=slave-relay-bin.index
4 relay-log=slave-relay-bin

重启 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

MySQL 主从配置及实现读写分离 s

(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  所有操作日志,所以,你的任何改变主服务器数据库的操作,都会同步到从服务器上。创建个数据库,表试试吧。

本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-02/140347.htm

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-22发表,共计3073字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中