zoukankan      html  css  js  c++  java
  • mysql cluster配置

    依赖包要求:cmake     gcc    gcc-c++     ncurses     Perl     ncurses-devel

    在7.3以及更高的版本中, WITH_NDB_JAVA是默认启动的,需要配置JAVA环境,WITH_CLASSPATH配置JAVA目录。如果不启用,可以: -DWITH_NDB_JAVA=OFF。

    CMAKE配置选项:

    具体参阅:https://dev.mysql.com/doc/refman/5.6/en/source-configuration-options.html#cmake-general-options

    cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/local/mysql/data -DMYSQL_UNIX_ADDR=/usr/local/mysql/data/mysqld.sock -DWITH_EXTRA_CHARSETS=all -DWITH_SSL=bundled -DWITH_EMBEDDED_SERVER=1 -DENABLED_LOCAL_INFILE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_NDB_JAVA=OFF -DWITH_NDBCLUSTER_STORAGE_ENGINE=1 -DWITH_boost=/usr/local/boost

    SQL节点存储的是表结构,数据节点存储的是数据文件。

    配置参数:

    数据节点配置参数参阅:https://dev.mysql.com/doc/refman/5.7/en/mysql-cluster-params-ndbd.html                   https://dev.mysql.com/doc/refman/5.7/en/mysql-cluster-ndbd-definition.html

    SQL节点配置参数参阅:https://dev.mysql.com/doc/refman/5.7/en/mysql-cluster-params-api.html                      https://dev.mysql.com/doc/refman/5.7/en/mysql-cluster-api-definition.html

    管理节点参数参阅:https://dev.mysql.com/doc/refman/5.7/en/mysql-cluster-params-mgmd.html                        https://dev.mysql.com/doc/refman/5.7/en/mysql-cluster-mgm-definition.html

    其他参数参阅:https://dev.mysql.com/doc/refman/5.7/en/mysql-cluster-params-other.html

    管理节点需要一个config.ini文件,SQL节点和数据节点需要一个my.cnf文件。

    SQL节点与数据节点配置(my.cnf):     #SQL节点与数据节点配置都是一样的,在管理节点上区分两个节点。

    [mysqld]

    ndbcluster
    skip-ndbcluster
    binlog_format=row

    log-bin=fb-bin

    server-id=2151

    ndb-connectstring=192.168.152.156

    secure-file-priv=''

    [mysql_cluster]
    ndb-connectstring=192.168.152.156

    [ndbd]
    connect-string=192.168.152.156

    [ndb_mgm]
    connect-string=192.168.152.156

    [ndb_mgmd]
    config-file=/etc/mysql/config.ini


    [mysqldump]
    quick
    max_allowed_packet = 24M

    [mysql]
    auto-rehash #使用TAB键自动补全

    [mysqld_safe]
    open-files-limit = 65536

    管理节点(config.ini):

    [ndbd default]                     #数据节点所有默认配置

    NoOfReplicas=2           #一份数据在集群中的存在份数,与数据节点对应

    DataMemory=80M      #装载到内存中的数据大小

    IndexMemory=18M      #装载到内存中索引大小

    ServerPort=2202          #默认端口

    LockPagesInMainMemory=1           #将进程锁定在内存中,以避免与磁盘的交换

    NoOfFragmentLogFiles=300     #设置节点的REDO日志文件的个数

    DataDir=/usr/local/mysql/data       #数据节点目录,包括集群日志文件,进程输出文件和守护进程的进程ID(PID)文件

    MaxNoOfConcurrentOperations=100000     #设置事务中同时更新的最大记录数

    MaxNoOfConcurrentTransactions=50000  #定义节点中最大事务数

    ODirect=1                #开启这个设置会使内地版NDB尝试采用O_DIRECT写LCP、备份、重做日志,通常使用更少的内存和cpu。

    SchedulerSpinTimer=400    #定义线程在进入睡眠状态之前多少毫秒被执行

    SchedulerExecutionTimer=100    #定义线程在被发送前多少毫秒被执行

    RealTimeScheduler=1    #设置ndbcluster线程启用真实时间的时序安排

    TimeBetweenGlobalCheckpoints=1000

    TimeBetweenEpochs=200

    RedoBuffer=32M    #设置redo日志缓存

    MaxNoOfTables=1024    #该参数为作为整体的簇设置了最大表对象数目。该参数的默认值为128。最小值为8,最大值为20320,每个表对象每节点约需20KB的空间。

    MaxNoOfOrderedIndexes=256    #设置哈希索引在系统中同意时间被使用的总数,该参数的默认值为128。

    BackupMaxWriteSize=1M    #设置备份日志和备份数据缓冲写入磁盘的默认大小
    BackupDataBufferSize=16M    #设置备份数据缓存的大小
    BackupLogBufferSize=4M    #设置备份日志缓存的大小
    BackupMemory=20M    #备份内存,该参数是BackupDataBufferSize和BackupLogBufferSize之和。

    [tcp default]

    SendBufferMemory=2M

    ReceiveBufferMemory=2M

    [ndb_mgmd]              #管理节点

    Nodeid=1

    HostName=198.51.100.10           #IP或者hostname,管理节点

    DataDir=/usr/local/mysql/data            #数据文件存放目录

    [ndbd]      #数据节点节点1

    HostName=198.51.100.30             #节点IP

    NodeId=11                                       #节点ID

    LockExecuteThreadToCPU=1

    LockMaintThreadsToCPU=0

    [ndbd]     #数据节点节点2

    HostName=198.51.100.40                #节点IP

    NodeId=12

    LockExecuteThreadToCPU=1

    LockMaintThreadsToCPU=0

    [mysqld]               #sql节点1

    Nodeid=21

    HostName=198.51.100.20

    [mysqld]    #sql节点2

    Nodeid=22

    HostName=198.51.100.20

    初始化数据库:

    5.7之前:

    mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data

    5.7之后:

    mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data

    管理节点上进行初始化:

            ndb_mgmd -f /var/lib/mysql-cluster/config.ini --ndb-nodeid=1                 #指定config.ini文件位置,配置文件位置

    数据节点上执行:

        ndbd --ndbcluster

    --ndbcluster(--initial):该NDBCLUSTER存储引擎是必要的使用NDB簇

    SQL节点上执行:

    service mysqld start

    启动顺序:管理节点-->数据节点-->SQL节点

    关闭集群,在管理节点上执行:

        ndb_mgm -e shutdown

    错误解决:

    1、Mixing of localhost (default for [NDBD]HostName) with other hostname(192.168.152.156) is illegal

    查找管理节点上config.ini文件中的[ndbd]模块,删除多余的。

    2、Nodegroup 0 has 1 members, NoOfReplicas=2

    编辑config.ini文件,修改参数:NoOfReplicas值修改为1。

    3、数据节点链接不上

    检查防火墙是否关闭,配置文件config.ini是否配置正确。

    mysql cluster限制:

    1、数据节点的节点ID范围必须是1-48     管理节点的节点ID在1-255    NDB群集中的最大节点总数为255    元数据最大数据量为20320

    2、事物隔离级别只支持RC级别,当更新或删除多行数据时,可能会发生读已提交现象,这时必须使用当前读。

    3、任何包含BLOB和TEXT的列,NDB引擎都会使用S锁来锁定改行,但是对于有索引的列,不会使用共享锁

    4、错误会导致整个事物回滚

    5、不适合处理大事物,因为会消耗更多的内存,本身NDB引擎是建立在内存上的

    6、硬件机器必须是同一种体系结构

    7、sql_log_bin对数据操作没有影响; 但是,它支持模式操作。NDB群集无法为具有BLOB列但没有主键的表生成二进制日志

    8、副本冗余数量为1时,数据丢失无法恢复,所以必须为2.

  • 相关阅读:
    Django之model补充:一对多、跨表操作
    Ajax
    Django之model详解
    Django补充之模板语言
    Django基础篇
    web框架
    linux下命令学习
    make: Warning: File `Makefile' has modification time 17 s in the future
    linux下复制文件报cp: omitting directory `XXX'
    关于控制台程序下使用mfc库中的函数时断言
  • 原文地址:https://www.cnblogs.com/magmell/p/8566413.html
Copyright © 2011-2022 走看看