通过Yum Repository安装MySQL

可以查看MySQL官方文档,通过文档步骤进行安装MySQL。我们在这里选择MySQL8.4,因为安装了Linux 9, 所以我们选择对应linux的rpm包

安装步骤

  1. 执行 yum localinstall https://dev.mysql.com/get/mysql84-community-release-el9-1.noarch.rpm, 将mysql84rpm配置包安装进本地yum仓库,在需要输入的地方我们根据提示输入y
  2. 在执行完上面命令后,我们通过yum repolist 可以查看到已经启用的yum仓库
    alt text
  3. 执行 yum install mysql-community-server 安装MySQL,这个操作会自动为我们安装各种依赖,如果没有执行1步骤,则会提示 Error: Unable to find a match: mysql-community-server , 在安装完成会出现 Complete! 提示
    alt text
  4. 执行 systemctl start mysqld 启动MySQL
  5. MySQL 8在安装成功并启动后,会在安装日志中为我们生成一个临时的密码,通过 grep 'temporary password' /var/log/mysqld.log 可以获取到该密码,然后用该密码登录MySQL, 登录命令 mysql -uroot -p
    alt text
  6. 最后我们修改root密码就可以了,ALTER USER 'root'@'localhost' IDENTIFIED BY 'Lx@MySQL_cc123';
  7. 当然现在的MySQL root用户只能在本地登录,我们可以修改root的host让root在所有地方都可以登录 update mysql.user set host='%' where user='root'; , 在修改完host后刷新权限 flush privileges;
  8. 之后我们通过客户端链接MySQL可能会出现 Public Key Retrieval is not allowed 错误, 我们在链接时加入参数 ?allowPublicKeyRetrieval=true就可以连接了,如果依旧无法链接则是linux没有关闭防火墙,可以关闭放获取 systemctl stop firewalld 或 开通访问端口

firewall防火墙基本使用:

  1. firewall-cmd --get-active-zones 获取当前活跃的区域
  2. firewall-cmd --zone=public --add-port=8080/tcp --permanent 添加8080/tcp端口放行,其实 permanent 是表示永久生效,zone表示所操作的区域, 可以使用--remove-port 移除端口
  3. firewall-cmd --reload 表示重新加载防火墙规则
  4. firewall-cmd --zone=public --list-ports 获取所有开放的端口。

firewall 管理模式有 ServicePortsRich RulesDirect Rules

  1. sudo firewall-cmd --zone=public --add-service=http --permanent 允许http服务
  2. sudo firewall-cmd --zone=public --add-port=3306/tcp --permanent 允许8080/tcp端口
  3. firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.100" port port="8080" accept' --permanent 富规则,允许ip访问某个端口,其中ip和port都可以独立存在
  4. sudo firewall-cmd --direct --add-rule ipv4 filter INPUT 0 -s 192.168.1.100 -j ACCEPT 直接通过iptables命令添加规则

通过 RPM Packages 安装MySQL

  1. wget https://dev.mysql.com/get/Downloads/MySQL-9.2/mysql-9.2.0-1.el9.x86_64.rpm-bundle.tar 通过wget命令下载llinux9的x86 MySQL文件,也可通过迅雷下载,之后通过 MobaXterm 上传到我们的linux虚拟机中
  2. 下载完成后我们通过 mkdir mysql-9.2.0-1.el9.x86_64.rpm-bundle && tar -xvf mysql-9.2.0-1.el9.x86_64.rpm-bundle.tar -C ./mysql-9.2.0-1.el9.x86_64.rpm-bundle 解压文件
  3. 之后我们通过 cd mysql-9.2.0-1.el9.x86_64.rpm-bundle 进入文件夹可以看到以下的rpm文件
    alt text
  4. 执行yum install mysql-community-{server,client,client-plugins,icu-data-files,common,libs}-* --skip-broken 安装MySQL,之后会提示我们安装完成,在安装成功后,其他步骤和 通过Yum Repository安装MySQL>安装步骤 中的 4->8 一致
  5. 注意此处安装的MySQL为9.2版本

部署MySQL主备复制

MySQL的主从复制是根据bin-log二进制文件进行的,所以主数据库需要配置打开bin-log配置。之后为每个MySQL实例配置不同的server-id,备库打开中继日志relay-log,为每个库创建用户用于同步,则完成主备复制。
首先我们安装两个MySQL数据库,分别在虚拟机10.21.33.6510.21.33.77上,以下简称为1号虚拟机和2号虚拟机,在1号虚拟机上安装MySQL 8.4,在2号虚拟机上安装MySQL 9.2,将1号虚拟机作为MySQL主库,2号虚拟机为备库。
alt text

1号虚拟机主库配置操作如下:

  1. 打开MySQL配置文件vi /etc/my.cnf
  2. 配置server-id=1,该值默认情况下为1,取值范围为 1 到 (2^32 )−1, 为清晰我们添加配置为1,该值的设定可以通过set global server_id进行,更改无需重启MySQL,如果之前设置0值,改为非0值,则需要重启
  3. 配置log-bin=mysql-binlog,该配置默认情况下是开启的,如果修改名称,则更改此配置,建议修改
  4. 重启MySQL服务后,链接MySQL创建复制用户并只赋予需要复制的权限
1
2
CREATE USER 'repl'@'%' IDENTIFIED BY 'Lx@MySQL_cc123';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
  1. 如果是在使用期间的MySQL配置配置主备,则需要执行FLUSH TABLES WITH READ LOCK;命令,该命令的作用是刷新所有的表到磁盘,同时增加全局读锁,使数据短暂的不能写入,在exit离开当前会话后,会自动释放该锁,其次还需要手动将主库所有数据手动复制到备库,如果使尚未使用的数据库,则不需要该操作
  2. 执行命令 SHOW BINARY LOG STATUS; 记录binlog文件信息用于配置备库,如果打开了GTID自动定位,则不需要记录该信息
    alt text
  3. 开启gtid配置, gtid-mode = ON enforce-gtid-consistency = ON

2号虚拟机备库配置操作如下:

  1. 打开MySQL配置文件vi /etc/my.cnf
  2. 配置server-id=2
  3. 配置relay-log=mysql-relay-bin,中继日志,该日志默认为启动状态,该操作用于修改名称
  4. 开启gtid配置, gtid-mode = ON enforce-gtid-consistency = ON
  5. 重启MySQL后,链接MySQL配置主库信息,用于同步操作
1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 在不打开GTID自动定位的情况下,需要我们手动定位binlog位置信息并填入
CHANGE REPLICATION SOURCE
TO SOURCE_HOST = '10.21.33.65',
SOURCE_USER = 'repl',
SOURCE_PASSWORD = 'Lx@MySQL_cc123',
SOURCE_LOG_FILE = 'mysql-binlog.000001', # 主库的二进制日志文件
SOURCE_LOG_POS = 911; # 主库的二进制日志位置
# 在打开FTID自动定位的情况下
CHANGE REPLICATION SOURCE
TO SOURCE_HOST = '10.21.33.65',
SOURCE_USER = 'repl',
SOURCE_PASSWORD = 'Lx@MySQL_cc123',
SOURCE_AUTO_POSITION = 1; #直接启用自动定位,无需记录主库二进制文件信息

  1. 检查从库状态 SHOW REPLICA STATUS;
  2. 启动从库,start replica

测试

在做完以上操作后,我们在2号虚拟机备库中执行SHOW REPLICA STATUS;检查同步状态,如果没有出现错误,则配置成功,在1号虚拟机主库中我们添加一个test数据库,并添加一个atable表,在添加一条数据,如下
alt text
之后我们检查2号虚拟机的备库,发现数据会自动同步到备库中,则主备配置完成。
alt text

双主模式

双主模式,则跟以上配置完全一直,就是在主库上设置备库的配置,同时在备库上做主库的配置。