当前位置: 代码网 > it编程>数据库>Mysql > MySql8.4单节点安装和集群安装的实现

MySql8.4单节点安装和集群安装的实现

2026年03月24日 Mysql 我要评论
前言近期在做自建服务器,需要用到mysql集群,做一个简单的记录。如果是使用单节点服务器的话,看开头安装就可以了。第二步开始就是重新调整集群的配置。系统:centos7.4mysql版本:8.4.0一

前言

近期在做自建服务器,需要用到mysql集群,做一个简单的记录。如果是使用单节点服务器的话,看开头安装就可以了。第二步开始就是重新调整集群的配置。

  • 系统:centos7.4
  • mysql版本:8.4.0

一、mysql单节点基础安装

卸载默认带的mariadb数据库
查询mariadb
	rpm -qa | grep mariadb
强制卸载mariadb
	rpm -e --nodeps mariadb-libs-5.5.68-1.el7.x86_64
开始安装mysql8.4,下边是安装顺序,因为有对应的依赖关系所以要按照顺序来
	rpm -ivh mysql-community-icu-data-files-8.4.0-1.el7.x86_64.rpm
	rpm -ivh mysql-community-common-8.4.0-1.el7.x86_64.rpm
	rpm -ivh mysql-community-client-plugins-8.4.0-1.el7.x86_64.rpm
	rpm -ivh mysql-community-libs-8.4.0-1.el7.x86_64.rpm
	rpm -ivh mysql-community-libs-compat-8.4.0-1.el7.x86_64.rpm
	rpm -ivh mysql-community-client-8.4.0-1.el7.x86_64.rpm
	rpm -ivh mysql-community-server-8.4.0-1.el7.x86_64.rpm
	rpm -ivh mysql-community-embedded-compat-8.4.0-1.el7.x86_64.rpm
查看默认初始化的root密码:/var/log/mysqld.log日志中的password is generated for root@localhost:这就是密码
如果默认密码登录不了想要重置密码在看这个下边的流程,如果不需要可以不用关注当前节点的内容
设置跳过验证:
	编辑配置文件:
		vim /etc/my.cnf
		在配置文件中添加:
		    skip-grant-tables
	重启mysql
		systemctl restart mysqld
	登录mysql 
		mysql -uroot
	选择mysql库
		use mysql;
	修改密码
		alter user 'root'@'localhost' identified by '修改的密码,密码复杂度要符合验证插件规则';
			--如果异常
				--error 1290 (hy000): the mysql server is running with the --skip-grant-tables option so it cannot execute this statement
				--上边异常执行一下:flush privileges;  在执行修改密码的操作就行了。
		flush privileges;
	修改外网可以访问root用户
		update user set host = '%' where user = 'root';
		flush privileges;
	退出操作命令行
		quit
	回退配置
		vim /etc/my.cnf
		删除skip-grant-tables配置
	重启mysql
		systemctl restart mysqld

安装成功截图

开放3306端口:

sudo firewall-cmd --zone=public --add-port=3306/tcp --permanent
sudo firewall-cmd --reload

二、mgr集群配置

2.1 基础环境准备

ip说明
192.168.1.161主(读写)
192.168.1.162备 (只读)
192.168.1.163备(只读)

安装环境:centos7.4、第一步中的mysql基础环境安装、mysql shell(只有主服务器安装了)、mysql router(只有主服务器安装了)

2.2 mysql基础服务的配置

vim /etc/my.cnf
配置下边给出的配置

[mysql]
# 设置mysql客户端默认编码
default-character-set=utf8
[mysqld]
# 数据存放目录
datadir=/var/lib/mysql
# mysql启动连接位置
socket=/var/lib/mysql/mysql.sock
# 日志记录位置
log-error=/var/log/mysqld.log
# 启动后记录的pid文件
pid-file=/var/run/mysqld/mysqld.pid
#开启gtid,必须开启
gtid_mode=on
##强制gtid的一致性
enforce-gtid-consistency=on
##binlog格式,mgr要求必须是row,不过就算不是mgr,也最好用row
binlog_format=row
#
log_bin=binlog
##server-id必须是唯一的
server-id = 161
##mgr使用乐观锁,所以官网建议隔离级别是rc,减少锁粒度
transaction_isolation = read-committed
##因为集群会在故障恢复时互相检查binlog的数据,
##所以需要记录下集群内其他服务器发过来已经执行过的binlog,按gtid来区分是否执行过.
log-slave-updates=on
##binlog校验规则,5.6之后的高版本是crc32,低版本都是none,但是mgr要求使用none
binlog_checksum=none
#主要是用来区分整个内网里边的各个不同的group,而且也是这个group内的gtid值的uuid
loose-group_replication_group_name = 'b5a9bdff-3c79-4cb4-97a1-e38c45fad878'
##是否随服务器启动而自动启动组复制,不建议直接启动,怕故障恢复时有扰乱数据准确性的特殊情况
loose-group_replication_start_on_boot = off
##用mgr的单主模式
loose-group_replication_single_primary_mode = on
##本地mgr的ip地址和端口,host:port,是mgr的端口,不是数据库的端口
loose-group_replication_local_address = '192.168.1.161:33081'
##需要接受本mgr实例控制的服务器ip地址和端口,是mgr的端口,不是数据库的端口
loose-group_replication_group_seeds = '192.168.1.161:33081,192.168.1.162:33081,192.168.1.163:33081'
##开启引导模式,添加组成员,用于第一次搭建mgr或重建mgr的时候使用,只需要在集群内的其中一台开启,
loose-group_replication_bootstrap_group = on
report_host=192.168.1.161
report_port=3306

注意:除去下边的4个配置不一样,3台服务器基本配置都一样,loose-group_replication_group_name是对应的集群内组三台配置成一样的就行,获取配置拿走不变也行

  1. loose-group_replication_local_address服务器的ip
  2. loose-group_replication_bootstrap_group主服务器为on备服务器是off
  3. server_id服务器id,自己写一个就行,三台服务器不一样要
  4. report_host注册地址一般为服务器ip

配置完成后:systemctl restart mysqld 重启

因为我使用的是root用户,所以需要给root用户先分配权限

  1. 登录mysql -uroot -p
  2. grant clone_admin, connection_admin, group_replication_admin, persist_ro_variables_admin, replication_applier, replication_slave_admin, role_admin, system_variables_admin on . to ‘root’@‘%’ with grant option;
  3. flush privileges;

2.3 安装mysql-shell配置集群

只有主服务器做当前配置

  1. 需要依赖libyaml组件:sudo yum install libyaml -y
  2. 安装mysqlshell组件:rpm -ivh mysql-shell-8.4.0-1.el7.x86_64.rpm
  3. 进入mysqlshell组件:mysqlsh
  4. 进入为js模式:\js
  5. 连接主服务器:shell.connect(‘root@192.168.1.161:3306’)
  6. 检查服务器是否可以配置mgr集群:dba.configureinstance()
  7. 创建集群:var c = dba.createcluster(‘mysql-db’)
  8. 把需要加入集群的服务添加上去:c.addinstance(‘192.168.1.162:3306’) 。如果是多个替换里边的ip就行了
  9. 查看集群状态:c.status()会列出集群里边各个服务的说明

2.4 安装mysqlrouter

只有主服务器做的配。
因为我是使用root用户。所以需要添加--user=root配置,9800端口开始分配读写和事务权限的端口

1. 安装mysqlrouter:rpm -ivh mysql-router-community-8.4.0-1.el7.x86_64.rpm
2. mysqlrouter --bootstrap root@192.168.1.161:3306 --conf-base-port 9800 --user=root
3. 因为我是root用户权限,但是默认生成的执行文件用户是mysqlrouter用户和组的权限,所以需要修改,使用:vim /usr/lib/systemd/system/mysqlrouter.service
4. 替换user=root,group=root
5. 修改配置生效systemctl daemon-reload
6. 重启mysqlrouter让配置生效:systemctl restart mysqlrouter
7. 查看mysqlrouter中对应的端口是否添加了监听,只有对应端口被监听了才算生效:netstat -tnlp

-- 查看集群中router配置
shell.connect('root@192.168.1.161:3306')
var c = dba.getcluster()
c.listrouters()

到此这篇关于mysql8.4单节点安装和集群安装的实现的文章就介绍到这了,更多相关mysql8.4单节点安装和集群安装内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2026  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com