首页 > 代码库 > 【初学菜鸟作-MySQL代理服务器设置与集群】

【初学菜鸟作-MySQL代理服务器设置与集群】

           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  --运行代理服务器  


代理服务器运行时,可指定多个rb。使用时运行顺序优先。


 

 

 

启动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 ~]#


 

 

启动管理主机上的管理进程


ndb_mgmd  -f  /etc/config.ini


netstat -untlap  | grep :1186


ndb_mgm


ndb_mgm> show


 

 

启动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)