• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    MySQL 8.0.15配置MGR单主多从的方法

    一、简介

    MySQL Group Replication(简称MGR)字面意思是mysql组复制的意思,但其实他是一个高可用的集群架构,暂时只支持mysql5.7和mysql8.0版本.

    是MySQL官方于2016年12月推出的一个全新的高可用与高扩展的解决方案,提供了高可用、高扩展、高可靠的MySQL集群服务.

    也是mysql官方基于组复制概念并充分参考MariaDB Galera Cluster和Percona XtraDB Cluster结合而来的新的高可用集群架构.

    MySQL Group Replication是建立在基于Paxos的XCom之上的,正因为有了XCom基础设施,保证数据库状态机在节点间的事务一致性,才能在理论和实践中保证数据库系统在不同节点间的事务一致性。

    由一般主从复制概念扩展,多个节点共同组成一个数据库集群,事务的提交必须经过半数以上节点同意方可提交,在集群中每个节点上都维护一个数据库状态机,保证节点间事务的一致性。

    优点:

    高一致性,基于原生复制及paxos协议的组复制技术.

    高容错性,有自动检测机制,当出现宕机后,会自动剔除问题节点,其他节点可以正常使用(类似zk集群),当不同节点产生资源争用冲突时,会按照先到先得处理,并且内置了自动化脑裂防护机制.

    高扩展性,可随时在线新增和移除节点,会自动同步所有节点上状态,直到新节点和其他节点保持一致,自动维护新的组信息.

    高灵活性,直接插件形式安装(5.7.17后自带.so插件),有单主模式和多主模式,单主模式下,只有主库可以读写,其他从库会加上super_read_only状态,只能读取不可写入,出现故障会自动选主.

    缺点:

    还是太新,不太稳定,暂时性能还略差于PXC,对网络稳定性要求很高,至少是同机房做.

    二、环境介绍

    MySQL版本:8.0.15

    数据库端口:3306

    集群复制端口:33006

    MGR插件:group_replication.so

    10.115.88.18:单主

    10.115.88.19:从

    10.115.88.20:从

    三、安装MySQL 8.0.15

    3.1.1 下载地址:

    https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-8.0.15-linux-glibc2.12-x86_64.tar

    3.1.2: 安装数据库

    解压

    tar -xf mysql-8.0.15-linux-glibc2.12-x86_64.tar -C /home/work

    进入解压目录

    cd /home/work
    
    tar xf mysql-8.0.15-linux-glibc2.12-x86_64.tar.gz
    
    mv mysql-8.0.15-linux-glibc2.12-x86_64 mysql
    
    rm -rf *.xz

    授予权限并创建数据目录

    cd /home/work
    
    tar xf mysql-8.0.15-linux-glibc2.12-x86_64.tar.gz
    
    mv mysql-8.0.15-linux-glibc2.12-x86_64 mysql
    
    rm -rf *.xz
      chown -R work:work mysql
      mkdir data
      chown work:work data
      cd /home/work/mysql
     
      cd /home/work  mkdir /home/work/relaylog   chown -R work:work relaylog
      cd /home/work/mysql  mkdir run  chown -R work:work run

    添加my.cnf文件

    [client]
    default-character-set=utf8
    socket=/home/work/mysql/run/mysql.sock
    
    [mysqld]
    user = work 
    port = 3306
    basedir=/home/work/mysql
    datadir=/home/work/data
    socket=/home/work/mysql/run/mysql.sock
    pid-file=/home/work/mysql/run/mysqld.pid
    # Disabling symbolic-links is recommended to prevent assorted security risks
    symbolic-links=0
    lower_case_table_names = 1
    
    
    server-id = 183306 
    log-bin = mysql-bin
    log-bin-index = binlogs.index
    binlog_format = row
    binlog_rows_query_log_events = on
    binlog_checksum = none
    
    slave-parallel-type = LOGICAL_CLOCK
    slave-parallel-workers = 4
    slave_preserve_commit_order = 1
    
    #GITD
    gtid_mode = on
    enforce_gtid_consistency = 1
    log-slave-updates = 1
    binlog_gtid_simple_recovery = 1
    
    relay_log = /home/work/relaylog/relay.log
    relay-log-index = /home/work/relaylog/relay.index
    master_info_repository = table
    relay_log_info_repository = table
    
    plugin_load="group_replication=group_replication.so"
    
    #MGR
    #GR配置项 基中loose前缀表示若group Replication plugin未加载 mysql server仍明治维新启动
    transaction_write_set_extraction = XXHASH64 #对每个事务获取write set,并且用XXHASH64算法获取hash值
    loose-group_replication_group_name = "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa" #组名,此处可拿select.uuid()生成
    loose-group_replication_start_on_boot = off #在mysqld启动时不自动启动组复制
    loose-group_replication_local_address = "10.115.88.18:33006" #本节点的IP地址和端口,注意该端口是组内成员之间通信的端口,而不是MySQL对外提供服务的端口
    loose-group_replication_group_seeds = "10.115.88.18:33006,10.115.88.19:33006,10.115.88.20:33006" #种子节点的IP和端口号,新成员加入到集群的时候需要联系种子节点,启动集群的节点不使用该选项
    loose-group_replication_bootstrap_group = off #关闭,如果打开会造成脑裂 #是否启动集群,注意,该选项任何时候只能用于一个节点,通常情况下启动集群的时候使用,启动之后需要关闭该选项
    
    loose-group_replication_member_weight = 50 #权重选择
    
    
    skip-host-cache
    skip-name-resolve
    skip-external-locking
    character-set-server=utf8
    lower_case_table_names=1
    event_scheduler=on
    log_bin_trust_function_creators=on
    
    max_connections = 3000 
    external-locking = FALSE 
    max_allowed_packet = 32M 
    sort_buffer_size = 8M 
    join_buffer_size = 2M 
    thread_cache_size = 300 
    #query_cache_size = 64M 
    #query_cache_limit = 4M 
    read_rnd_buffer_size = 8M
    
    innodb_buffer_pool_size = 8096M
    innodb_log_file_size = 128M
    innodb_log_files_in_group = 2
    innodb_log_buffer_size = 2M
    innodb_flush_log_at_trx_commit = 1
    sync_binlog = 1
    
    
    
    [mysqld_safe]
    log-error=/home/work/data/err.log

    初始化数据库

    bin/mysqld --initialize --basedir=/home/work/mysql --lower-case-table-names=1 --datadir=/home/work/data/ --user=work
    

    拷贝启动文件

    cp support-files/mysql.server /etc/init.d/mysqld
    

    添加环境变量

    echo 'export PATH=/home/work/mysql/bin:$PATH' >>/etc/profile
    source /etc/profile
    

    数据库启动

    /etc/init.d/mysqld start
    

    修改数据库密码

    alter user'root'@'localhost' IDENTIFIED BY 'dashuaige'; 
    
    flush privileges;
    
    

    四、配置MGR主

    4.1.1 配置my.cnf文件

    修改binlog如下:

    server-id = 103306
    log-bin = mysql-bin
    log-bin-index = binlogs.index
    binlog_format = row
    binlog_rows_query_log_events = on
    binlog_checksum = none
    
    slave-parallel-type = LOGICAL_CLOCK
    slave-parallel-workers = 4
    slave_preserve_commit_order = 1

    修改GTID如下:

    gtid_mode = on
    enforce_gtid_consistency = 1
    log-slave-updates = 1
    binlog_gtid_simple_recovery = 1
    
    relay_log = /home/work/relaylog/relay.log
    relay-log-index = /home/work/relaylog/relay.index
    master_info_repository = table
    relay_log_info_repository = table

    添加MGR插件

    plugin_load="group_replication=group_replication.so"

    修改MGR参数

    #GR配置项 基中loose前缀表示若group Replication plugin未加载 mysql server仍明治维新启动
    transaction_write_set_extraction = XXHASH64 #对每个事务获取write set,并且用XXHASH64算法获取hash值
    loose-group_replication_group_name = "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa" #组名,此处可拿select.uuid()生成
    loose-group_replication_start_on_boot = off #在mysqld启动时不自动启动组复制
    loose-group_replication_local_address = "10.115.88.18:33006" #本节点的IP地址和端口,注意该端口是组内成员之间通信的端口,而不是MySQL对外提供服务的端口
    loose-group_replication_group_seeds = "10.115.88.18:33006,10.115.88.19:33006,10.115.88.20:33006" #种子节点的IP和端口号,新成员加入到集群的时候需要联系种子节点,启动集群的节点不使用该选项
    loose-group_replication_bootstrap_group = off #关闭,如果打开会造成脑裂 #是否启动集群,注意,该选项任何时候只能用于一个节点,通常情况下启动集群的时候使用,启动之后需要关闭该选项
    
    loose-group_replication_member_weight = 50 #权重选择

    启动数据库

    /etc/init.d/mysqld restart

    4.1.2 配置每台hosts主机解析

    [root@bj1-10-115-88-18 mysql]# cat /etc/hosts
    127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
    ::1   localhost localhost.localdomain localhost6 localhost6.localdomain6
    10.115.88.18 bj1-10-115-88-18
    10.115.88.19 bj1-10-115-88-19
    10.115.88.20 bj1-10-115-88-20

    4.1.3 配置mgr第一个主节点

    以下步骤在10.115.88.18主机上的mysql中执行

    第一步:创建用于复制的用户

    set sql_log_bin=0;
    create user repuser@'%' identified by 'repuser123';
    
    grant replication slave,replication client on *.* to repuser@'%';
    
    create user repuser@'127.0.0.1' identified by 'repuser123';
    
    grant replication slave,replication client on *.* to repuser@'127.0.0.1';
    
    create user repuser@'localhost' identified by 'repuser123';
    
    grant replication slave,replication client on *.* to repuser@'localhost';
    
    set sql_log_bin=1;

    第二步:配置复制所使用的用户

    change master to master_user='repuser',master_password='repuser123' for channel 'group_replication_recovery';

    第三步:安装mysql group replication这个插件

    备注:如果在my.cnf里写写入plugin_load="group_replication=group_replication.so" 这步就可以不用操作
    
    install plugin group_replication soname 'group_replication.so';
    
    
    通过show plugins;查看是否安装成功

    第四步:建个群(官方点的说法就是初始化一个复制组

    set global group_replication_bootstrap_group=on;
    start group_replication;
    set global group_replication_bootstrap_group=off;
    
    select * from performance_schema.replication_group_members;

    五、配置另外两节点,从

    以下步骤在所有从主机上的mysql中执行

    第一步:创建用于复制的用户

    set sql_log_bin=0;
    create user repuser@'%' identified by 'repuser123';
    
    grant replication slave,replication client on *.* to repuser@'%';
    
    create user repuser@'127.0.0.1' identified by 'repuser123';
    
    grant replication slave,replication client on *.* to repuser@'127.0.0.1';
    
    create user repuser@'localhost' identified by 'repuser123';
    
    grant replication slave,replication client on *.* to repuser@'localhost';
    
    set sql_log_bin=1;

    第二步:配置复制所使用的用户

    change master to master_user='repuser',master_password='repuser123' for channel 'group_replication_recovery';

    第三步:安装mysql group replication这个插件

    备注:如果在my.cnf里写写入plugin_load="group_replication=group_replication.so" 这步就可以不用操作
    
    install plugin group_replication soname 'group_replication.so';
    
    
    通过show plugins;查看是否安装成功

    第四步:加入前面创建好的复制组

    start group_replication;
    select * from performance_schema.replication_group_members;

    如下出现以下报错

    这是binlog导致的错误,执行以下

    reset master;
    start group_replication;
    select * from performance_schema.replication_group_members;

    查看是MGR状态:

    查看MGR主的读写状态

    查看MGR两台从的读写状态

    到此这篇关于MySQL 8.0.15配置MGR单主多从的方法的文章就介绍到这了,更多相关MySQL MGR单主多从内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

    您可能感兴趣的文章:
    • MySQL MGR 有哪些优点
    • mysql MGR 单主多主模式切换知识点详解
    • mysql 8.0.18 mgr 搭建及其切换功能
    • MySQL 8.0.18使用clone plugin重建MGR的实现
    • 详解MySQL 5.7 MGR单主确定主节点方法
    • MySQL MGR搭建过程中常遇见的问题及解决办法
    上一篇:Mysql中时间戳转为Date的方法示例
    下一篇:获取 MySQL innodb B+tree 的高度的方法
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    MySQL 8.0.15配置MGR单主多从的方法 MySQL,8.0.15,配置,MGR,单主多,