MySQL在linux下的安装及基本使用
通过Yum Repository安装MySQL
可以查看MySQL官方文档,通过文档步骤进行安装MySQL。我们在这里选择MySQL8.4,因为安装了Linux 9, 所以我们选择对应linux的rpm包。
安装步骤
- 执行
yum localinstall https://dev.mysql.com/get/mysql84-community-release-el9-1.noarch.rpm
, 将mysql84rpm配置包安装进本地yum仓库,在需要输入的地方我们根据提示输入y
- 在执行完上面命令后,我们通过
yum repolist
可以查看到已经启用的yum仓库 - 执行
yum install mysql-community-server
安装MySQL,这个操作会自动为我们安装各种依赖,如果没有执行1
步骤,则会提示 Error: Unable to find a match: mysql-community-server , 在安装完成会出现 Complete! 提示 - 执行
systemctl start mysqld
启动MySQL - MySQL 8在安装成功并启动后,会在安装日志中为我们生成一个临时的密码,通过
grep 'temporary password' /var/log/mysqld.log
可以获取到该密码,然后用该密码登录MySQL, 登录命令mysql -uroot -p
- 最后我们修改root密码就可以了,
ALTER USER 'root'@'localhost' IDENTIFIED BY 'Lx@MySQL_cc123';
- 当然现在的MySQL root用户只能在本地登录,我们可以修改root的host让root在所有地方都可以登录
update mysql.user set host='%' where user='root';
, 在修改完host后刷新权限flush privileges;
- 之后我们通过客户端链接MySQL可能会出现
Public Key Retrieval is not allowed
错误, 我们在链接时加入参数?allowPublicKeyRetrieval=true
就可以连接了,如果依旧无法链接则是linux没有关闭防火墙,可以关闭放获取systemctl stop firewalld
或 开通访问端口
firewall防火墙基本使用:
firewall-cmd --get-active-zones
获取当前活跃的区域firewall-cmd --zone=public --add-port=8080/tcp --permanent
添加8080/tcp
端口放行,其实permanent
是表示永久生效,zone
表示所操作的区域, 可以使用--remove-port
移除端口firewall-cmd --reload
表示重新加载防火墙规则firewall-cmd --zone=public --list-ports
获取所有开放的端口。
firewall 管理模式有 Service
、 Ports
、 Rich Rules
、Direct Rules
:
sudo firewall-cmd --zone=public --add-service=http --permanent
允许http服务sudo firewall-cmd --zone=public --add-port=3306/tcp --permanent
允许8080/tcp端口firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.100" port port="8080" accept' --permanent
富规则,允许ip访问某个端口,其中ip和port都可以独立存在sudo firewall-cmd --direct --add-rule ipv4 filter INPUT 0 -s 192.168.1.100 -j ACCEPT
直接通过iptables命令添加规则
通过 RPM Packages 安装MySQL
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虚拟机中- 下载完成后我们通过
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
解压文件 - 之后我们通过
cd mysql-9.2.0-1.el9.x86_64.rpm-bundle
进入文件夹可以看到以下的rpm文件 - 执行
yum install mysql-community-{server,client,client-plugins,icu-data-files,common,libs}-* --skip-broken
安装MySQL,之后会提示我们安装完成,在安装成功后,其他步骤和 通过Yum Repository安装MySQL>安装步骤 中的 4->8 一致 - 注意此处安装的MySQL为9.2版本
部署MySQL主备复制
MySQL的主从复制是根据bin-log
二进制文件进行的,所以主数据库需要配置打开bin-log
配置。之后为每个MySQL实例配置不同的server-id
,备库打开中继日志relay-log
,为每个库创建用户用于同步,则完成主备复制。
首先我们安装两个MySQL数据库,分别在虚拟机10.21.33.65
和 10.21.33.77
上,以下简称为1号虚拟机和2号虚拟机,在1号虚拟机上安装MySQL 8.4,在2号虚拟机上安装MySQL 9.2,将1号虚拟机作为MySQL主库,2号虚拟机为备库。
1号虚拟机主库配置操作如下:
- 打开MySQL配置文件
vi /etc/my.cnf
- 配置
server-id=1
,该值默认情况下为1,取值范围为1 到 (2^32 )−1
, 为清晰我们添加配置为1
,该值的设定可以通过set global server_id
进行,更改无需重启MySQL,如果之前设置0值,改为非0值,则需要重启 - 配置
log-bin=mysql-binlog
,该配置默认情况下是开启的,如果修改名称,则更改此配置,建议修改 - 重启MySQL服务后,链接MySQL创建复制用户并只赋予需要复制的权限
1 | CREATE USER 'repl'@'%' IDENTIFIED BY 'Lx@MySQL_cc123'; |
- 如果是在使用期间的MySQL配置配置主备,则需要执行
FLUSH TABLES WITH READ LOCK;
命令,该命令的作用是刷新所有的表到磁盘,同时增加全局读锁,使数据短暂的不能写入,在exit
离开当前会话后,会自动释放该锁,其次还需要手动将主库所有数据手动复制到备库,如果使尚未使用的数据库,则不需要该操作 - 执行命令
SHOW BINARY LOG STATUS;
记录binlog
文件信息用于配置备库,如果打开了GTID
自动定位,则不需要记录该信息 - 开启gtid配置,
gtid-mode = ON
enforce-gtid-consistency = ON
2号虚拟机备库配置操作如下:
- 打开MySQL配置文件
vi /etc/my.cnf
- 配置
server-id=2
- 配置
relay-log=mysql-relay-bin
,中继日志,该日志默认为启动状态,该操作用于修改名称 - 开启gtid配置,
gtid-mode = ON
enforce-gtid-consistency = ON
- 重启MySQL后,链接MySQL配置主库信息,用于同步操作
1 | # 在不打开GTID自动定位的情况下,需要我们手动定位binlog位置信息并填入 |
- 检查从库状态
SHOW REPLICA STATUS;
- 启动从库,
start replica
测试
在做完以上操作后,我们在2号虚拟机备库中执行SHOW REPLICA STATUS;
检查同步状态,如果没有出现错误,则配置成功,在1号虚拟机主库中我们添加一个test
数据库,并添加一个atable
表,在添加一条数据,如下
之后我们检查2号虚拟机的备库,发现数据会自动同步到备库中,则主备配置完成。
双主模式
双主模式,则跟以上配置完全一直,就是在主库上设置备库的配置,同时在备库上做主库的配置。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Lx Faither' Blog!