sunsir 发表于 2018-9-28 09:36:45

mysql cluster 配置

  Mysql cluster 安装配置手册
  目录
  系统简介.... 1
  1. 安装系统.... 2
  1.1 安装centOS6.4. 2
  1.2 关闭SELINUX. 2
  1.3 系统升级并删除旧内核... 2
  1.4 开启防火墙相应端口... 2
  1.5 安装编译工具... 3
  1.6 安全更新... 3
  1.7 软件安装环境设置... 3
  1:设定系统目录... 3
  1.1:软件存放目录... 3
  1.2:软件下载路径... 3
  1.8 ip 地址设置... 4
  1:管理节点设置如下... 4
  2:数据节点1设置如下:... 4
  3:数据节点2设置如下:... 5
  1.9 ntp 配置... 6
  1:在管理节点上配置如下... 6
  2:数据节点和sql节点上配置如下... 6
  1.10 应用软件清单... 6
  2. 应用程序安装配置.... 7
  2.1服务端管理节点安装... 7
  1:基础环境配置... 7
  2:修改管理配置文件... 7
  3:启动应用程序... 10
  2.2数据节点和sql节点(172.16.10.115)安装... 11
  1:基础环境安装... 11
  2:安装应用程序... 11
  3:启动应用程序... 12
  3. 功能测试.... 13
  3.1 数据复制功能... 13
  1:登陆172.16.10.115. 13
  2:登陆 172.16.10.116 查看数据是否完整复制... 13
  3.2 增加新的节点... 13
  1:修改管理节点的config.ini配置文件... 13
  2:重启管理节点... 14
  3:滚动重启旧的数据存储节点服务... 14
  4:滚动重启所有的数据查询节点服务... 15
  5:以初如化方式启动新增加的数据存储节点... 15
  6:为新节点增加分组... 15
  7:重新分配集群数据... 16
  3.3数据节点故障切换... 17
  1:模拟节点故障... 17
  2:登陆管理台查看系统状态... 17
  3:测试数据访问... 17
  3.4 sql 节点均衡负载... 17
  1:部署keepalived + LVS. 17
  2:真实主机上配置添加启动脚本... 20
  3.5 双管理节点设置... 22
  1:修改管理节点配置文件... 22
  2:复制配置文件... 22
  3:轮流重启管理节点... 22
  4:修改数据节点和sql节点配置文件... 22
  5:轮流重启数据节点... 23
  6:轮流重启sql节点... 23
  3.6数据节点故障恢复... 23
  1:安装应用软件... 23
  2:复制mysql配置文件... 23
  3: 启动数据节点程序... 24
  4:创建需要的应用数据库... 24
  3.7 创建磁盘表... 24
  1:创建日志文件组... 24
  2:创建表空间... 24
  3:创建表使用磁盘表... 25
  3.8删除表空间... 25
  1:删除使用该表空间的表... 25
  2:删除所有数据文件... 25
  3:删除表空间... 26
  命令格式如下: mysql> DROP TABLESPACE ts_1 -> ENGINE NDBCLUSTER;26
  4:查看表空间使用情况... 26
  5:删除日志文件组... 26
  3.9 MySQL簇的联机备份... 26
  1:簇备份概念... 26
  2:备份参数... 27
  3:备份步骤... 28
  4:要想放弃正在处理的备份... 29
  5:如何恢复簇备份... 29
  6:注意事项... 32
  4.故障处理.... 32
  4.1. 错误一... 32
  4.2. 错误二... 33
  1:修改数据节点Mysql的配置文件... 33
  2:修改管理节点配置文件增大数据和索引大小... 33
  3:增大表空间容量... 33
  4.3.错误三... 34
  4.4.错误四... 35
  4.5.错误五... 35
  4.6.错误六... 36
  4.7.错误七... 36
  4.8.错误八... 37
  4.9.错误九... 37
  系统简介
  该系统应用mysql cluster gpl 版本安装,具有mysqlcluster的功能,其中包括数据复制,故障切换,应用数据备份等内容,结合keepalived +lvs 系统实现访问节点的负载均衡,可以对数据的告诉访问提供有效的支持。“NDB” 是一种“内存中”的存储引擎,它具有可用性高和数据一致性好的特点。
  MySQL Cluster 能够使用多种故障切换和负载平衡选项配置NDB存储引擎,但在 Cluster 级别上的存储引擎上做这个最简单。MySQL Cluster的NDB存储引擎包含完整的数据集,仅取决于 Cluster本身内的其他数据。MySQL Cluster的 Cluster部分可独立于MySQL服务器进行配置。在MySQL Cluster中, Cluster的每个部分被视为1个节点。管理(MGM)节点:这类节点的作用是管理MySQL Cluster内的其他节点,如提供配置数据、启动并停止节点、运行备份等。由于这类节点负责管理其他节点的配置,应在启动其他节点之前首先启动这类节点。MGM节点是用命令“ndb_mgmd”启动的。数据节点:这类节点用于保存 Cluster的数据。数据节点的数目与副本的数目相关,是片段的倍数。例如,对于两个副本,每个副本有两个片段,那么就有4个数据节点。不过没有必要设置多个副本。数据节点是用命令“ndbd”启动的。 SQL节点:这是用来访问 Cluster数据的节点。对于MySQL Cluster,客户端节点是使用NDB Cluster存储引擎的传统MySQL服务器。通常,SQL节点是使用命令“mysqld–ndbcluster”启动的,或将“ndbcluster”添加到“my.cnf”后使用“mysqld”启动。注释:在很多情况下,术语“节点”用于指计算机,但在讨论MySQL Cluster时,它表示的是进程。在单台计算机上可以有任意数目的节点,为此,我们采用术语“ Cluster主机”。
  1. 安装系统
  1.1 安装centOS6.4
  最小化安装的centOS6.4
  分别安装两台mysql cluster管理节点服务器、两台mysql cluster 数据节点服务器和sql节点服务器,sql节点和数据节点可以在一台机子上安装。
  1.2 关闭SELINUX
  #vi /etc/selinux/config
  #SELINUX=enforcing   #注释掉此项
  #SELINUXTYPE=targeted#注释掉此项
  SELINUX=disabled#增加关闭selinux
  :wq保存,关闭。
  #shutdown -r now重启系统
  1.3 系统升级并删除旧内核
  使用下列命令对系统进行强制升级
  yum -y update
  执行该命令查看已有的内核版本
  #rpm -q kernel
  通过参数-e加上内核全名来删除想删除的内核版本
  #rpm -e xxxxxxxx
  注意:删除就内核后需要重启系统,绿色字体为具体的版本号
  1.4 开启防火墙相应端口
  打开防火墙相应的端口
  #vi/etc/sysconfig/iptables
  在打开的文件中添加下面的内容(在22端口的下面添加)
  -A INPUT -m state --stateNEW -m tcp -p tcp --dport 3306 -j ACCEPT
  -A INPUT -m state --stateNEW -m tcp -p tcp --dport 1186 -j ACCEPT
  #开启3306和1186端口
  #/etc/init.d/iptablesrestart#重启防火墙使配置生效
  1.5 安装编译工具
  对所有服务器安装编译工具,执行如下命令
  #rpm -e mysql-libs --nodeps
  #yum install wgetmake gcc gcc-c++ zlib-devel opensslopenssl-devel pcre-devel gdkernel keyutilspatchperlpopt-static kernel-devel libnl* popt*yum-securityntp make cmake bison perl libaio python-paramiko.noarch
  1.6 安全更新
  系统稳定后定期对系统进行安全更新,命令如下:
  #yum --security check-update
  1.7 软件安装环境设置
  1:设定系统目录
  1.1:软件存放目录
  输入如下命令,让软件存储到此目录下/usr/local/src
  #cd /usr/local/src
  1.2:软件下载路径
  #wget http://dev.mysql.com/get/Downloads/MySQL-Cluster-7.3/MySQL-Cluster-gpl-7.3.3-1.el6.x86_64.rpm-bundle.tar
  #tar –xvf MySQL-Cluster-gpl-7.3.3-1.el6.x86_64.rpm-bundle.tar
  1.8 ip 地址设置
  1:管理节点设置如下
  #vi /etc/sysconfig/network-scripts/ifcfg-eth0
  内容如下:
  DEVICE=eth0
  TYPE=Ethernet
  UUID=f97bf9ed-e6ab-4243-adcb-d055a1fe33f1
  ONBOOT=yes
  NM_CONTROLLED=yes
  BOOTPROTO=none
  HWADDR=00:0C:29:EC:D6:21
  IPADDR=172.16.10.117
  PREFIX=24
  GATEWAY=172.16.10.254
  DNS1=8.8.8.8
  DEFROUTE=yes
  IPV4_FAILURE_FATAL=yes
  IPV6INIT=no
  NAME="System eth0"
  #service network restart
  2:数据节点1设置如下:
  #vi /etc/sysconfig/network-scripts/ifcfg-eth0
  内容如下:
  DEVICE=eth0
  TYPE=Ethernet
  UUID=f97bf9ed-e6ab-4243-adcb-d055a1fe33f1
  ONBOOT=yes
  NM_CONTROLLED=yes
  BOOTPROTO=none
  HWADDR=00:0C:29:EC:D6:21
  IPADDR=172.16.10.115
  PREFIX=24
  GATEWAY=172.16.10.254
  DNS1=8.8.8.8
  DEFROUTE=yes
  IPV4_FAILURE_FATAL=yes
  IPV6INIT=no
  NAME="System eth0"
  #service network restart
  3:数据节点2设置如下:
  #vi /etc/sysconfig/network-scripts/ifcfg-eth0
  内容如下:
  DEVICE=eth0
  TYPE=Ethernet
  UUID=f97bf9ed-e6ab-4243-adcb-d055a1fe33f1
  ONBOOT=yes
  NM_CONTROLLED=yes
  BOOTPROTO=none
  HWADDR=00:0C:29:EC:D6:21
  IPADDR=172.16.10.116
  PREFIX=24
  GATEWAY=172.16.10.254
  DNS1=8.8.8.8
  DEFROUTE=yes
  IPV4_FAILURE_FATAL=yes
  IPV6INIT=no
  NAME="System eth0"
  #service network restart
  1.9 ntp 配置
  1:在管理节点上配置如下
  #vi /etc/ntp.conf
  添加一下内容:
  restrict 172.16.10.0 mask 255.255.255.0 nomodifynotrap
  保存退出后,重启ntp服务
  #service ntpd restart
  #chkconfig ntpd on
  2:数据节点和sql节点上配置如下
  #vi /etc/ntp.conf
  注释掉一下内容:
  #server 0.centos.pool.ntp.org iburst
  #server 1.centos.pool.ntp.org iburst
  #server 2.centos.pool.ntp.org iburst
  #server 3.centos.pool.ntp.org iburst
  增加下面一行
  server 172.16.10.117
  #service ntpd restart
  #chkconfig ntpd on
  1.10 应用软件清单
  操作系统:centos6.4 64bit
  数据库软件:
  MySQL-Cluster-client-gpl-7.3.3-1.el6.x86_64.rpm
  MySQL-Cluster-devel-gpl-7.3.3-1.el6.x86_64.rpm
  MySQL-Cluster-server-gpl-7.3.3-1.el6.x86_64.rpm
  Keepalived 软件:
  keepalived-1.1.17.tar.gz
  Lvs软件:
  ipvsadm-1.24.tar.gz
  2. 应用程序安装配置
  2.1服务端管理节点安装
  1:基础环境配置
  #rpm -e mysql-libs --nodeps
  #yum -y install make cmake bison
  #yum -y install perl libaio
  #yum -yinstall python-paramiko.noarch
  #cd /usr/local/src
  #wget http://downloads.mysql.com/archives/get/file/MySQL-Cluster-server-gpl-7.3.3-1.el6.x86_64.rpm
  #yum -y localinstallMySQL-Cluster-server-gpl-7.3.3-1.el6.x86_64.rpm
  2:修改管理配置文件
  #mkdir /var/lib/mysql-cluster
  #vi /var/lib/mysql-cluster/config.ini
  内容如下:
  #
  # Configuration file for MyCluster
  #
  
  Portnumber=1186
  
  NodeId=46
  HostName=172.16.10.117
  DataDir=/var/lib/mysql-cluster/
  Portnumber=1186
  
  SendBufferMemory=4M
  ReceiveBufferMemory=4M
  
  BackupMaxWriteSize=1M
  BackupDataBufferSize=16M
  BackupLogBufferSize=4M
  BackupMemory=20M
  BackupReportFrequency=10
  MemReportFrequency=30
  LogLevelStartup=15
  LogLevelShutdown=15
  LogLevelCheckpoint=8
  LogLevelNodeRestart=15
  DataMemory=8M
  IndexMemory=4M
  MaxNoOfTables=4096
  MaxNoOfOrderedIndexes=4096
  MaxNoOfTriggers=3500
  NoOfReplicas=2
  StringMemory=25
  DiskPageBufferMemory=256M
  SharedGlobalMemory=96M
  LongMessageBuffer=32M
  MaxNoOfConcurrentTransactions=16384
  BatchSizePerLocalScan=512
  FragmentLogFileSize=64M
  NoOfFragmentLogFiles=16
  RedoBuffer=32M
  MaxNoOfExecutionThreads=2
  StopOnError=false
  LockPagesInMainMemory=1
  TimeBetweenEpochsTimeout=32000
  TimeBetweenWatchdogCheckInitial=60000
  TransactionInactiveTimeout=60000
  HeartbeatIntervalDbDb=15000
  HeartbeatIntervalDbApi=15000
  MaxNoOfAttributes= 34760
  
  NodeId=1
  HostName=172.16.10.115
  DataDir=/var/lib/mysql/
  
  NodeId=2
  HostName=172.16.10.116
  DataDir=/var/lib/mysql/
  
  
  NodeId=50
  HostName=172.16.10.115
  
  NodeId=51
  HostName=172.16.10.116
  
  
  ###############################################################################
  其中 172.16.10.117 为管理节点ip.172.16.10.115和172.16.10.116 为数据库节点ip.用于表示Mysqld(API)节点的定义,空的必须和现有API节点数一致。用于表示数据节点的定义。用于定义管理节点,多个管理节点的情况。需要分别用定义各个节点。SQL节点和数据节点定义的管理IP之间用,分割。
  注意区分大小写
  3:启动应用程序
  # /usr/sbin/ndb_mgmd -f/var/lib/mysql-cluster/config.ini
  #vi /etc/rc.local
  加入一下内容:
  /usr/sbin/ndb_mgmd -f/var/lib/mysql-cluster/config.ini
  2.2数据节点和sql节点(172.16.10.115)安装
  1:基础环境安装
  #rpm -e mysql-libs
  # cd /usr/local/src/
  #wget http://downloads.mysql.com/archives/get/file/MySQL-Cluster-client-gpl-7.3.3-1.el6.x86_64.rpm
  #wgethttp://downloads.mysql.com/archives/get/file/MySQL-Cluster-devel-gpl-7.3.3-1.el6.x86_64.rpm
  #wget http://downloads.mysql.com/archives/get/file/MySQL-Cluster-server-gpl-7.3.3-1.el6.x86_64.rpm
  2:安装应用程序
  #yum -y localinstallMySQL-Cluster-*
  #vi /etc/my.cnf
  内容如下:
  
  ndb-connectstring="172.16.10.117:1186"
  
  ndbcluster
  ndb-connectstring="172.16.10.117:1186"
  datadir=/var/lib/mysql
  port=3306
  ###############################################################################
  其中172.16.10.117 为管理节点ip。注意格式。在ip地址和端口上要加“号。
  3:启动应用程序
  #/etc/init.d/mysql restart
  #chkconfig mysql on
  #ndbmtd --initial            #第一次启动的时候使用(仅限第一次使用和备份恢复数据
  时使用,以后不能使用该命令,否则会丢失所有数据)
  #ndbmtd                                 #以后启动数据节点,使用该命令
  #vi /etc/rc.local
  加入一下内容:
  /usr/sbin/ndbmtd
  172.16.10.116 安装方法和172.16.10.115 安装方法一样。
  登陆管理端
  #ndb_mgm
  ndb_mgm> show
  出现一下内容表示连接正常
http://blog.51cto.com/e/u/themes/default/images/spacer.gif
  3. 功能测试
  3.1 数据复制功能
  1:登陆172.16.10.115
  #mysql -uroot -p
  mysql>create database hahaha;
  mysql>use hahaha
  mysql>create table ddd(id int) engine=ndbcluster;
  mysql>insert into ddd valuez(1)
  注意在节点上创建表时,表的引擎为ndbcluster。
  2:登陆 172.16.10.116 查看数据是否完整复制
  #mysql –uroot –p
  Mysql>use hahaha;
  Mysql>select * from ddd;
  3.2 增加新的节点
  注意:增加或减少数据节点的数量和NoOfReplicas(即副本数,通过管理节点的config.ini配置文件来设置)有关,一般来说NoOfReplicas是2,那么增加或减少的数量也应该是成对的,否则要设置另外的NoOfReplicas。首先必须确保新加入的数据节点作为新的group加入,默认2个node为1个group,Group数量=Node总数/NoOfReplicas数。
  1:修改管理节点的config.ini配置文件
  添加如下一段:
  
  NodeId=6
  HostName= 172.16.10.118
  Datadir=/var/lib/mysql
  
  NodeId=7
  HostName= 172.16.10.119
  Datadir=/var/lib/mysql
  这里的Id不能跟已有的Id重复
  2:重启管理节点
  用reload方式启动管理节点
  执行ndb_mgm进入管理命令界面
  找到管理节点的id,然后执行管理节点id stop,退出
  # libexec/ndb_mgmd -f /opt/mysql-cluster/etc/config.ini --reload   #加上reload参数,使得修改过的config.ini生效
  启动成功后用show查看,可以看到新加入的数据节点,并且处于未连接状态。
  3:滚动重启旧的数据存储节点服务
  (滚动重启,不能所有节点同时重启,如果同时停止,数据库前端查询就会出现错误)
  ndb_mgm> 2 RESTART
  Node 2: Node shutdown initiated
  Node 2: Node shutdown completed, restarting, no start.
  Node 2 is being restarted
  ndb_mgm> Node 2: Start initiated (version 7.1.19)
  Node 2: Started (version 7.1.19)
  ndb_mgm> 3 RESTART
  Node 3: Node shutdown initiated
  Node 3: Node shutdown completed, restarting, no start.
  Node 3 is being restarted
  ndb_mgm> Node 3: Start initiated (version 7.1.19)
  ndb_mgm> Node 3: Started (version 7.1.19)
  4:滚动重启所有的数据查询节点服务
  #bin/mysqladmin-uroot -ppassword shutdown
  # mysqld_safe--console --ndbcluster --ndb-connectstring=172.16.10.117
  5:以初如化方式启动新增加的数据存储节点
  #ndbd –c 172.16.10.117--initial
  启动后在管理节点上用show命令查看可以看到新加入的节点已经启动并处于未分组状态
  id=3 @172.16.10.118 ((mysql-5.6.14 ndb-7.3.3, nonodegroup)
  id=4 @172.16.10.119 ((mysql-5.6.14 ndb-7.3.3, no nodegroup)
  6:为新节点增加分组
  在管理节点上ndb_mgm下输入以下命令:
  ndb_mgm> create nodegroup 3,4
  这时在管理节点上show,可以看到新节点已经分组。
  ndb_mgm> show
  Connected to Management Server at: localhost:1186
  Cluster Configuration
  ---------------------
   4 node(s)
  id=1 @172.16.10.115 (mysql-5.6.14 ndb-7.3.3, Nodegroup: 0, Master)
  id=2 @172.16.10.116 (mysql-5.6.14 ndb-7.3.3, Nodegroup: 0)
  id=3 @172.16.10.117 (mysql-5.6.14 ndb-7.3.3, Nodegroup: 1)
  id=4 @172.16.10.118 (mysql-5.6.14 ndb-7.3.3, Nodegroup: 1)
   1 node(s)
  id=49 @172.16.10.117 (mysql-5.6.14 ndb-7.3.3)
   4 node(s)
  id=4 @172.16.10.115 (mysql-5.6.14 ndb-7.3.3)
  id=5 @172.16.10.116 (mysql-5.6.14 ndb-7.3.3)
  id=8 @172.16.10.117 (mysql-5.6.14 ndb-7.3.3)
  id=9 @172.16.10.118 (mysql-5.6.14 ndb-7.3.3)
  7:重新分配集群数据
  登陆任意sql客户端连接数据库
  #mysql –uroot -p
  Mysql>SELECT TABLE_SCHEMA,TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE ENGINE = 'NDBCLUSTER';
  Mysql>ALTER ONLINE TABLE table_name REORGANIZEPARTITION;
  Mysql >OPTIMIZE TABLE table_name ;
  然后通过show命令或者使用ndb_desc命令查看
  ndb_desc -c 172.16.10.117 -d tuge datasource -p
  -c后面跟管理节点的ip,-d跟数据库的名字,datasource为表名,-p输出分区的详细信息迁移之后空间还没有释放出来,需要通过optimize命令优化表,释放迁移走的空间(当optimize一个ndb大表的时候很慢,很容易出问题)
  3.3数据节点故障切换
  1:模拟节点故障
  登陆数据节点服务器,使用一下命令结束掉进程
  # pkill -9 ndbmtd
  2:登陆管理台查看系统状态
  Ndb_mgm>show
  如下图状态所示
http://blog.51cto.com/e/u/themes/default/images/spacer.gif
  3:测试数据访问
  登陆sql节点连接数据库
  # mysql –uroot –p
  查看数据是否完整。
  Mysql>select count(*)from table_name ;
  查看数据插入是否正常。
  Mysql>insert into table_name values();
  3.4 sql 节点均衡负载
  1:部署keepalived + LVS
  在管理节点上部署keepalived+lvs。配置过程参考keepalived+lvs 安装文档
  Keeplived 配置文件示例是如下图
  ! Configuration File for keepalived
  global_defs {
  notification_email {                        #定义了发送报警的email
  acassen@firewall.loc
  failover@firewall.loc
  sysadmin@firewall.loc
  }
  notification_email_from Alexandre.Cassen@firewall.loc
  smtp_server 192.168.200.1
  smtp_connect_timeout 30
  router_id LVS_DEVEL                   #定义了vrrp router的ID,主备需要一致
  }
  vrrp_instance VI_81 {
  stateMASTER
  #备份服务器上将MASTER改为BACKUP
  interface eth0                              #keepalive检测的网络接口
  virtual_router_id 81               #主、备机的virtual_router_id必须相同
  priority 100                  #主、备机取不同的优先级,主机 > 备份机
  advert_int 1         #VRRPMulticast广播周期秒数
  authentication {
  auth_type PASS      #VRRP认证方式
  auth_pass 1111       #VRRP口令字
  }
  virtual_ipaddress {
  172.16.10.119
  #(这里写用于服务的VIP,这些VIP不会被用于keepalived检测状态)
  #       192.168.200.17
  #       192.168.200.18
  }
  }
  virtual_server 172.16.10.119 3306 {            # 定义用于服务的virtual_server
  delay_loop 6                               #每隔2秒查询realserver状态
  lb_algo wrr                                        #LVS调度算法为Round Robin
  lb_kind DR                                  #LVS工作模式为Direct Route
  nat_mask 255.255.255.0
  persistence_timeout 50
  protocol TCP
  real_server 172.16.10.116 3306 {          #定义Real Server
  weight 1                                       #RealServer的权重
  TCP_CHECK {
  connect_timeout 3    #连接超时时间
  nb_get_retry 3          #重试次数
  delay_before_retry 3 #延迟时间
  }
  }
  real_server 172.16.10.116 3306 {
  weight 1
  TCP_CHECK {
  connect_timeout 3
  nb_get_retry 3
  delay_before_retry 3
  }
  }
  }
  2:真实主机上配置添加启动脚本
  # vi /bin/lvs_DR.sh
  内容如下
  #!/bin/bash
  # Writtenby NetSeek
  #description: Config realserver lo and apply noarp
  WEB_VIP=192.168.2.3
  ./etc/rc.d/init.d/functions
  case"$1" in
  start)
  ifconfig lo:0 $WEB_VIP netmask 255.255.255.255 broadcast $WEB_VIP
  #在回环接口上添加ip为虚拟ip的主机地址,广播地址为本身。
  /sbin/route add -host $WEB_VIP dev lo:0
  #为虚拟ip做一个主机路由
  echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
  echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
  echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
  echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
  #将上面的参数设定为指定的值
  sysctl -p >/dev/null 2>&1
  echo "RealServer Start OK"
  ;;
  stop)
  ifconfig lo:0 down
  route del $WEB_VIP >/dev/null 2>&1
  echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore
  echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce
  echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore
  echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce
  echo "RealServer Stoped"
  ;;
  status)
  #Status of LVS-DR real server.
  islothere=`/sbin/ifconfig lo:0 | grep $WEB_VIP`
  isrothere=`netstat -rn | grep "lo:0" | grep $web_VIP`
  if [ ! "$islothere" -o ! "isrothere" ];then
  # Either the route or the lo:0 device
  # not found.
  echo "LVS-DR real server Stopped."
  else
  echo "LVS-DR Running."
  fi
  ;;
  *)
  #Invalid entry.
  echo "$0: Usage: $0 {start|status|stop}"
  exit 1
  ;;
  esac
  exit 0
  # vi /etc/rc.local
  添加开机启动项:
  /bin/lvs_DR.sh start
  3.5双管理节点设置
  ndb 管理节点提供热备
  1:修改管理节点配置文件
  #vi /var/lib/mysql-cluster/config.ini
  在 段的上方。增加新的段内容如下:
  
  NodeId=48                                                                  #新节点id为48,老的节点ip为49
  HostName=172.16.10.21                                                #新管理节点ip
  DataDir=/var/lib/mysql-cluster/
  Portnumber=1186
  注意NodeId 不要和现有的NodeId冲突
  2:复制配置文件
  登陆新增加的管理节点
  将原有管理节点上的配置文件,复制到新管理节点/var/lib/mysql-cluster
  3:轮流重启管理节点
  登陆管理节点1,进行重启
  #pkill -9 ndb_mgmd
  #ndb_mgmd –f /var/lib/mysql-cluster/config.ini--reload
  登陆管理节点2,进行重启
  #pkill -9 ndb_mgmd
  #ndb_mgmd –f/var/lib/mysql-cluster/config.ini --reload
  4:修改数据节点和sql节点配置文件
  #vi /etc/my.cnf
  修改内容如下:
  
  ndb-connectstring="172.16.10.117:1186","172.16.10.21:1186"
  
  ndbcluster
  ndb-connectstring="172.16.10.117:1186","172.16.10.21:1186"
  datadir=/var/lib/mysql
  port=3306
  5:轮流重启数据节点
  登陆数据节点1,进行重启
  #pkill-9 ndbmtd
  #ndbmtd
  登陆数据节点2,进行重启
  #pkill-9ndbmtd
  #ndbmtd
  6:轮流重启sql节点
  登陆sql节点1,进行重启
  #/etc/init.d/mysql restart
  登陆sql节点2,进行重启
  #/etc/init.d/mysql restart
  3.6数据节点故障恢复
  1:安装应用软件
  #yum –y install MySQL-Cluster-server-*MySQL-Cluster-client-* MySQL-Cluster-devel-*
  2:复制mysql配置文件
  复制其他节点的配置文件my.cnf到/etc/目录下
  3:启动数据节点程序
  执行一下命令
  #ndbmtd –initial
  #/etc/init.d/mysql start
  4:创建需要的应用数据库
  #mysql –uroot –p
  Mysql>create database ‘数据库名’
  3.7 创建磁盘表
  1:创建日志文件组
  执行一下命令:
  #mysql –uroot –p
  Mysql> CREATE LOGFILEGROUP lg_2
  ADD UNDOFILE 'undo_2.log'
  INITIAL_SIZE 1024M
  UNDO_BUFFER_SIZE 128M
  ENGINE NDBCLUSTER;
  2:创建表空间
  执行一下命令
  #mysql –uroot –p
  Mysql> CREATE TABLESPACE ts_2    ADDDATAFILE 'data_2.dat'USE LOGFILE GROUP lg_2INITIAL_SIZE 409600M ENGINENDBCLUSTER;
  3:创建表使用磁盘表
  命令行格式如下
  #mysql –uroot –p
  Mysql>CREATE TABLE (id int …….)TABLESPACE ts_2STORAGE DISK ENGINE=NDBCLUSTER;
  3.8删除表空间
  删除日志文件组或者表空间的时候需要按顺序删除,只有在无表使用数据文件的时候才能删除数据文件
  操作顺序:
  1:删除使用该表空间的表
  执行一下命令:
  mysql>DROP TABLE dt_1;
  2:删除所有数据文件
  命令格式如下:

  mysql>>  DROP DATAFILE 'data_2.dat'
  ENGINE NDBCLUSTER;

  mysql>>  DROP DATAFILE 'data_1.dat'
  ENGINE NDBCLUSTER;
  3:删除表空间
  命令格式如下:
  mysql> DROP TABLESPACE ts_1
  -> ENGINE NDBCLUSTER;
  4:查看表空间使用情况
  命令格式如下:
  Mysql>SELECT TABLESPACE_NAME, FILE_NAME,EXTENT_SIZE*TOTAL_EXTENTS/1024/1024 AS TOTAL_MB,EXTENT_SIZE*FREE_EXTENTS/1024/1024 AS FREE_MB, EXTRA FROMinformation_schema.FILES WHERE FILE_TYPE="DATAFILE";
  5:删除日志文件组
  说明:只有使用UNDO logfile group的表空间都删除情况下才能删除undo logfile group
  操作语法:
  mysql> DROP LOGFILE GROUP lg_1
  ENGINE NDBCLUSTER;
  查看undo日志文件使用量信息
  mysql>select * from ndbinfo.logspaces wherelog_type='DD-UNDO';
  mysql>SELECT FILE_NAME, LOGFILE_GROUP_NUMBER,EXTRA   FROMINFORMATION_SCHEMA.FILESWHERELOGFILE_GROUP_NAME = 'lg_2';
  3.9 MySQL簇的联机备份
  1:簇备份概念
  备份指的是在给定时间对数据库的快照。备份包含三个主要部分:
  (1)Metadata(元数据):所有数据库表的名称和定义。
  (2)Table records(表记录):执行备份时实际保存在数据库表中的数据。
  (3)Transaction log(事务日志):指明如何以及何时将数据保存在数据库中的连续记录。
  每一部分(这三部分)均会保存在参与备份的所有数据节点上。在备份过程中,每个节点均会将这三个部分保存在磁盘上的三个文件中(意思是说,有几个节点,将会把相同的数据,保存几份.例如,2个数据节点,那么就会分别在2个节点上,保存2次,保存目录默认为
  
  DateDir=/usr/local/mysql/BACKUP
  (4)BACKUP-backup_id.node_id.ctl
  包含控制信息和元数据的控制文件。每个节点均会将相同的表定义(对于簇中的所有表)保存在自己的该文件中
  (5)BACKUP-backup_id-0.node_id.data
  包含表记录的数据文件,它是按片段保存的,也就是说,在备份过程中,不同的节点会保存不同的片段。每个节点保存的文件以指明了记录所属表的标题开始。在记录清单后面有一个包含关于所有记录校验和的脚注。
  (6)BACKUP-backup_id.node_id.log
  包含已提交事务的记录的日志文件。在日志中,仅保存已在备份中保存的表上的事务。参与备份的节点将保存不同的记录,这是因为,不同的节点容纳了不同的数据库片段。
  在上面所列的内容中,backup_id指的是备份ID,node_id是创建文件的节点的唯一ID。
  使用管理服务器创建备份开始备份前,请确保已为备份操作恰当地配置了簇。
  2:备份参数
  (以下参数,都写入在mgmd的config.ini配置文件中)
  本节讨论的参数定义了与在线备份执行有关的内存缓冲集。
  (1)BackupDataBufferSize
  在创建备份的过程中,为了将数据发送到磁盘,将使用两类缓冲。备份数据缓冲用于填充由扫描节点的表而记录的数据。一旦将该缓冲填充到了指定的水平BackupWriteSize(请参见下面的介绍),就会将页发送至磁盘。在将页写入磁盘的同时,备份进程能够继续填充该缓冲,直至其空间消耗完为止。出现该情况时,备份进程将暂停扫描,直至一些磁盘写入操作完成并释放了内存为止,然后扫描继续。
  该参数的默认值为2MB。
  (2)BackupLogBufferSize
  备份日志缓冲扮演的角色类似于备份数据缓冲,不同之处在于,它用于生成备份执行期间进行的所有表写入的日志。相同的原理也适用于备份数据缓冲情形下的页写入,不同之处在于,当备份日志缓冲中没有多余空间时,备份将失败。出于该原因,备份日志缓冲的大小应足以处理执行备份时产生的负载。
  该参数的默认值对于大多数应用程序均是适当的。事实上,备份失败的原因更可能是因为磁盘写入速度不够,而不是备份日志缓冲变满。如果没有为应用程序产生的写负载配置磁盘子系统,簇很可能无法执行所需的操作。最好按恰当的方式配置簇,使得处理器成为瓶颈而不是磁盘或网络连接。默认值是2MB。
  (3)BackupMemory
  该参数是BackupDataBufferSize和BackupLogBufferSize之和。默认值是2MB + 2MB = 4MB。
  (4)BackupWriteSize
  该参数指定了由备份日志缓冲和备份数据缓冲写入磁盘的消息大小。默认值是32KB.
  (5)BackupDataDir
  #可更改默认的备份目录,BackupDataDir=/mysqlback
  #当然前提,mkdir /mysqlback ,需要在所有数据节点上运行
  也能指定存放备份的目录。默认情况下,该目录是FileSystemPath/BACKUP
  (6)FileSystemPath
  该参数指定了存放为元数据创建的所有文件、REDO日志、UNDO日志和数据文件的目录。默认目录是由DataDir指定的。注意,启动ndbd进程之前,该目录必须已存在。
  (7)DataDir
  该参数指定了存放跟踪文件、日志文件、pid文件以及错误日志的目录。
  3:备份步骤
  使用管理服务器创建备份包含以下步骤:
  1)启动管理服务器(ndb_mgm)
  2)执行命令START BACKUP
  3)管理服务器将用消息“指示备份开始”作出应答。这意味着管理服务器将请求提交给了簇,但尚未收到任何回应。
  4)管理服务器回复“备份backup_id开始”,其中,backup_id是该备份的唯一ID(如果未作其他配置,该ID还将保存在簇日志中)。这意味着簇已收到并开始处理备份请求。它不表示备份已完成。
  5)管理服务器发出消息“备份backup_id完成”,通知备份操作已结束。
  如下图示例(其中2 表示备份id):
  #ndb_mgm> start backup 2;
  Waiting for completed, this may take severalminutes
  Node 1: Backup 2 started from node 49
  Node 1: Backup 2 started from node 49 completed
  StartGCP: 489 StopGCP: 492
  #Records: 2089 #LogRecords: 0
  Data: 52400 bytes Log: 0 bytes
  ndb_mgm> Node 1: Started (version 7.3.3)
  Node 2: Started (version 7.3.3)
  上例中表示该备份实在节点node 49 这台机子上执行的,所以在执行恢复操作时。在需要先在node 49 这台机子上,执行恢复操作命令如下:
  #ndb_restore -c 172.16.10.117-n 2 -m -b 1 -r /mysql/BACKUP/BACKUP-1/
  mgmd为管理节点的ip
  node_id为数据节点ID,在mgm的客户端通过show查看
  -m在第一个数据节点上执行,它的作用恢复数据元,数据元的作用:所有数据库表的名称和定义.在其他节点,上就不需要此参数了.
  backup_id就是备份的次数.也就是你在此startbackup上,提示的那个id
  4:要想放弃正在处理的备份
  1)启动管理服务器。
  2)执行命令ABORT BACKUP backup_id。backup_id是当备份开始时包含在管理服务器应大中的备份ID(在消息“备份backup_id启动”中)
  3)管理服务器用消息“放弃指示的备份backup_id”确认放弃请求,注意,尚未收到对该请求的实际回应。
  4)一旦放弃了备份,管理服务器将通报“备份backup_id因XYZ而放弃”。这意味着簇中止了备份,并从簇文件系统中删除了与该备份有关的所有文件。在系统shell中使用下述命令,也能放弃正在执行的备份:shell> ndb_mgm -e "ABORT BACKUP backup_id"
  注释:执行放弃操作时,如果没有ID为backup_id的备份,管理服务器不会给出任何明确回应。但是,所发出的无效放弃命令将在簇日志中给出
  5:如何恢复簇备份
  簇恢复程序是作为单独的命令行实用工具ndb_restore实现的,它将读取由备份(由在管理节点的客户端上执行start backup)创建的文件,并将保存的信息插入数据库。必须为每组备份文件执行恢复程序,也就是说,执行次数与创建备份时运行的数据库节点数相同。(当初创建备份时,有几个数据节点参与,就需要执行这样的命令几次,2个数据节点,就需要执行2次,但第一次与第二次在参数上是不同的,第一次需要参数-m,第二次,不用加此参数,此参数的作用是,创建数据元.)
  首次执行恢复程序时,还需要恢复元数据。换句话讲,必须重新创建数据库表(注意,开始执行恢复操作时,簇中应有一个空数据库,这里说的创建数据库表,并不是说,让你在sql节点上,在指定的库内,用createtable建个空白,而是说,用ndb_restore命令中的一个参数-m)。恢复程序对于簇来说相当于API,因此,需要一个空闲连接,以便与簇相连。(为此,我们可以在config.ini中添加一个,以便于有个空的节点ID,为它提供.)可使用ndb_mgm命令SHOW(在系统shell下使用ndb_mgm-e SHOW即可完成该操作)进行验证,查看,是否有一个空的mysql(api)节点,没有任何连接,并且允许任意主机,连接。可以使用开关“-c connectstring”来确定MGM节点的位置。(关于连接字符串的更多信息,请参见17.4.4.2节,“MySQL簇连接字符串”。备份文件必须位于恢复程序参量给定的目录下。能够使用与创建时所用配置不同的配置,将备份恢复到数据库。例如,对于备份ID为12的备份,该备份是在具有两个数据库节点(节点ID无恶2和3)的簇中创建的,可以将其恢复到具有4个节点的簇中。这样,ndb_restore必须运行两次,为创建备份时的每个数据库节点运行一次。
  我恢复实例操作流程():
  (1)首先备份,start backup(记住,backup_id)
  (2)修改config.ini,再其追加个---增加空的的个数要和现有的API节点数据相同。
  增加前:
  2 node(s)
  id=50   @172.16.10.115(mysql-5.6.14 ndb-7.3.3)
  id=51   @172.16.10.116(mysql-5.6.14 ndb-7.3.3)
  增加后:
     4 node(s)
  id=50   @172.16.10.115(mysql-5.6.14 ndb-7.3.3)
  id=51   @172.16.10.116(mysql-5.6.14 ndb-7.3.3)
  id=52 (not connected,accepting connect from any host)
  id=53 (not connected,accepting connect from any host)
  (3)停止mgmd,ndb_mgm -e shutdown(如果是在第一次添加空闲节点后,可以执行该命令结束掉管理节点和其他节点。在以后的恢复操作中,不需要每次都关闭到管理节点)
  (4)启动mgmd,ndb_mgmd(当然,在config.ini文件目录下执行此命令)
  (5)启动数据节点:ndbd --initial(有几个节点,执行此命令几次)
  (6)在数据节点上执行ndb_restore -c mgmd -n node_id -m -bbackup_id -r /path/to/backup/files
  我的:ndb_restore -c 172.16.10.117 -n 2 -m -b 1-r /mysql/BACKUP/BACKUP-1/
  记住,这个"/",很重要.
  mgmd为管理节点的ip
  node_id为数据节点ID,在mgm的客户端通过show查看
  -m在第一个数据节点上执行,它的作用恢复数据元,数据元的作用:所有数据库表的名称和定义.在其他节点,上就不需要此参数了.
  backup_id就是备份的次数.也就是你在此startbackup上,提示的那个id,如果不知道,可以到保存此备份的目录下看.
  执行的结果:(下)
  #/usr/local/mysql/bin/ndb_restore -c 172.16.10.117-n 2 -m -b 1 -r /mysqlback/BACKUP/BACKUP-1/
  Ndb version in backup files: Version5.0.19
  Connected to ndb!!
  Successfully restored table test/def/ctest
  _____________________________________________________
  Processing data in table: test/def/ctest(2) fragment 0
  _____________________________________________________
  Processing data in table: sys/def/NDB$EVENTS_0(1) fragment 0
  _____________________________________________________
  Processing data in table: sys/def/SYSTAB_0(0) fragment 0
  Restored 0 tuples and 0 log entries
  NDBT_ProgramExit: 0 - OK
  执行过后,在其sql节点上,只能看到表,不能看到数据,哈哈,这就是-m的作用!
  (7)在其他数据节点上执行
  ndb_restore -c 192.168.1.112 -n 3 -b 1 -r /mysql/BACKUP/BACKUP-1/
  执行的结果:(下)
  # /usr/local/mysql/bin/ndb_restore -c 192.168.1.112 -n 3 -b 1-r /mysqlback/BACKUP/BACKUP-1/
  Ndb version in backup files: Version 5.0.19
  Connected to ndb!!
  _____________________________________________________
  Processing data in table: test/def/ctest(2) fragment 1
  _____________________________________________________
  Processing data in table: sys/def/NDB$EVENTS_0(1) fragment 1
  _____________________________________________________
  Processing data in table: sys/def/SYSTAB_0(0) fragment 1
  Restored 1 tuples and 0 log entries
  NDBT_ProgramExit: 0 - OK
  执行过后,就能用select看到数据了
  注释:对于快速恢复,能够以并行方式恢复数据,但必须有足够的可用簇连接。然而,数据文件必须始终前于日志文件。
  注意:
  6:注意事项
  1:如果采用磁盘表方式存储数据时,在恢复的时候需要将mysql 数据库目录中的/var/lib/mysql/ndb_1_fs目录中的数据文件和undofile 文件重新命名或者删除掉。在恢复数据的时候,ndb节点,在需要按以下命令执行
  #pkill -9 ndbmtd
  #ndbmtd --initial (进行初始化操作)
  管理节点如果已经添加有空的或者节点。
  2:在执行 /usr/local/mysql/bin/ndb_restore -c 172.16.10.117 -n 2 -m -b 1 -r /var/lib/mysql/BACKUP/BACKUP-1命令后,如果需要恢复整个数据库,即是整个数据库都被删除(drop database),则在恢复数据后,需要先创建数据库(create database ),然后数据才能出现。
  4.故障处理
  4.1. 错误一
  管理台提示以下错误,无法正常添加节点。

  - Failed to allocate nodeid, error: 'Error:Could not alloc node>  该故障说明配置文件中没有172.16.10.24的NDB节点'
  4.2. 错误二
  创建表提示
  Error Code: 1114 - The table 'USER_PROPS' isfull
  1:修改数据节点Mysql的配置文件
  #vi /etc/my.cnf,
  在下添加/修改两行:
  tmp_table_size = 256M
  max_heap_table_size = 256M
  2:修改管理节点配置文件增大数据和索引大小
  #vi /var/lib/mysql-cluster/config.ini
  增加或修改以下内容:
  DataMemory=1024M
  IndexMemory=512
  MaxNoOfOrderedIndexes=1024
  3:增大表空间容量
  3.1:查看表空间使用情况
  Mysql>SELECT TABLESPACE_NAME, FILE_NAME,EXTENT_SIZE*TOTAL_EXTENTS/1024/1024 AS TOTAL_MB,EXTENT_SIZE*FREE_EXTENTS/1024/1024 AS FREE_MB, EXTRA FROMinformation_schema.FILES WHERE FILE_TYPE="DATAFILE";
  3.2:修改表空间,增加新的数据文件
  Mysql>ALTER TABLESPACE ts_1
  ADD DATAFILE 'data_4.dat'
  INITIAL_SIZE 10240M
  ENGINE NDBCLUSTER;
  3.3:查看undo日志文件使用量信息
  Mysql>select * from ndbinfo.logspaces wherelog_type='DD-UNDO';
  Mysql>SELECT FILE_NAME,LOGFILE_GROUP_NUMBER, EXTRA   FROMINFORMATION_SCHEMA.FILESWHERELOGFILE_GROUP_NAME = 'lg_2';
  3.5:修改日志文件组,增加新的undo file文件

  Mysql>>  ADD UNDOFILE 'undo_2.log'
  INITIAL_SIZE 2048M
  ENGINE NDBCLUSTER;
  4.3.错误三
  无法创建日志文件组,并添加undo日志文件(如果创建时按以下语句执行报语法错误提示,可能是编码问题,运行命令setcharacter_set_client=latin1; 原因:Character sets and binary log files. Currently, thendb_apply_status and ndb_binlog_index tables are created using the latin1(ASCII) character set. Because names of binary logs are recorded in this table,binary log files named using non-Latin characters are not referenced correctlyin these tables. This is a known issue, which we are working to fix. (Bug#50226))
  1:mysql> create logfile group lg_2 add undofile 'undo_2.log'initial_size 1024M undo_buffer_size 128M engine ndbcluster;
  ERROR 1528 (HY000): Failed to create LOGFILE GROUP
  mysql> show errors;
  +-------+------+---------------------------------------------------+
  | Level | Code | Message |
  +-------+------+---------------------------------------------------+
  | Error | 1296 | Got error 1504 'Out of logbuffer memory' from NDB |
  | Error | 1528 | Failed to create LOGFILE GROUP |
  +-------+------+---------------------------------------------------+
  2 rows in set (0.00 sec)
  2:可以看出是由于超出logbuffermemory 大小原因导致的,是因为SharedGlobalMemory的值比UNDO_BUFFER_SIZE小导致错误。
  解决办法:把SharedGlobalMemory调大,原来我的UNDO_BUFFER_SIZE为128,但是我的SharedGlobalMemory为80,将SharedGlobalMemory设置成384M解决问题。
  4.4.错误四
  导入数据的时候遇到如下报错:
  ERROR 1005 (HY000) at line 25: Can't createtable 'tuge.pangolin_fnc_accountverification' (errno: 140) Error | 1296 | Goterror 738 'Record too big' from NDB
  分析原因:表但行数据太大
  解决办法:需要更改表结构,使最大单行数据的大小小于8KB!
  4.5.错误五
  导入大量数据的时候遇到如下报错
  Error 1297: Got temporary error 'REDO' logoverloaded.
  ERROR : Got temporary error 1204 'Temporary failure,distribution changed' from NDBCLUSTER
  ERROR : Got temporary error 1234 'REDO log filesoverloaded (increase disk hardware)' from NDBCLUSTER
  分析原因:遇到这个错误,是表示redolog用完了,需要增加
  解决办法:修改config.ini文件,更改或添加如下参数:
  FragmentLogFileSize=256M
  NoOfFragmentLogFiles=16
  NoOfFragmentLogFiles这个参数可以更改到更大,但是初始化的时候会慢一点
  4.6.错误六
  在还原的时候遇到如下报错:

  Configuration error: Error : Could not allocnode>  Unable to connect to management server.
  分析原因:因为还原的时候会去连接mysqld,而在配置ndb的时候没有添加空的mysqld节点,因此出现这个报错
  解决办法:在config.ini添加几个空的mysqld节点(空节点数必须和现有节点数一致),语法如下:
  
  
  4.7.错误七
  导入大量数据的时候或者执行大量的insert或者update操作的时候,经常会出现如下报错:
  ERROR 1297 (HY000) at line 1: Got temporaryerror 1218 'Send Buffers overloaded in NDB kernel' from NDBCLUSTER
  这个报错的原因有几个,第一、是参数SendBufferMemory设置过小,第二、和mysqld的二进制日志有关系,第三、和网络环境有关系
  解决办法:查看网络环境是否OK ,是否出现双工模式部队,是否都是千兆网或者百兆网,加大SendBufferMemory的设置,一般2M就够了,设置TotalSendBufferMemory = 256M,最后如果还是出现如此报错,建议关闭mysql的二进制日志,在my.cnf中注释掉相关的参数就可以了,比如:
  #log-bin=mysql-bin
  4.8.错误八
  管理节点错误日志
  Status: Temporary error, restart node
  Message: System error, node killed during noderestart by other node (Internal error, programming error or missing errormessage, please report a bug)
  Error: 2303
  Error data: Node 12 killed this node because GCPstop was detected
  Error object: NDBCNTR (Line: 273) 0x00000006
  分析原因:这个问题是因为undo日志文件空间用完了!
  解决办法:增加undo日志空间文件,语法如下:
  ALTER LOGFILE GROUP lg_1
  ADD UNDOFILE 'undo_2.log'
  INITIAL_SIZE 2048M
  ENGINE NDBCLUSTER;
  4.9.错误九
  还原的时候出现如下报错:
  Temporary error: 266: Time-out in NDB, probablycaused by deadlock
  分析原因:出现这个问题是锁定超过1.2s
  解决办法:在config.ini中加入:TransactionDeadLockDetectionTimeOut=10000 默认是1200

页: [1]
查看完整版本: mysql cluster 配置