mysql gr_MySQL GR(group replication) Single Primary-阿里云开发者社区

1、组复制是一种可用于实现容错系统的技术。复制组是一个通过消息传递相互交互的server集群。通信层提供了原子消息和完全有序信息交互等保障机制。MySQL组复制以这些功能和架构为基础,实现了基于复制协议的多主更新。复制组由多个server成员构成,并且组中的每个server成员可以独立地执行事务。但所有读写事务只有在冲突检测成功后才会提交。只读事务不需要在冲突检测,可以立即提交。换句话说,对于任何读写事务,提交操作并不是由始发server单向决定的,而是由组来决定是否提交。准确地说,在始发server上,当事务准备好提交时,该server会广播写入值(已改变的行)和对应的写入集(已更新的行的唯一标识符)。然后会为该事务建立一个全局的顺序。最终,这意味着所有server成员以相同的顺序接收同一组事务。因此,所有server成员以相同的顺序应用相同的更改,以确保组内一致。在不同server上并发执行的事务可能存在冲突。根据组复制的冲突检测机制,对两个不同的并发事务的写集合进行检测。如在不同的server成员执行两个更新同一行的并发事务,则会出现冲突。排在最前面的事务可以在所有server成员上提交,第二个事务在源server上回滚,并在组中的其他server上删除。 这就是分布式的先提交当选规则。

2bf62e44dafc62dd3f00ca053b30ca67.png

组复制技术的核心是 Paxos 算法实现的,是组复制中保证数据一致性复制的关键, 它充当了组通信系统的引擎。该协议保障了故障检测机制,组成员服务的安全和消息的完全有序传递。

2、部署MySQL GR(group replication)

2.1、环境:

MySQL:5.7.21

Host:IP

gr1:10.10.10.11,gr2:10.10.10.12,gr3:10.10.10.13

Port:3306

2.2、安装依赖包

yum install -y gcc gcc-c++ libaio-devel boost-devel autoconf automake zlib-devel libxml2-devel ncurses-devel libgcrypt-devel libtool-devel openssl-devel bison-devel unzip numactl-devel numactl

2.3、安装MySQL(略)

2.4、配置MySQL参数

[mysql]

prompt = [\\u@\\h][\\d]>\\_

[client]

user = root

password = 111

[mysqld]

# basic settings #

user = mysql

sql_mode = "STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION,NO_ZERO_DATE,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER"

autocommit = 1

character_set_server = utf8mb4

transaction_isolation = READ-COMMITTED

explicit_defaults_for_timestamp = 1

max_allowed_packet = 16777216

event_scheduler = 1

basedir = /usr/local/mysql

datadir = /data

auto_increment_increment = 1

auto_increment_offset = 1

lower_case_table_names = 1

# connection #

interactive_timeout = 1800

wait_timeout = 1800

lock_wait_timeout = 1800

skip_name_resolve = 1

max_connections = 512

max_connect_errors = 1000000

# session memory setting #

read_buffer_size = 16777216

read_rnd_buffer_size = 33554432

sort_buffer_size = 33554432

tmp_table_size = 67108864

join_buffer_size = 134217728

# log settings #

log_error = error.log

slow_query_log = 1

slow_query_log_file = slow.log

log_queries_not_using_indexes = 1

log_slow_admin_statements = 1

log_slow_slave_statements = 1

log_throttle_queries_not_using_indexes = 10

expire_logs_days = 90

long_query_time = 2

min_examined_row_limit = 100

binlog-rows-query-log-events = 1

log-bin-trust-function-creators = 1

expire-logs-days = 90

log-slave-updates = 1

# innodb settings #

innod

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值