MySql8.4单节点安装和集群安装

前言

近期在做自建服务器,需要用到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()


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值