mysql代理服务器的搭建(读写分离)
实验环境:
所有主机之间物理连接正常
2台数据库服务器上的数据库服务要正常运行,并在期内建立一个同名同表的库,但内容区别,以便验证
停止mysql代理服务器上的数据库服务
2台数据库服务器上授权yeyue用户可以从网络中的所有主机访问自己,对自己 的所有库所有表有完全权限 密码123
grant all on *.* to yeyue@"%" identified by"123";
二、配置代理服务器
1、 验证2台数据库服务器上的授权用户权限
mysql -h192.168.1.10 -uyeyue -p123
mysql -h192.168.1.1 -uyeyue -p123
2、安装提供mysql代理服务的软件
[root@localhost ~]# rpm -qa | grep lua
lua-5.1.4-4.1.el6.x86_64
[root@localhost ~ ]#
tar -zxvfmysql-proxy-0.8.3-linux-rhel5-x86-64bit.tar.gz
mv mysql-proxy-0.8.3-linux-rhel5-x86-64bit /usr/local/mysqlproxy
cd /usr/local/mysqlproxy/
bin 可执行命令
include lib libexec licenses 程序运行时调用的库文件和头文件
share/doc/mysql-proxy/ 脚本文件目录
cd share/doc/mysql-proxy/
chmod +x rw-splitting.lua
主要命令选项
-P 指定代理监听的ip地址,端口
-r 指定读服务器的ip地址,端口
-b 指定写服务器的ip地址,端口
-s 指定lua脚本文件的路径
--keeplive 若进程崩溃,自动重启此进程
./mysql-proxy -P 192.168.13.17:3306 -r192.168.13.15:3306 -b 192.168.13.20:3306 -s/usr/local/mysql-proxy-0.8.3-linux-rhel5-x86-64bit/share/doc/mysql-proxy/rw-splitting.lua --运行代理服务器
代理服务器运行时,可指定多个r和b。使用时运行顺序优先。
启动mysql代理服务
启动前先将两台数据库服务器mysql服务关闭,保证端口的开放。
cd /usr/local/mysqlproxy/bin
./mysql-proxy -P 192.168.1.100:3306 -r 192.168.1.10:3306 -b 192.168.1.1:3306 -s /usr/local/mysqlproxy/share/doc/mysql-proxy/rw-splitting.lua &
查看是否启动成功
netstat -utnalp | grep :3306
停止 mysql代理服务
pkill -9 mysql-proxy
三、测试mysql代理服务的功能
当用户的并发连接数<=4时,把读写操作多发给负责写的数据库服务器(只能看到写服务器的内容)。
当用户的并发连接数>4时,区分用户的读写请求,首次区分后将保持区分状态
(可看到读和写服务器的内容)
vim rw-splittiing.lua --修改并发连接数文件
min_idle_connections = 4,
在客户端通过mysql代理服务访问数据。
mysql -h192.168.1.100 -uyeyue -p123
mysql>
insert into proxydb.a values(1000);
select * from proxydb.a ;
搭建mysql集群
目的:实现单点故障和数据备份功能
集群中的主机角色:
客户机 访问数据
sql节点 用户访问数据的接口
执行用户操作的sql语句
(ndbd)数据节点 存储表里的记录
管理节点 mgm 管理集群中的所有主机
mgm_1 --管理层
sql_10 sql_20 --为用户提供访问服务
ndbd_30 ndbd_40
--数据的储存点
使用集群软件 mysql-cluster 提供数据存储服务
管理进程 运行在管理主机上
启动进程时加载配置文件,确定集群中各个主机的角色。
config.ini
mysql进程 运行在sql节点上
提供的是mysql服务
启动进程时加载配置文件/etc/my.cnf
ndbd进程 运行数据节点上
启动进程时加载配置文件,设置数据的存储位置
/etc/my.cnf
一、公共配置
1、在所有主机上安装提供集群功能的软件
service mysql stop
mv /etc/my.cnf /etc/my.cnf.bak
rpm -e --nodeps MySQL-test MySQL-sharedMySQL-shared-compat MySQL-embedded MySQL-server MySQL-client MySQL-devel
tar -xvfMySQL-Cluster-gpl-7.3.3-1.el6.x86_64.rpm-bundle.tar
rpm -Uvh MySQL-Cluster-*.rpm
二、配置管理主机 (192.168.1.1) 运行管理进程
vim /etc/config.ini --配置文件为自创,名称自定义,但要以ini结尾
[ndbd default] 定义数据节点的公共配置
[ndb_mgmd] 定义管理节点的配置参数
[ndbd] 定义数据节点的配置参数
[mysqld] 定义sql节点的配置参数
[root@mgm-1 ~]# cat /etc/config.ini
[ndbd default]
NoOfReplicas=2
DataMemory=80M
IndexMemory=18M
[ndb_mgmd]
nodeid=1
hostname=192.168.1.1
datadir=/var/log/mysql-cluster --文件建为自己创建,下面也是。
[ndbd]
nodeid=30
hostname=192.168.1.30
datadir=/var/lib/mysql-cluster/data
[ndbd]
nodeid=40
hostname=192.168.1.40
datadir=/var/lib/mysql-cluster/data
[mysqld]
nodeid=10
hostname=192.168.1.10
[mysqld]
nodeid=20
hostname=192.168.1.20
[root@mgm-1 ~]#
三、配置数据节点( 192.168.1.30 192.168.1.40 )
运行ndbd进程 /etc/my.cnf
mkdir -p /var/lib/mysql-cluster/data
vim /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql-cluster/data
ndb-connectstring=192.168.1.1 --指定管理主机
ndbcluster
[mysql_cluster]
ndb-connectstring=192.168.1.1
:wq
四、配置sql节点 (192.168.1.10 192.168.1.20)
运行mysql数据库服务 /etc/my.cnf
vim /etc/my.cnf
[mysqld]
ndbcluster
default-storage-engine=ndbcluster
[mysql_cluster]
ndb-connectstring=192.168.1.1
:wq
四、启动服务
1
[root@mgm-1 ~]# iptables -F
--关闭防火墙
[root@mgm-1 ~]# getenforce
--查看selinux状态
Disabled
[root@mgm-1 ~]#
2 启动管理主机上的管理进程
ndb_mgmd -f /etc/config.ini
netstat -untlap | grep :1186
ndb_mgm
ndb_mgm> show
3 启动ndbd节点上的数据进程 /etc/my.cnf
ndbd
pgrep ndbd
pkill -9 ndbd
4 启动sql节点上的mysqld进程 /etc/my.cnf
/var/lib/mysql/ 存放表结构目录
service mysql restart
在 管理主机 192.168.1.1 查看所有主机的状态
ndb_mgm> show
Cluster Configuration
---------------------
[ndbd(NDB)] 2node(s)
id=30 @192.168.1.30 (mysql-5.6.14 ndb-7.3.3, Nodegroup: 0, *)
id=40 @192.168.1.40 (mysql-5.6.14 ndb-7.3.3, Nodegroup: 0)
[ndb_mgmd(MGM)] 1 node(s)
id=1 @192.168.1.1 (mysql-5.6.14 ndb-7.3.3)
[mysqld(API)] 2 node(s)
id=10 @192.168.1.10 (mysql-5.6.14 ndb-7.3.3)
id=20 @192.168.1.20 (mysql-5.6.14 ndb-7.3.3)