mysql 主从配置详解(MySQL 8.0.15配置MGR单主多从的方法)
mysql 主从配置详解
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单主多从内容请搜索开心学习网以前的文章或继续浏览下面的相关文章希望大家以后多多支持开心学习网!
原文链接:https://www.cnblogs.com/zhangzihong/p/10443526.html
- mysql时间戳和datetime对比(mysql中 datatime与timestamp的区别说明)
- navicat premium连接mysql报错(Navicat连接MySQL错误描述分析)
- mysql多行数据之和(详解MySQL的数据行和行溢出机制)
- linux安装nacos教程(Nacos配置MySQL8的方法)
- mysql中自增字段类型(MySQL数字类型自增的坑)
- 宝塔mysql怎么设置优化(宝塔面板mysql内存占用高如何优化)
- ubuntu20.2安装mysql(Ubuntu 14.04下mysql安装配置教程)
- mysqlset用法(mysql descDESCRIBE命令实例讲解)
- mysql substr函数的用法(MySQL切分函数substring的具体使用)
- mysql分区表的优缺点(MySQL数据表分区策略及优缺点分析)
- mysql索引原理及调优(mysql高级学习之索引的优劣势及规则使用)
- mysql架构示意图(MySQL创建横向直方图的解决方案)
- mysql binlog模式实际使用(实例验证MySQL|update字段为相同的值是否会记录binlog)
- mysql5.7.36详细安装(CenOS6.7下mysql 8.0.22 安装配置方法图文教程)
- 解释mysql慢查询(MySQL Threads_running飙升与慢查询的相关问题解决)
- mysql中date_format日期格式化
- 《囧妈》为何受抵制 春节七部影片撤档背后的责任与博弈(囧妈为何受抵制)
- 提醒 2019年起河南驾考要开设科目五 官方回应来了(2019年起河南驾考要开设科目五)
- 省 市书法家协会 送万福进万家 活动走进禹州美丽乡村(省市书法家协会)
- 点赞 禹州苌庄正式撤乡建镇 未来发展不可估量(禹州苌庄正式撤乡建镇)
- 它荣获 中国生态魅力镇 称号 就在咱们禹州,一起来看看(中国生态魅力镇)
- 真牛 禹州将建成中等城市(禹州将建成中等城市)
热门推荐
- php把当前网页生成pdf(php转换上传word文件为PDF的方法基于COM组件)
- vue 单文件组件(vue实现一个单文件组件的完整过程记录)
- css垂直居中图解(全面总结使用CSS实现水平垂直居中效果的方法)
- 云服务备份后怎么恢复数据(云服务器的数据被删除还能恢复吗?)
- vue滚动条滚动事件(vue实现一个滚动条样式)
- 阿里云服务器端口开放(阿里云服务器Windows实例公网网络异常的解决方法)
- mysql索引面试总结(Mysql数据库索引面试题程序员基础技能)
- 利用xampp搭建服务器(xampp集成环境怎样使用MySQL数据库)
- sql server建表语句带字段说明(SqlServer给表增加多个字段的语法)
- 最低成本搭建云服务器(云服务器搭建难不难?企业云服务器搭建流程)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9