• ADADADADAD

    如何进行mysql的galera_cluster安装配置[ mysql数据库 ]

    mysql数据库 时间:2024-11-26 22:17:41

    作者:文/会员上传

    简介:

    本次试验都是用rsync同步的,xtrabackup第三个节点起不来,而且在做将数据文件全部删除恢复时xtrabackup不能恢复SST :全量恢复IST : 增量恢复注意事项:1、使用Galera必须要给MySQ

    以下为本文的正文内容,内容仅供参考!本站为公益性网站,复制本文以及下载DOC文档全部免费。

    本次试验都是用rsync同步的,xtrabackup第三个节点起不来,而且在做将数据文件全部删除恢复时xtrabackup不能恢复
    SST :全量恢复
    IST : 增量恢复

    注意事项:
    1、使用Galera必须要给MySQL-Server打wsrep补丁。可以直接使用官方提供的已经打好补丁的MySQL安装包,如果服务器上已经安装了标准版MYSQL,需要先卸载再重新安装。卸载前注意备份数据。
    2、MySQL/Galera集群只支持InnoDB存储引擎。如果你的数据表使用的MyISAM,需要转换为InnoDB,否则记录不会在多台复制。可以在备份老数据时,为mysqldump命令添加–skip-create-options参数,这样会去掉表结构的声明信息,再导入集群时自动使用InnoDB引擎。不过这样会将AUTO_INCREMENT一并去掉,已有AUTO_INCREMENT列的表,必须在导入后重新定义。
    3、MySQL 5.5及以下的InnoDB引擎不支持全文索引(FULLTEXT indexes),如果之前使用MyISAM并建了全文索引字段的话,只能安装MySQL 5.6 with wsrep patch。
    4、所有数据表必须要有主键(PRIMARY),如果没有主键可以建一条AUTO_INCREMENT列。
    5、MySQL/Galera集群不支持下面的查询:LOCK/UNLOCK TABLES,不支持下面的系统变量:character_set_server、utf16、utf32及ucs2。
    6、数据库日志不支持保存到表,只能输出到文件(log_output = FILE),不能设置binlog-do-db、binlog-ignore-db。
    7、跟其他集群一样,为了避免节点出现脑裂而破坏数据,建议Galera集群最低添加3个节点。
    8、在高并发的情况下,多主同时写入时可能会发生事务冲突,此时只有一个事务请求会成功,其他的全部失败。可以在写入/更新失败时,自动重试一次,再返回结果。
    9、节点中每个节点的地位是平等的,没有主次,向任何一个节点读写效果都是一样的。实际可以配合VIP/LVS或HA使用,实现高可用性。
    10、如果集群中的机器全部重启,如机房断电,第一台启动的服务器必须以空地址启动:mysqld_safe –wsrep_cluster_address=gcomm:// >/dev/null &


    yum install libaio gcc gcc-c++ boost-devel scons check-devel openssl-devel


    1、# cat /etc/hosts
    172.16.100.131node1
    172.16.100.224node2
    172.16.99.161 node3


    2、修改文件描述符65535
    # vim /etc/security/limits.conf
    * soft nofile 65535
    * hard nofile 65535


    3、# vim /etc/sysctl.conf
    fs.file-max=655350
    net.ipv4.ip_local_port_range = 1025 65000
    net.ipv4.tcp_tw_reuse = 1

    # sysctl -p


    4、安装percona xtrabackup备份工具

    如二进制安装的
    # tar zxvf percona-xtrabackup-2.3.2-Linux-x86_64.tar.gz
    # cd percona-xtrabackup-2.3.2-Linux-x86_64/bin/
    # cp -a * /usr/bin/
    rpm则略


    5、下载地址
    Codership下载地址:
    http://releases.galeracluster.com/binary/mysql-wsrep-5.6.31-25.16-linux-x86_64.tar.gz
    # tar xvfz mysql-wsrep-5.6.31-25.16-linux-x86_64.tar.gz
    # mv mysql-wsrep-5.6.31-25.16-linux-x86_64 /usr/local/mysql


    6、安装Galera复制插件
    https://launchpad.net/galera/3.x/25.3.5/+download/galera-25.3.5-src.tar.gz
    tar zxvf galera-*
    cd galera-*
    scons
    cp garb/garbd /usr/local/mysql/bin/
    cp libgalera_smm.so /usr/local/mysql/lib/plugin/
    注:scons yum源中没有找到,下载的tar包
    # python setup.py install


    7、
    # vim /etc/my.cnf
    [mysqld]
    server_id=129
    datadir=/data/galera
    socket=/tmp/mysql.sock
    user=mysql
    skip-external-locking
    skip-name-resolve
    character-set-server = utf8
    ###########################################################
    ##Galera Cluster
    wsrep_provider =/usr/local/mysql/lib/plugin/libgalera_smm.so ----设置galera类库
    #wsrep_cluster_address="gcomm://172.16.100.131,172.16.100.224,172.16.99.161"每个节点的ip地址
    #wsrep_provider_options="gcache.size=4G" ----类似于缓存的大小,增量恢复都靠这个,默认128M
    wsrep_cluster_name=MariaDB Galera Cluster ------集群名字,随便起
    wsrep_sst_auth=admin:123456------同步的用户名密码, 必须是all权限
    #wsrep_sst_method=xtrabackup-v2-------同步方式,还有mysqldump和rsync
    wsrep_sst_method=rsync
    #wsrep_sst_method=mysqldump
    wsrep_node_name=172.16.100.224------节点名称,可以是ip或者服务器名字(每个节点的名称不一样)
    wsrep_slave_threads=2 -------开启并行复制线程,根据CPU核数设置
    wsrep_on=ON--------开启全同步复制模式
    binlog_format= ROW必须为row模式
    innodb_flush_log_at_trx_commit = 0----因为Galera Cluster的节点恢复是通过远端节点,这里为了性能考虑,设置为0,即事务提交每隔1秒刷盘
    innodb_autoinc_lock_mode=2 ------将主键自增模式修改为交叉模式
    query_cache_size = 0 ------ 关闭查询缓存


    8.初始化
    # cd /usr/local/mysql/scripts/
    ./mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/data/galera


    9.第一个节点启动
    ./mysqld_safe --user=mysql --wsrep-cluster-address="gcomm://" &
    注:--wsrep-new-cluster 第一次启动要加上--wsrep-new-cluster参数,以后再重启不用加了(不确定加不加,反正都能起来)
    进入数据库
    mysql> grant all on *.* to admin@'%' identified by '123456';
    必须是all权限


    第二个节点和第三个节点就正常启动就好了,有几个节点就添加就好了
    ./mysqld_safe --user=mysql --wsrep-cluster-address="gcomm://172.16.100.131:4567,172.16.100.224:4567" &
    ./mysqld_safe --user=mysql --wsrep-cluster-address="gcomm://172.16.100.131:4567,172.16.99.161:4567" &
    进入数据库查看
    mysql> show status like '%ws%';
    wsrep_cluster_size| 3
    wsrep_cluster_status | Primary
    wsrep_ready | ON
    看到这几个就没问题了

    在查看一下admin用户是否自动创建了

    注:要使用xtrabackup做同步需要安装lsof socat tar其中socat我的yum源中没有找到
    下载地址:
    http://www.dest-unreach.org/socat/download/socat-2.0.0-b9.tar.gz
    # tar xvrz socat-2.0.0-b9.tar.gz
    # cd socat-2.0.0-b9
    #./configure
    #make && make install
    在重启第二个节点和第三个节点,第二个起来了,第三个起不来了
    报错如下:
    2016-07-29 01:09:36 30877 [Note] WSREP: Member 0.0 (172.16.99.161) requested state transfer from '*any*'. Selected 1.0 (172.16.100.131)(SYNCED) as donor.
    2016-07-29 01:09:36 30877 [Note] WSREP: Shifting PRIMARY -> JOINER (TO: 4)
    2016-07-29 01:09:36 30877 [Note] WSREP: Requesting state transfer: success, donor: 1
    2016-07-29 01:09:36 30877 [Warning] WSREP: 1.0 (172.16.100.131): State transfer to 0.0 (172.16.99.161) failed: -2 (No such file or directory)
    2016-07-29 01:09:36 30877 [ERROR] WSREP: gcs/src/gcs_group.c:gcs_group_handle_join_msg():723: Will never receive state. Need to abort.
    2016-07-29 01:09:36 30877 [Note] WSREP: gcomm: terminating thread
    2016-07-29 01:09:36 30877 [Note] WSREP: gcomm: joining thread
    2016-07-29 01:09:36 30877 [Note] WSREP: gcomm: closing backend
    2016-07-29 01:09:36 30877 [Note] WSREP: view(view_id(NON_PRIM,0ee11156-54e6-11e6-b16e-a303ff8a662b,11) memb {
    0ee11156-54e6-11e6-b16e-a303ff8a662b,0
    } joined {
    } left {
    } partitioned {
    4d838aa2-5633-11e6-ba70-fb0ade4193cd,0
    d1533158-6a9f-11e6-bea7-7fa18ade38f5,0
    })
    2016-07-29 01:09:36 30877 [Note] WSREP: view((empty))
    2016-07-29 01:09:36 30877 [Note] WSREP: gcomm: closed
    2016-07-29 01:09:36 30877 [Note] WSREP: /usr/local/mysql/bin/mysqld: Terminated.
    160729 01:09:36 mysqld_safe mysqld from pid file /data/galera/zabbixserver.pid ended
    具体原因不明,最后用的rsyc的同步方式进行同步


    10、测试
    用xtrabackup不行,全都换了rsync了
    将第三个节点的数据文件删除掉,在配合文件中指定从哪个节点恢复 在my.cnf中添加wsrep_sst_donor=172.16.100.224(从第二个节点恢复),重启,没有问题。看日志。

    如何进行mysql的galera_cluster安装配置.docx

    将本文的Word文档下载到电脑

    推荐度:

    下载
    热门标签: mysqlgaleracluster