MySQL集群闲聊(MGR/主从)

MySQL集群搭建经验 (mgr和主从)

官方的集群模式各节点通讯方式都不需要额外的第三方扩展插件
既然不需要第三方扩展插件,那么这句话就等价于配置各个节点的通讯
都只需要通过命令行或者写配置文件实现;


配置文件的本质是把多个想自定义的参数写在同一个地方,面去在命令行启动
mysql的时候敲打很长一串参数命令,同样这句话的另一个意义是:
MySQL有很多参数变量配,我们可以自定义的调控变量对应的值来调控参数,但默认不能自己
随意的添加参数变量(除非定制化开发);所以变量都是确定的,所有的变量都会有默认值,
不去设置他就会走默认值;我们的配置文件就是修改变量让其变更MySQL的默认功能
为我们想要的自定义功能,就像是开关一样;

mysql的配置文件只是一个文件,可以是cnf结尾也可以不是,只要文件里包含
[mysqld]/[mysql]就可以
[mysqld]是配置文件中服务端参数定义的集合,[mysql]是客户端参数集合
所谓的客户端参数集合举例就是MySQL8,在mysql8配置文件中添加以下
[mysql]
default-auth=mysql_native_password

意味着MySQL客户端连接密码要求就取消了严格限制,否则低版本的navicat连接
会直接报错无法连接,但是如果把default-auth=mysql_native_password写在
[mysqld]下边,那么这时配置针对的是服务端,客户端就不会生效,那么低版本的
navicat之类的工具就会连不上服务器,同样的MySQL本身的服务参数都隶属于服务端
比如最大允许链接数:
max_connections=2000
这类MySQL服务的调整参数放在[mysql]下边,MySQL服务就不会生效,要明确配置
文件中的[mysqld]/[mysql]差异


在MySQL8的高版本中有一些特殊的参数,必须要在MySQL初始化的时候定义,比如
lower_case_table_names = 1,忽略大小写区别的参数,需要在安装MySQL时
--initialize初始化的时候跟随并添加,如果初始化完后写在配置文件中会起不了
服务,这类参数在MySQL启动异常的时候也要注意



上面说到MySQL集群都是在MySQL服务中进行命令启动,参数都可以写在配置文件中,
那么也就等效于,各个机器的MySQL是独立安装的,在不启动集群的时候,各个服务
都应该是能独立运行且互不干扰的;所以在搭建集群的时候,各个机器独立安装
MySQL单机服务是第一步,鉴于不同版本之间可以能有参数差异,建议一个集群所有节点
都使用同一个版本的MySQL,但不意味着是必须同一个版本的mysql才能组件集群;


因此可以得到结论:
1、安装MySQL集群第一步是先在各个机器上安装单实列MySQL,为了避免MySQL版本间的差异
带来的异常,建议一个集群的MySQL选择相同版本;

2、各主机安装完MySQL后需要能独立启动,由于集群是多个MySQL组成的一体,在群内为了
做机器间的区分,需要有一个唯一的id编号,所以MySQL的serviceid不能有相同的


如果是有主从区分的集群,那么肯定是有master 和 slave之间的差异的,例如MGR、主从等集群模式,
PXC集群模式是各个节点权重一致。在配置主从模式的集群时,都需要在从节点指定主节点的相关信息,
命令:
CHANGE MASTER TO
MASTER_HOST='172.30.61.203',
MASTER_USER='MasterToSlave_user',
MASTER_PASSWORD='repl',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=1867;

因为机器不知道谁是主谁是从,所以人为的定义从节点时,需要设定主节点的IP、通讯端口、用于同步的账户、
主节点的log文件名、主机点log的定位值;
这样从节点就会知道主是谁;

所有的集群都是像开关一样的打开和关闭的,需要明确的start/stop;同样的当在从机器上添加完主节点的数据时
需要手动的start开打,如果是MGR需要start group_repkication;告诉从机开启组复制;如果是主从模式,需要
执行start slave开启从节点同步模式;俩则本身有区别,mgr是主需要校验同步结果,而主从模式下主不需要,
也就意味者两种模式下从节点和主节点交互方式不填一样,这是集群架构决定的我们不需要太关心,但集群的启动流程
基本是一样的;

任何集群都有可能配置错误,不管是人工意外导致还是系统原因,启动过服务后必定会有一些缓存,有的缓存在服务
结束后不会自动重置,导致第二次配置会额外报错,所以在重置服务的时候记得多使用reset master/reset slave
重置清掉缓存,flush privileges/flush logs 刷新等;

主节点上主从模式由于是从来拉取数据,主不关心从的状态,只把从当作一个用户,所以主节点不需要什么额外的
配置,MGR模式下主和从是有数据校验的,那么主在起的时候需要初始化集群
命令:
set GLOBAL group_replication_bootstrap_group=ON;

初始化集群后开启集群同步:
start group_repkication;

开启完集群同步模式后需要关闭初始化参数
set gGLOBAL group_replication_bootstrap_group=OFF;

如果不关闭参数会导致主节点任何一次意外的停机重启都会初始化集群导致集群通讯数据丢失,使其无法再加入集群,
所以MGR集群模式下主节点再开始集群时需要初始化,开启之后需要关闭初始化;


mysql 集群有的需要额外插件,有的不需要,当然这都是官方提供的,例如mgr需要在MySQL服务内安装mgr插件
命令:
INSTALL PLUGIN group_replication SONAME 'group_replication.so';
因为是集群插件,所以MGR每个机器都需要安装,而主从则不需要,其他集群根据其要求决定,但操作方式基本一致;


额外其他很多的MySQL数据库参数,我的常用mgr配置文件如下:

#服务端配置
[mysqld]
server-id=1
port=3306
#软件所在文件夹
basedir=/app/mysql-8.0.21-el7-x86_64
#表数据所在文件夹
datadir=/data/mysql8.0/data
#通讯socket指定存放位置
socket=/data/mysql8.0/mysql.sock
#运行导入数据的文件夹路径
secure_file_priv =/data

#常用性能配置
#最大连接数,一般给2000,根据机器和业务和性能决定
max_connections=2000
#服务一次传送过来的最大数据包限制,根据机器性能选择
max_allowed_packet=64M
#mysql8的密码方式
default-authentication-plugin=mysql_native_password

#常用日志配置
#错误日志
log-error=/data/mysql8.0/logs/mysqld_err.log
#pid存放位置
pid-file=/data/mysql8.0/mysqld.pid
#binlog存放位置、有效期、格式、校验等
log-bin=/data/mysql8.0/binlog/mysql-bin
binlog_expire_logs_seconds=604800
binlog_format=ROW
log_slave_updates=ON
binlog_checksum=NONE
#慢sql日志打开、指定位置、设置慢sql阈值时间
slow_query_log=1
slow_query_log_file=/data/mysql8.0/logs/slow_query.log
long_query_time=1

#innodb相关配置
innodb_buffer_pool_size=50G
innodb_log_file_size=2048M
innodb_log_files_in_group=2
innodb_flush_method=O_DIRECT
innodb_buffer_pool_instances=8

#MGR Replication集群配置
gtid_mode=on
enforce_gtid_consistency=on
master_info_repository=TABLE
relay_log_info_repository=TABLE
relay_log_recovery=ON
slave-parallel-type=LOGICAL_CLOCK
slave-parallel-workers=8
slave-preserve-commit-order=1
binlog_transaction_dependency_tracking=WRITESET

loose-group_replication_group_name=d738saff-5asb-11e9-9d26-90bvbnc26b74
loose-group_replication_start_on_boot=on
loose-group_replication_local_address="172.30.61.201:33061"
loose-group_replication_group_seeds="172.30.61.201:33061,172.30.61.202:33061,172.30.61.203:33061"
loose-group_replication_bootstrap_group=off
loose-group_replication_ip_whitelist="172.30.61.0/24"
report_host=172.30.61.201
loose-group_replication_flow_control_applier_threshold=100000
loose-group_replication_flow_control_certifier_threshold=100000

#Load data数据导入功能
local-infile=1

#客户端功能配置
[mysql]
default-auth=mysql_native_password

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值