mysql集群架构方式很多,根据不同的需求做不一样的架构,简单一点的就是mysql的replication,也就是Mysql的复制功能,模式有:master-slaves,master-slaves-slaves,master-master-slaves等可以有多个分层,那么现在我所要说的是master-slaves的模式(其他的模式原理基本都一样),然后再通过mysql官方提供的Mysql-proxy实现读写分离,达到负载均衡的效果。
环境:
主机:master:192.168.1.109,slave1:192.168.1.110,mysqlProxy:192.168.1.112。(workstation10平台创建虚拟机模拟)
操作系统:Red Hat Enterprise Linux Server release 5.8
mysql:mysql-5.5.37-linux2.6-i686.tar.gz
mysql-proxy:mysql-proxy-0.8.4-linux-glibc2.3-x86-32bit.tar.gz
1、安装mysql:
[root@localhost ~]# cd /usr/local //进入到安装目录
[root@localhost local]# tar -zxvfmysql-5.5.37-linux2.6-i686.tar.gz //解压mysql二进制包
[root@localhost local]# ln -smysql-5.5.37-linux2.6-i686 mysql //解压之后加上链接
[root@localhost local]# groupadd mysql //增加mysql用户组
[root@localhost local]# useradd -g mysql mysql //增加mysql用户帐号
[root@localhostlocal]# cd mysql //进入安装之后的mysql目录
[root@localhost mysql]# chown -R root:mysql . //修改文件属组和属主,注意该命令后面有一个点,表示当前目录
[root@localhost mysql]# chown -R mysql:mysql data/ //把data目录的属主改为mysql
[root@localhost mysql]# cp support-files/my-large.cnf /etc/my.cnf //拷贝mysql配置文件放在etc目录下并改名为my.cnf
[root@localhost mysql]# cp support-files/mysql.server /etc/init.d/mysqld //拷贝mysql的启动脚本放在/etc/init.d/目录下
[root@localhost mysql]# service mysqld start //启动mysql
至此mysql安装已经结束,接下来就是mysql的主从配置。(其他两台主机也照此安装mysql)
2、配置master:
[root@localhost mysql]# vi /etc/my.cnf //编辑配置文件
server-id=1 //默认是1,不是的话则改为1
thread_concurrency = 2 //线程并发数(CPU*2)
log-bin=mysql-bin //打开二进制日志功能
保存退出,重新启动mysql。
登入mysql:
[root@localhost mysql]# mysql -uroot -p //默认密码空,直接敲回车进入
mysql> grant replication slave on *.* to repl@'192.168.1.%' identified by '123456';
mysql>flush privileges;
mysql>show grants for 'repl'@'192.168.1.%'; //查看授权,有记录说明ok
mysql>show master status\G; //查看master服务器状态,有二进制日志文件名和记录位置(position)
至此mysql配置完成。
3、配置slave
[root@localhost mysql]#vi /etc/my.cnf //编辑配置文件
server-id=11 //设置与master不一样就行,
thread_concurrency = 2 //线程并发数(CPU*2)
relay-log=mysql-log //打开中继日志
relay-log-index=mysql-log.index //设置relay-log-index文件名
保存退出,重新启动mysql。
登入mysql:
[root@localhost mysql]# mysql -uroot -p //默认密码空,直接敲回车进入
mysql>change master to
->master_host='192.168.1.109', //master服务器ip
->mastet_user='repl', //用户名
->mastet_password='123456', //密码
->master_log_file='mysql-bin.000001', //master服务器二进制日志名
->master_log_pos=107;
mysql>slave start; //启动slave
mysql> SHOW SLAVE STATUS\G; //查看slave状态
*************************** 1. row ***************************
Slave_IO_State:
Master_Host: 192.168.1.109
Master_User: repl
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000001
Read_Master_Log_Pos: 4
Relay_Log_File: mysql-relay-bin.000001
Relay_Log_Pos: 4
Relay_Master_Log_File: mysql-bin.000001
Slave_IO_Running: yes
Slave_SQL_Running: yes
...omitted...
Seconds_Behind_Master: NULL
如果Slave_IO_Running和Slave_SQL_Running显示为yes则配置ok,过程中可能会出现:
Slave I/O: error connecting to master 'repl@192.168.1.109:3306' - retry-time: 60 retries: 86400, Error_code: 2003
引起问题原因是防火墙拦截了,解决办法就是修改防火墙配置,简单直接的办法就是把master服务器的防火墙关掉,执行/etc/init.d/iptables stop命令。
接下来测试,在master中创建一个数据库db_test,查看slave中是是否存在db_test。
至此slave配置结束,其他从服务器按此方式配置。
4、配置mysql-proxy,代理服务最好另外部署一台机器,尤其是上线运行后,所以这里测试也是用了单独一台虚拟机,没有部署在master或slave机器上。
[root@localhost local]# tar -zxvf mysql-proxy-0.8.4-linux-glibc2.3-x86-32bit.tar.gz //解压
[root@localhost local]# ln -s mysql-proxy-0.8.4-linux-glibc2.3-x86-32bit mysql-proxy //加一个快捷链接
[root@localhost local]# groupadd mysql-proxy //创建用户组
[root@localhost local]# useradd -g mysql-proxy mysql-proxy //创建用户
[root@localhost local]# cd mysql-proxy //进入mysql-proxy目录
[root@localhost mysql-proxy]# chown -R root:mysql-proxy . //更改目录属主和属组,命令后面有一个点(.)表示当前目录
[root@localhost mysql-proxy]# vi /etc/profile.d/mysql-proxy.sh //把mysql的bin目录加到PATH变量中,
export
PATH=$PATH:
/usr/local/mysql-proxy/bin
[root@localhostmysql-proxy]# source /etc/profile //让配置文件立刻生效
[root@localhostmysql-proxy]# mysql-proxy --help-all //查看mysql-proxy命令,出现如下信息:
mysql-proxy 命令
-
--help-all ———— 用于获取全部帮助信息
-
--proxy-address=host:port ———— 代理服务监听的地址和端口
-
--admin-address=host:port ———— 管理模块监听的地址和端口
-
--proxy-backend-addresses=host:port ———— 后端mysql服务器的地址和端口(主服务器)
-
--proxy-read-only-backend-addresses=host:port ———— 后端只读mysql服务器的地址和端口(从服务器)
-
--proxy-lua-script=file ———— 完成mysql代理功能的Lua脚本
-
--daemon ———— 以守护进程模式启动mysql-proxy
-
--defaults-file=/path/to/conf_file_name ———— 默认使用的配置文件路径
-
--log-file=/path/to/log_file_name ———— 日志文件名称
-
--log-level=level ———— 日志级别
-
--log-use-syslog ———— 基于syslog记录日志
-
--user=user_name ———— 运行mysql-proxy进程的用户
2014-05-10 00:09:22: (critical) plugin proxy 0.8.4 started
2014-05-10 00:09:22: (debug) max open file-descriptors = 1024
2014-05-10 00:09:22: (message) proxy listening on port :4040
2014-05-10 00:09:22: (message) added read/write backend: 192.168.1.109:3306
2014-05-10 00:09:22: (message) added read-only backend: 192.168.1.110:3306
[root@localhostmysql-proxy]#netstat -ntulp | grep :4040 //查看监听的端口
tcp 0 0 0.0.0.0:4040 0.0.0.0:* LISTEN 10056/mysql-proxy
现在我们需要在master服务器中创建一个远程登入的mysql账号
master:
mysql> GRANT ALL ON *.* TO root@
'192.168.1.%'
IDENTIFIED BY
'123456'
;
Query OK, 0 rows affected (0.07 sec)
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.04 sec)
[root@bogon ~]
# mysql -uroot -p123456 -h192.168.1.112 --port=4040
相关推荐
这时,通过构建MySQL集群(如主从复制和读写分离)来提升整体性能就显得尤为关键。 - **重点内容2:主从复制的原理** - 主从复制是实现读写分离的基础。它允许数据在主服务器和一个或多个从服务器之间保持同步。 -...
docker_compose搭建shardingSphereProxyMysql主从读写分离
### MySQL的读写分离与主从复制 #### 一、背景与需求 在现代Web应用中,数据库往往面临着巨大的读写压力。对于大部分应用程序来说,读取数据的需求远远大于写入数据的需求,即所谓的“读多写少”。为了提高系统的...
"方法.txt"可能包含了搭建测试环境和执行对比的具体步骤,如安装配置proxy和Mycat,设置MySQL主从复制,编写测试脚本,以及收集和分析性能数据等。"测试主从对比.docx"很可能是测试报告,详细记录了测试过程和结果,...
- **主从复制**:MySQL集群通常采用主从复制模式,主节点负责写操作,从节点负责读操作。当主节点出现故障时,可以从节点接管服务,确保服务不间断。 - **Heartbeat监控**:Heartbeat是Linux下的心跳监测工具,...
本文将详细介绍如何使用Mysql、Haproxy、Mycat、PXC、Zookeeper实现高可用集群,涵盖了整个架构图、应用程序的访问流程、数据的读写分离、负载均衡、数据库节点的搭建、Zookeeper的应用等多个方面。 整体架构图 在...
对于 MySQL 数据库,可以通过搭建主从复制或 Galera 集群等方式来提高数据处理能力和容错能力。 **2.1 MySQL 主从复制** MySQL 主从复制是一种常见的数据同步方式,它可以实现数据的实时备份和读写分离,从而提高...
MySQL Proxy是一个轻量级的代理服务器,可以用于负载均衡和故障切换。安装步骤如下: - **下载MySQL Proxy**:获取MySQL Proxy的最新版本。 - **安装**:按照安装向导进行安装。 - **配置**:编辑配置文件,设置代理...
4. **负载均衡**:通过MySQL Proxy,可以将多个MySQL服务器组织成一个集群,根据预设策略(如轮询、随机、权重等)分配客户端请求,实现数据库的负载均衡。 二、MySQL Proxy工作原理 1. **连接管理**:MySQL Proxy...
在标题中提到的"sharding-proxy-3.0.0",这是ShardingSphere的Sharding-Proxy的一个版本,它提供了对数据库的水平扩展能力。通过分库分表策略,可以将一个大型的数据库拆分成多个小数据库,从而分散负载,提高数据...
总结来说,这个集群环境通过MySQL提供数据库服务,Mycat进行数据分片和负载均衡,Keepalived确保主从切换的高可用性,而HAProxy则进一步增强了对外服务的负载均衡能力。这样的组合可以有效提升系统的稳定性和处理...
根据提供的信息,我们可以详细探讨如何构建...综上所述,通过以上技术的结合使用,可以构建出一个高性能、高可靠性的MySQL集群系统。这样的集群不仅能够提供稳定的服务,还能够在出现故障时快速恢复,保障业务连续性。
- Galera Cluster for MySQL:是MySQL集群的一种解决方案,提供同步多主复制。 - Percona XtraDB Cluster (PXC):使用Galera Cluster技术,是Percona提供的开源MySQL高可用集群解决方案。 3. 基于复制的高可用...
MySQL Proxy 是一个轻量级的中间件,用于在 MySQL 客户端和服务器之间提供额外的功能,如负载均衡、故障切换、数据过滤等。然而,使用 MySQL Proxy 时可能会遇到一些问题,本篇文章将详细讨论这些问题及其解决方案。...
Amoeba 是一个基于 MySQL 的 proxy,能够集中地响应应用的请求,并根据用户事先设置的规则,将 SQL 请求发送到特定的数据库上执行,从而实现负载均衡、读写分离、高可用性等需求。 一、Amoeba 简介 Amoeba 是一个...
mysql-proxy --proxy-lua-script=/usr/share/mysql-proxy/rw-splitting.lua --proxy-backend-addresses=192.168.1.126:3306,192.168.1.145:3306 --proxy-read-only-backend-addresses=192.168.1.145:3306 --proxy-...
本文将详细介绍如何通过配置两台MySQL服务器和一台代理服务器来实现MySQL代理的读写分离,以提高数据库系统的读写效率和负载均衡能力。该方案不仅适用于高并发场景下的Web应用,还能有效降低单一服务器的压力,确保...
04-mysql主从通过mysql-proxy程序实现读写分离.doc 老男孩linux测试读写分离php网站源代码.zip 第十二部 MySQL高可用工具heartbeat实战(33节) 01-heartbeat介绍与作用.avi 02-Heartbeat的工作原理与服务切换...