最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

MySQL的集群配置的基本命令使用及一次操作过程实录

来源:动视网 责编:小采 时间:2020-11-09 20:53:42
文档

MySQL的集群配置的基本命令使用及一次操作过程实录

MySQL的集群配置的基本命令使用及一次操作过程实录:1. 先了解一下你是否应该用MySQL集群。 减少数据中心结点压力和大数据量处理,采用把MySQL分布,一个或多个application对应一个MySQL数据库。把几个MySQL数据库公用的数据做出共享数据,例如购物车,用户对象等等,存在数据结点里面。其他不共享的数据还维持
推荐度:
导读MySQL的集群配置的基本命令使用及一次操作过程实录:1. 先了解一下你是否应该用MySQL集群。 减少数据中心结点压力和大数据量处理,采用把MySQL分布,一个或多个application对应一个MySQL数据库。把几个MySQL数据库公用的数据做出共享数据,例如购物车,用户对象等等,存在数据结点里面。其他不共享的数据还维持


1. 先了解一下你是否应该用MySQL集群。

减少数据中心结点压力和大数据量处理,采用把MySQL分布,一个或多个application对应一个MySQL数据库。把几个MySQL数据库公用的数据做出共享数据,例如购物车,用户对象等等,存在数据结点里面。其他不共享的数据还维持在各自分布的MySQL数据库本身中。

2. 集群MySQL中名称概念.(如上图)

1)Sql结点(SQL node--上图对应为MySQLd):分布式数据库。包括自身数据和查询中心结点数据.

2)数据结点(Data node -- ndbd):集群共享数据(内存中).

3)管理服务器(Management Server – ndb_mgmd):集群管理SQL node,Data node.

3.配置

MySQL-max版本,当然现在MySQL集群系统windonws平台上面不被支持.

安装MySQL就不多说了,网上一大堆,简明扼要。

  • A:192.168.1.251 – Data node和Management Server.
  • B:192.168.1.254 – SQL node.
  • 当然,你也可以让一个机器同时为3者。

    A,B my.inf加上:

    [MySQLD] 
    ndbcluster # run NDB engine 
    ndb-connectstring=192.168.1.251 # location of MGM node 
     
    # Options for ndbd process: 
    [MySQL_CLUSTER] 
    ndb-connectstring=192.168.1.251 # location of MGM node 
     
    A: /var/lib/MySQL-cluster/config.ini 
    [NDBD DEFAULT] 
    NoOfReplicas=1 # Number of replicas 
    DataMemory=80M # How much memory to allocate for data storage 
    IndexMemory=18M # How much memory to allocate for index storage 
     # For DataMemory and IndexMemory, we have used the 
     # default values. Since the "world" database takes up 
     # only about 500KB, this should be more than enough for 
     # this example Cluster setup. 
    # TCP/IP options: 
    [TCP DEFAULT] 
    portnumber=2202 # This the default; however, you can use any 
     # port that is free for all the hosts in cluster 
     # Note: It is recommended beginning with MySQL 5.0 that 
     # you do not specify the portnumber at all and simply allow 
     # the default value to be used instead 
    # Management process options: 
    [NDB_MGMD] 
    hostname=192.168.1.251 # Hostname or IP address of MGM node 
    datadir=/var/lib/MySQL-cluster # Directory for MGM node logfiles 
    # Options for data node "A": 
    [NDBD] 
    # (one [NDBD] section per data node) 
    hostname=192.168.1.251 # Hostname or IP address 
    datadir=/usr/local/MySQL/data # Directory for this data node's datafiles 
    # SQL node options: 
    [MySQLD] 
    hostname=192.168.1.254 
    #[MySQLD] #这个相当于192.168.1.251 
    

     
    4. 启动测试

    在管理服务器上面(这里是192.168.1.251):

    shell>ndb_mgmd -f /var/lib/MySQL-cluster/config.ini 
    

    在数据结点服务器上面(依然是192.168.1.251and more):

    shell>ndbd--initial 

     (第一次时加--initial参数)
    SQL结点服务器上面(192.168.1.254):

    shell>MySQLd & 
    

    在251上面察看

    ./ndb_mgm 
    

     

    -- NDB Cluster -- Management Client -- 
    ndb_mgm> show 
    Connected to Management Server at: 192.168.1.251:1186 
    Cluster Configuration 
    --------------------- 
    [ndbd(NDB)] 1 node(s) 
    id=2 @192.168.1.251 (Version:5.0.22, Nodegroup: 0, Master) 
     
    [ndb_mgmd(MGM)] 1 node(s) 
    id=1 @192.168.1.251 (Version:5.0.22) 
     
    [MySQLd(API)] 1 node(s) 
    id=3 @192.168.1.254 (Version:5.0.22) 
    ok
    

    关闭集群:

    shell>ndb_mgm -e shutdown 
    

    5.基本的集群说明

    1)在MySQL集群中.当table引擎为NDBCLUSTER时才做集群,其他非NDBCLUSTER表和一般MySQL数据库表一样,不会共享数据. NDBCLUSTER表数据存储在Data node服务器内存中,Data Node可以为1台或多台服务器,它们之间存放共享数据。Data Node服务器可以分组数据copy。

    例如:2,3,4,5为四台Data Node服务器ID. 2,3为组0。 4,5为组1。 2,3维持数据相同,4,5维持数据相同。 组0和组1维持数据不同。

    2)sql node服务器中,非NDBCLUSTER数据存在本身数据库中,table引擎为NDBCLUSTER时,数据存储在Data Node中。当查询NDBCLUSTER表时,它会从Data node集群中提起数据.

    3)Manager server

    管理SQl node和Data node状态。

    附:MySQL集群配置详细过程录制
    1、准备三台linux服务器(三台机器进行如下配置)
    --hostname配置
    192.168.9.241    sqltest01   (mysqld及存储节点)
    192.168.9.242    sqltest02   (mysqld及存储节点)
    192.168.9.243    sqltest03
    其中,sqltest01、sqltest02分别是mysql节点及存储节点,sqltest03为管理节点
    --同时,把防火墙进行关闭或者把相关的端口打开,如3306,管理节点的1186等

    [root@sqltest01 u01]# service iptables status
    
    iptables: Firewall is not running.
    

    如果开启的,请使用service iptables stop
    --创建相应的用户及目录

    [root@sqltest01 u01]# groupadd mysql
    [root@sqltest01 u01]# useradd -r -g mysql mysql
    [root@sqltest01 u01]# mkdir -p /usr/local/mysql
    [root@sqltest01 u01]# chown -R mysql.mysql
    

    2、mysql cluster
    下载网址:dev.mysql.com,然后选择cluster,然后在网页中出现的选择平台中,选择linux generic!在这里选择所需要tar包,我这里用的是mysql-cluster-gpl-7.3.7-linux-glibc2.5-x86_64.tar.gz
    下载完成后,使用ftp传送到服务器上面,然后分别在三台机器上解压

    [root@sqltest01 u01]# tar -zxvf mysql-cluster-gpl-7.3.7-linux-glibc2.5-x86_64.tar.gz
    
    mysql-cluster-gpl-7.3.7-linux-glibc2.5-x86_64/mysql-test/include/have_plugin_auth.inc
    mysql-cluster-gpl-7.3.7-linux-glibc2.5-x86_64/mysql-test/include/kill_query.inc
    mysql-cluster-gpl-7.3.7-linux-glibc2.5-x86_64/mysql-test/include/unsafe_binlog.inc
    mysql-cluster-gpl-7.3.7-linux-glibc2.5-x86_64/mysql-test/include/have_multi_ndb.inc
    mysql-cluster-gpl-7.3.7-linux-glibc2.5-x86_64/mysql-test/include/ipv6_clients.inc
    mysql-cluster-gpl-7.3.7-linux-glibc2.5-x86_64/mysql-test/include/setup_fake_relay_log.inc
    mysql-cluster-gpl-7.3.7-linux-glibc2.5-x86_64/mysql-test/include/wait_for_slave_sql_error_and_skip.inc
    ......................................................................................................
    

    解压后,里面包括了数据库文件以及集群软件
    3、配置管理节点(sqltest03)
    --将刚才解压的软件拷贝到指定位置/usr/local/mysql

    [root@sqltest03 mysql-cluster-gpl-7.3.7-linux-glibc2.5-x86_64]# pwd
    /u01/mysql-cluster-gpl-7.3.7-linux-glibc2.5-x86_64
    [root@sqltest03 mysql-cluster-gpl-7.3.7-linux-glibc2.5-x86_64]# mv * /usr/local/mysql/
    

    --创建集群目录

    [root@sqltest03 u01]# cd /usr/local/mysql
    [root@sqltest03 mysql]# mkdir mysql-cluster
    [root@sqltest03 mysql]# pwd
    /usr/local/mysql
    [root@sqltest03 mysql]# cp bin/ndb_mgm* /usr/local/bin/
    [root@sqltest03 mysql]# cd /var/lib
    [root@sqltest03 mysql]# mkdir mysql-cluster
    [root@sqltest03 mysql]# cd mysql-cluster
    [root@sqltest03 mysql]# vi config.ini
    

    配置内容如下:

    [root@sqltest03 mysql-cluster]# cat config.ini 
    [ndbd default]
    NoOfReplicas=1
    DataMemory=2048M
    IndexMemory=512M
    [tcp default]
    [ndb_mgmd]
    hostname=192.168.9.243
    datadir=/var/lib/mysql-cluster
    NodeId=1
    [ndbd]
    hostname=192.168.9.241
    datadir=/u01/mysql/data
    NodeId=2
    [ndbd]
    hostname=192.168.9.242
    datadir=/u01/mysql/data
    NodeId=3
    [mysqld]
    hostname=192.168.9.241
    NodeId=4
    [mysqld]
    hostname=192.168.9.242
    NodeId=5
    

    配置说明:
    [ndbd default]
    这部分是公共部分,对于每一个数据节点都有效,只需要配置一份
    NoOfReplicas=1
    数据镜像几份(各数据节点之间相互备份)
    [tcp default]
    针对每个数据节点及管理节点之间使用哪个端口进行通讯,在旧版本的NDB集群软件配置时,这个地方通常配置portnumber=2202但新版的NDB软件这里不需要配置,并且MySQL官方也强烈建议不要配置
    [ndb_mgmd]
    管理节点的配置部分(通常只有一个)。注意NodeId=1指明管理节点的节点ID为1,如果不指定,在启动集群时,会报错
    hostname=192.168.9.243
    指明管理节点的IP地址
    datadir=/var/lib/mysql-cluster
    指明集群管理日志存放的位置
    [ndbd]
    数据节点配置部分,有几个数据节点就配置几个[ndbd]
    hostname=192.168.1.111
    指明数据节点的IP地址
    datadir=/u01/app/mysql/data
    指明数据节点上的数据库文件存放的位置
    NodeId=2
    指明该数据节点在整个集群中的nodeid号(很重要)
    [mysqld]
    SQL节点配置部分,有几个SQL节点,就配置几个[mysqld]
    到这里,就可以启动集群了

    [root@sqltest03 bin]# pwd
    /usr/local/bin
    [root@sqltest03 bin]# ./ndb_mgmd -f /var/lib/mysql-cluster/config.ini
    MySQL Cluster Management Server mysql-5.6.21 ndb-7.3.7
    

    进入执行查看

    [root@sqltest03 bin]# ndb_mgm
    
    -- NDB Cluster -- Management Client --
    ndb_mgm> show
    Connected to Management Server at: localhost:1186
    Cluster Configuration
    ---------------------
    [ndbd(NDB)] 2 node(s)
    id=2 (not connected, accepting connect from 192.168.9.241)
    id=3 (not connected, accepting connect from 192.168.9.242)
    [ndb_mgmd(MGM)] 1 node(s)
    id=1 @192.168.9.243 (mysql-5.6.21 ndb-7.3.7)
    [mysqld(API)] 2 node(s)
    id=4 (not connected, accepting connect from 192.168.9.241)
    id=5 (not connected, accepting connect from 192.168.9.242)
    

    可以看到有两个节点,节点没有连接上
    4、配置mysqld节点及存储节点(sqltest01,sqltest02)
    --建立相应目录

    [root@sqltest01 mysql]# mkdir -p /usr/local/mysql --用于存放刚才解压的文件,如mysql的bin目录等
    [root@sqltest01 mysql]# mkdir -p /u01/mysql/data --用于存储数据文件(innodb)
    [root@sqltest01 mysql]# chown -R mysql.mysql /u01
    

    --将先前解压的文件拷贝

    [root@sqltest01 mysql-cluster-gpl-7.3.7-linux-glibc2.5-x86_64]# pwd
    /u01/mysql-cluster-gpl-7.3.7-linux-glibc2.5-x86_64
    [root@sqltest01 mysql-cluster-gpl-7.3.7-linux-glibc2.5-x86_64]# mv * /usr/local/mysql/
    [root@sqltest01 mysql]# chown -R mysql.mysql /usr/local/mysql/
    

    --拷贝mysql.server

    [root@sqltest01 support-files]# pwd
    /usr/local/mysql/support-files
    [root@sqltest01 support-files]# ls -lrt
    total 32
    -rw-r--r--. 1 mysql mysql 773 Oct 9 21:46 magic
    -rwxr-xr-x. 1 mysql mysql 10880 Oct 9 22:42 mysql.server
    -rwxr-xr-x. 1 mysql mysql 894 Oct 9 22:42 mysql-log-rotate
    -rwxr-xr-x. 1 mysql mysql 1061 Oct 9 22:42 mysqld_multi.server
    -rw-r--r--. 1 mysql mysql 1126 Oct 9 22:42 my-default.cnf
    -rwxr-xr-x. 1 mysql mysql 1153 Oct 9 22:42 binary-configure
    [root@sqltest01 support-files]# cp mysql.server /etc/rc.d/init.d/mysqld
    

    --编辑环境变量

    [root@sqltest01 tmp]# vi /etc/profile
    

    添加如下:

    PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH
    
    export PATH
    
    [root@sqltest01 tmp]# source /etc/profile 

       --使修改生效
    --配置my.cnf

    [root@sqltest01 support-files]# cp my-default.cnf /etc/my.cnf
    

    并对my.cnf进行配置,具体配置如下

    [mysqld]
    ndbcluster
    basedir=/usr/local/mysql
    datadir=/u01/mysql/data
    port=3306
    [mysql_cluster]
    ndb-connectstring=192.168.9.243
    

    --初始化节点数据库

    [root@sqltest01 mysql]# scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/u01/mysql/data
    

    执行完这条命令以后,数据库的数据文件(包括mysql,test , performance_schema等数据库),就安装到相应的位置了,可以使用了
    在两个节点都执行上面的步骤即可
    5、在两个点启动

    [root@sqltest01 mysql]# ndbd --initial
    
    2014-12-24 17:55:57 [ndbd] INFO -- Angel connected to '192.168.9.243:1186'
    2014-12-24 17:55:57 [ndbd] INFO -- Angel allocated nodeid: 2
    

    第一次启动时,需要加--initial来初始化数据节点,第二次启动时,就不需要这个参数了
    在管理节点查看,可以看到第一个节点已经连接

    ndb_mgm> show
    
    Cluster Configuration
    ---------------------
    [ndbd(NDB)] 2 node(s)
    id=2 @192.168.9.241 (mysql-5.6.21 ndb-7.3.7, starting, Nodegroup: 0) --表明已经连接上了
    id=3 (not connected, accepting connect from 192.168.9.242)
    [ndb_mgmd(MGM)] 1 node(s)
    id=1 @192.168.9.243 (mysql-5.6.21 ndb-7.3.7)
    [mysqld(API)] 2 node(s)
    id=4 (not connected, accepting connect from 192.168.9.241)
    id=5 (not connected, accepting connect from 192.168.9.242)
    

    启动mysqld

    [root@sqltest01 mysql]# cd /usr/local/mysql/bin
    [root@sqltest01 bin]# ./mysqld_safe --user=mysql
    
    141224 17:59:50 mysqld_safe Logging to '/u01/mysql/data/sqltest01.err'.
    141224 17:59:51 mysqld_safe Starting mysqld daemon with databases from /u01/mysql/data
    

    启动数据库时,第一次初始化使用的root,而这次使用mysql,需要对/u01/mysql/data权限进行配置,否则报不可读写
    再次在管理节点查看

    ndb_mgm> show
    
    Cluster Configuration
    ---------------------
    [ndbd(NDB)] 2 node(s)
    id=2 @192.168.9.241 (mysql-5.6.21 ndb-7.3.7, Nodegroup: 0, *)
    id=3 (not connected, accepting connect from 192.168.9.242)
    [ndb_mgmd(MGM)] 1 node(s)
    id=1 @192.168.9.243 (mysql-5.6.21 ndb-7.3.7)
    [mysqld(API)] 2 node(s)
    id=4 @192.168.9.241 (mysql-5.6.21 ndb-7.3.7) 

                      --表明已经连接上了
    最后把第二节点也启动,再次从管理节点检查

    ndb_mgm> show
    
    Cluster Configuration
    ---------------------
    [ndbd(NDB)] 2 node(s)
    id=2 @192.168.9.241 (mysql-5.6.21 ndb-7.3.7, Nodegroup: 0, *)
    id=3 @192.168.9.242 (mysql-5.6.21 ndb-7.3.7, Nodegroup: 1)
    [ndb_mgmd(MGM)] 1 node(s)
    id=1 @192.168.9.243 (mysql-5.6.21 ndb-7.3.7)
    [mysqld(API)] 2 node(s)
    id=4 @192.168.9.241 (mysql-5.6.21 ndb-7.3.7)
    id=5 @192.168.9.242 (mysql-5.6.21 ndb-7.3.7)
    

    6、在两个节点测试

    [root@sqltest01 ~]# mysql -uroot -p
    
    Enter password: 
    Welcome to the MySQL monitor. Commands end with ; or \g.
    Your MySQL connection id is 2
    Server version: 5.6.21-ndb-7.3.7-cluster-gpl MySQL Cluster Community Server (GPL)
    Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.
    Oracle is a registered trademark of Oracle Corporation and/or its
    affiliates. Other names may be trademarks of their respective
    owners.
    Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
    mysql> create database mydb1;
    Query OK, 1 row affected (0.07 sec)
    mysql> use mydb1;
    Database changed
    mysql> create table mytb1(id int,birthdate datetime,pername char(10)) engine=ndbcluster;
    Query OK, 0 rows affected (0.19 sec)
    
    
    mysql> insert into mytb1(id,birthdate,pername) values(1,'2013-01-23 09:45:10','pengzitong');
    
    Query OK, 1 row affected (0.00 sec)
    mysql> commit;
    Query OK, 0 rows affected (0.00 sec)
    mysql> insert into mytb1(id,birthdate,pername) values(2,'2007-07-09 09:45:10','pengzixin');
    Query OK, 1 row affected (0.00 sec)
    
    mysql> commit;
    
    Query OK, 0 rows affected (0.00 sec)
    

    在第二节点检查

    [root@sqltest02 ~]# mysql -uroot -p
    
    Enter password: 
    Welcome to the MySQL monitor. Commands end with ; or \g.
    Your MySQL connection id is 2
    Server version: 5.6.21-ndb-7.3.7-cluster-gpl MySQL Cluster Community Server (GPL)
    Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.
    Oracle is a registered trademark of Oracle Corporation and/or its
    affiliates. Other names may be trademarks of their respective
    owners.
    Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
    mysql> use mydb1
    mysql> select * from mytb1;
    +------+---------------------+------------+
    | id | birthdate | pername |
    +------+---------------------+------------+
    | 1 | 2013-01-23 09:45:10 | pengzitong |
    | 2 | 2007-07-09 09:45:10 | pengzixin |
    +------+---------------------+------------+
    

    7、集群停止
    要想关闭 Cluster,可在MGM节点所在的机器上,在Shell中简单地输入下述命令:

    [root@sqltest03 bin]# /usr/local/mysql/ndb_mgm -e shutdown
    

    运行以下命令关闭SQL节点的mysqld服务:

    [root@sqltest01 bin]# /usr/local/mysql/bin/mysqladmin -uroot shutdown

    您可能感兴趣的文章:

  • MySQL Cluster集群的初级部署教程
  • 详解MySQL集群搭建
  • MySQL slave_net_timeout参数解决的一个集群问题案例
  • 集群运维自动化工具ansible使用playbook安装mysql
  • mysql ndb集群备份数据库和还原数据库的方法
  • 具有负载均衡功能的MySQL服务器集群部署及实现
  • nginx+apache+mysql+php+memcached+squid搭建集群web环境
  • 从零开始搭建MySQL MMM架构
  • mysql数据库应付大流量网站的的3种架构扩展方式介绍
  • 详解mysql集群:一主多从架构实现
  • 文档

    MySQL的集群配置的基本命令使用及一次操作过程实录

    MySQL的集群配置的基本命令使用及一次操作过程实录:1. 先了解一下你是否应该用MySQL集群。 减少数据中心结点压力和大数据量处理,采用把MySQL分布,一个或多个application对应一个MySQL数据库。把几个MySQL数据库公用的数据做出共享数据,例如购物车,用户对象等等,存在数据结点里面。其他不共享的数据还维持
    推荐度:
    • 热门焦点

    最新推荐

    猜你喜欢

    热门推荐

    专题
    Top