三十分钟学会 单节点mysqlmysql主从搭建 (保姆级无坑教程)
2026/9/11 9:46:22 网站建设 项目流程

目录

1、准备安装包:

2、上传安装包到服务器

3、分发安装包给其他两台服务器

4、安装单机版MySQL

1、解压安装包(我这里直接对三个服务器一起进行哈,后续要搭建mysql的主从)

(1)卸载系统中自带的数据库

(2) 解压安装包

(3) mysql环境变量配置

(4)创建mysql用户组

(5)创建数据目录

(6)创建mysql数据库配置文件

(7)初始化数据库

(8)启动数据库

(9)登录mysql并修改密码

(10)远程客户端连接mysql

5、集群版Mysql

(1)架构图

​编辑

(2) 主节点配置 (192.168.10.11)

(3)从节点1配置

(4)从节点2配置 和节点1 一致 的代码哈

(5) 解锁 主节点的写数据权限

(6)在主节点创建数据库 数据表并写入数据


经过博主的努力!终于是把最基础的东西敲完了,虚拟机已经搭建好了。

没有搭建虚拟机的宝子看这里 :Linux Centos7从零到一的安装保姆级教程(网络、SSH免密、克隆) 博主带你玩转虚拟机及大数据!-CSDN博客

不熟悉liinux命令的宝子看这里:

从零开始的大数据之路 linux基础篇(一次学会永不回头)(1)_大数据中卸载和解压命令-CSDN博客

本次讲解mysql的搭建,因为mysql5.7的功能已经不及现在8.0 版本的性能,所以我这里就以搭建8.0 的mysql来为大家详细讲解 linux中mysql 8.0 无坑版本的搭建!

1、准备安装包:

没有安装包的看这里:

大数据之路 安装包分享 你想要的我都有系列 [持续更新分享]-CSDN博客

2、上传安装包到服务器

3、分发安装包给其他两台服务器

# 因为我刚刚是把文件上传到master节点 如果你不是上传到master需要进行替换的哦 scp -r install_package/ root@slave1:$PWD scp -r install_package/ root@slave2:$PWD

4、安装单机版MySQL

1、解压安装包(我这里直接对三个服务器一起进行哈,后续要搭建mysql的主从)

(1)卸载系统中自带的数据库
#查看系统中有没有 maria rpm -qa|grep mariadb #卸载maria 这里填写自己的版本哈 rpm -e --nodeps mariadb-libs-5.5.64-1.el7.x86_64

(2) 解压安装包
mkdir /home/softwares #解压 (要在压缩包的文件目录哈) tar -Jxvf mysql-8.0.35-linux-glibc2.17-x86_64.tar.xz -C /home/softwares/

这样就解压完了!

(3) mysql环境变量配置
cd /home/softwares mv mysql-8.0.35-linux-glibc2.17-x86_64/ mysql # 编辑环境变量 vim /etc/profile #添加mysql的环境变量 export PATH=$PATH:/home/softwares/mysql/bin #环境变量生效 source /etc/profile
(4)创建mysql用户组
# 创建一个用户组:mysql groupadd mysql # 创建一个系统用户:mysql,指定用户组为mysql useradd -r -g mysql mysql
(5)创建数据目录
#创建数据目录 mkdir -p /home/data/mysql_data/data #创建日志目录 mkdir -p /home/data/mysql_data/logs # 更改属主和数组 chown -R mysql:mysql /home/data/mysql_data/ # 更改模式 chmod -R 755 /home/data/mysql_data

(6)创建mysql数据库配置文件
# 按照自己的实际路径来哈 mkdir /home/softwares/mysql/conf vim my.cnf

配置文件如下,如果内存大可以调大参数哈!

[mysql] default-character-set = utf8mb4 [client] port = 3306 socket = /tmp/mysql.sock [mysqld] innodb_strict_mode = 0 port = 3306 server-id = 1 user = mysql socket = /tmp/mysql.sock basedir = /home/softwares/mysql datadir = /home/data/mysql_data/data log-bin = /home/data/mysql_data/mysql-bin innodb_data_home_dir = /home/data/mysql_data/data innodb_log_group_home_dir = /home/data/mysql_data/logs log-error = /home/data/mysql_data/logs/mysql.log pid-file = /home/data/mysql_data/data/mysql.pid character-set-server = utf8mb4 lower_case_table_names = 1 autocommit = 1 default-authentication-plugin = mysql_native_password skip-external-locking # ----------- 降为原始配置的 1/12 ----------- key_buffer_size = 42M max_allowed_packet = 42M table_open_cache = 85 sort_buffer_size = 3M net_buffer_length = 66K read_buffer_size = 3M read_rnd_buffer_size = 426K myisam_sort_buffer_size = 5M thread_cache_size = 106 # query_cache_size = 106M tmp_table_size = 42M explicit_defaults_for_timestamp = true max_connections = 41 max_connect_errors = 100 open_files_limit = 65535 binlog_format = ROW log-bin = master-a-bin binlog_expire_logs_seconds = 864000 default_storage_engine = InnoDB innodb_data_file_path = ibdata1:10M:autoextend innodb_buffer_pool_size = 674M innodb_log_file_size = 85M innodb_log_buffer_size = 6M innodb_flush_log_at_trx_commit = 1 innodb_lock_wait_timeout = 60 transaction-isolation = READ-COMMITTED [mysqldump] quick max_allowed_packet = 42M [myisamchk] key_buffer_size = 5M sort_buffer_size = 341K read_buffer = 170K write_buffer = 170K [mysqlhotcopy] interactive-timeout

说明:

(7)初始化数据库
# 填写自己的路径哈 mysqld --defaults-file=/home/softwares/mysql/conf/my.cnf --basedir=/home/softwares/mysql --datadir=/home/data/mysql_data/data --user=mysql --initialize-insecure

为了防止各位宝子弄错哈,博主把每个参数简单的解释一下

(8)启动数据库
# 完整命令 /home/softwares/mysql/bin/mysqld_safe --defaults-file=/data/softwares/mysql8/my.cnf & # 添加PATH变量后的命令(省略bin目录的路径) mysqld_safe --defaults-file=/home/softwares/mysql/conf/my.cnf & # 查看mysql的启动状态 ps -ef | grep mysql

mysql 的命令都在里面了! 记住这个路径,当然添加了环境变量可以直接使用下面那个命令启动,随意目录都可以的哈!

查看mysql的启动情况

(9)登录mysql并修改密码
# 免密登录mysql mysql -u root --skip-password # 修改密码 ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456'; # 刷新权限 FLUSH PRIVILEGES; # 这里是给远程权限的哈 下面的 'mysql>' 不要粘贴了 hhh mysql> use mysql mysql> update user set user.Host='%'where user.User='root'; mysql> flush privileges; mysql> quit # 这个是没开防火墙开放端口的,当然咱们不需要这个,所以下面这些不需要执行,但是我还是留下这些命令哈 # 但是如果是生产环境 还是请大家仅开放端口哦 sudo firewall-cmd --zone=public --add-port=3306/tcp --permanent sudo firewall-cmd --reload

至此单节点的mysql 8 到这里基本结束了哈! 博主一次成功,各位宝子遇到困难了吗?

评论区留言,大家相互交流!

(10)远程客户端连接mysql

工具有很多的 如 dbeave 、 navicat、datagrip 等,自行选择 如果需要工具,博主找找自己的安装包给你还是可以的,不一定找的到,哈哈哈!下面就讲解一下怎么远程连接我们的数据库 ,方便后续写代码测试以及搭建mysql集群!

新建连接

这是 DG连接工具

5、集群版Mysql

(1)架构图

(2) 主节点配置 (192.168.10.11)
# 创建一个用于同步数据的用户 create user 'slave_user'@'%' identified by 'All_123456'; # 给用户赋权 grant all on *.* to 'slave_user'@'%'; # 刷新锁定表 防止主节点写入数据 FLUSH TABLES WITH READ LOCK; # 查看主节点状态 show master status;

(3)从节点1配置
-- 停止同步 stop REPLICA; -- 重设同步参数 RESET REPLICA ALL; # 修改同步参数 按照自己实际情况来 CHANGE REPLICATION SOURCE TO SOURCE_HOST='192.168.10.11', SOURCE_USER='slave_user', SOURCE_PASSWORD='All_123456', SOURCE_LOG_FILE='master-a-bin.000002', SOURCE_LOG_POS=1860; # 开启同步 START REPLICA; # 查看同步状态 SHOW REPLICA STATUS; SELECT * FROM performance_schema.replication_applier_status_by_worker

(4)从节点2配置 和节点1 一致 的代码哈
-- 停止同步 stop REPLICA; -- 重设同步参数 RESET REPLICA ALL; # 修改同步参数 按照自己实际情况来 CHANGE REPLICATION SOURCE TO SOURCE_HOST='192.168.10.11', SOURCE_USER='slave_user', SOURCE_PASSWORD='All_123456', SOURCE_LOG_FILE='master-a-bin.000002', SOURCE_LOG_POS=1860; # 开启同步 START REPLICA; # 查看同步状态 SHOW REPLICA STATUS; SELECT * FROM performance_schema.replication_applier_status_by_worker
(5) 解锁 主节点的写数据权限
# 这个在主节点执行哈 UNLOCK TABLES;

show processlist

这里已经可以看到从节点 1 从节点二已经在接收主节点的binlog日志了,至此 mysql主从已经大功告成! 恭喜各位宝子又喜提新的技能了哈!!!

(6)在主节点创建数据库 数据表并写入数据

注意,这里我提供测试代码,在主节点去执行,从节点会自动同步数据的哈! 如果成功了说明宝子你很棒!!

-- 创建数据库 CREATE DATABASE IF NOT EXISTS test_db CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; -- 使用该数据库 USE test_db; -- 创建表 CREATE TABLE IF NOT EXISTS users ( id INT AUTO_INCREMENT PRIMARY KEY, username VARCHAR(50) NOT NULL, email VARCHAR(100), created_at DATETIME DEFAULT CURRENT_TIMESTAMP ); -- 写入数据 INSERT INTO users (username, email) VALUES ('alice', 'alice@example.com'), ('bob', 'bob@example.com'), ('charlie', 'charlie@example.com');

主节点写入数据

从节点1查询刚刚主节点写入的数据,完全正确!!!

从节点2查询刚刚主节点写入的数据,完全正确!!!

至此Mysql的单机版和集群版都已经被博主无坑讲解完了哈,各位宝子还是去点赞收藏吧!!

关注博主,博主只给大家带来干货,在这个知识付费的年代,博主花时间和精力免费分享无坑干货给大家,还是希望大家支持我。

然后我们期待后续的内容吧!

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询