CentOS 7 下 MariaDB 主从复制 + Apache Web 服务部署实战(表格命令版)
本文详细介绍了在CentOS 7环境下部署MariaDB主从复制和Apache Web服务的完整流程。主要内容包括:1) 配置主从服务器的静态IP;2) 设置本地YUM源;3) 安装并初始化MariaDB;4) 主库配置(开启二进制日志、创建同步用户);5) 从库配置(指向主库);6) 安装Apache服务;7) 测试主从同步功能;8) 常见问题排查方案。所有操作步骤均以表格形式呈现,并附有详细的
·
# CentOS 7 下 MariaDB 主从复制 + Apache Web 服务部署实战(表格命令版)
> **环境说明**
> - 主库:`192.168.200.70`(CentOS 7,MariaDB)
> - 从库:`192.168.200.74`(CentOS 7,MariaDB)
> - Web 服务:Apache(httpd)
>
> **格式说明**:本文所有操作步骤以表格形式呈现,配置文件、SQL 语句等采用独立代码块,便于阅读和复制。
---
## 一、部署前准备:配置静态 IP(主库示例)
| 步骤 | 操作说明 | 命令 / 配置内容 |
|------|----------|----------------|
| 1 | 编辑网卡配置文件 | `vi /etc/sysconfig/network-scripts/ifcfg-eno16777736` |
| 2 | 写入以下内容(全部替换原有内容) | 见下方代码块 |
| 3 | 重启网络服务 | `systemctl restart network` |
| 4 | 测试 IP 配置 | `ip addr` <br> `ping 192.168.200.1` |
**步骤2的配置文件内容:**
TYPE=Ethernet
BOOTPROTO=static
ONBOOT=yes
IPADDR=192.168.200.70
NETMASK=255.255.255.0
GATEWAY=192.168.200.1
DNS1=8.8.8.8
从库同样配置,将 IP 改为
192.168.200.74,其他相同。
二、配置本地 YUM 源(离线环境必备)
| 步骤 | 操作说明 | 命令 / 配置内容 |
|---|---|---|
| 1 | 创建挂载目录 | mkdir -p /opt/mnt |
| 2 | 挂载系统镜像(确保 VMware 已挂载 CentOS 镜像) | mount /dev/cdrom /opt/mnt |
| 3 | 备份原有 YUM 源 | mkdir -p /etc/yum.repos.d/bak mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/bak/ |
| 4 | 新建本地源配置文件 | vi /etc/yum.repos.d/local.repo |
| 5 | 写入以下内容 | 见下方代码块 |
| 6 | 重建 YUM 缓存 | yum clean all yum makecache |
| 7 | 查看 YUM 源是否生效 | yum repolist |
步骤5的配置文件内容:
[local]
name=Local YUM Repository
baseurl=file:///opt/mnt
enabled=1
gpgcheck=0
三、安装并初始化 MariaDB(主从均需执行)
| 步骤 | 操作说明 | 命令 / 配置内容 |
|---|---|---|
| 1 | 安装服务端 + 客户端 | yum install -y mariadb-server mariadb |
| 2 | 启动数据库并设置开机自启 | systemctl start mariadb systemctl enable mariadb |
| 3 | 数据库安全初始化(设置 root 密码:hc123) |
mysql_secure_installation |
| 4 | 关闭防火墙(主从均需关闭) | systemctl stop firewalld systemctl disable firewalld |
四、主库配置(192.168.200.70)
| 步骤 | 操作说明 | 命令 / 配置内容 |
|---|---|---|
| 1 | 修改 MariaDB 配置文件 | vi /etc/my.cnf |
| 2 | 在 [mysqld] 段添加以下内容 |
见下方代码块 |
| 3 | 重启数据库服务 | systemctl restart mariadb |
| 4 | 登录数据库(密码:hc123) |
mysql -u root -phc123 |
| 5 | 创建从库同步用户 | 见下方 SQL 语句 |
| 6 | 查看主库状态(记录 File 和 Position) | SHOW MASTER STATUS; |
| 7 | 退出数据库 | EXIT; |
步骤2 在 /etc/my.cnf 中添加的内容:
server-id=70
log-bin=mysql-bin
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
symbolic-links=0
步骤5 创建同步用户的 SQL 语句:
CREATE USER 'user'@'192.168.200.74' IDENTIFIED BY 'hc123';
GRANT REPLICATION SLAVE ON *.* TO 'user'@'192.168.200.74';
FLUSH PRIVILEGES;
主库状态示例:
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001 | 123 | | |
+------------------+----------+--------------+------------------+
五、从库配置(192.168.200.74)
| 步骤 | 操作说明 | 命令 / 配置内容 |
|---|---|---|
| 1 | 修改从库配置文件 | vi /etc/my.cnf |
| 2 | 在 [mysqld] 段添加以下内容 |
见下方代码块 |
| 3 | 重启从库数据库 | systemctl restart mariadb |
| 4 | 登录从库数据库(密码:hc123) |
mysql -u root -phc123 |
| 5 | 停止原有同步 | STOP SLAVE; |
| 6 | 重置同步配置 | RESET SLAVE ALL; |
| 7 | 指向主库(替换为实际的主库 File 和 Position) | 见下方 SQL 语句 |
| 8 | 启动同步 | START SLAVE; |
| 9 | 查看同步状态(两个 Yes 为成功) |
SHOW SLAVE STATUS\G; |
| 10 | 退出数据库 | EXIT; |
步骤2 在从库 /etc/my.cnf 中添加的内容:
server-id=74
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
步骤7 指向主库的 SQL 语句(请根据实际修改 File 和 Position):
CHANGE MASTER TO
MASTER_HOST='192.168.200.70',
MASTER_USER='user',
MASTER_PASSWORD='hc123',
MASTER_LOG_FILE='mysql-bin.000001', -- 主库的 File
MASTER_LOG_POS=123; -- 主库的 Position
同步成功标志:
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
六、安装 Web 服务(httpd)
| 步骤 | 操作说明 | 命令 |
|---|---|---|
| 1 | 安装 Apache 服务 | yum install -y httpd |
| 2 | 启动并设置开机自启 | systemctl start httpd systemctl enable httpd |
| 3 | 测试 Web 服务 | curl localhost |
七、功能测试:主库写入,从库自动同步
7.1 主库操作
| 步骤 | 操作说明 | SQL 命令 |
|---|---|---|
| 1 | 登录主库数据库 | mysql -u root -phc123 |
| 2 | 创建数据库 | CREATE DATABASE hcdata; |
| 3 | 查看数据库 | SHOW DATABASES; |
| 4 | 使用数据库 | USE hcdata; |
| 5 | 创建数据表 | 见下方 SQL 语句 |
| 6 | 插入测试数据 | INSERT INTO hcuser(name, addr) VALUES ('wang', 'beijing'); |
| 7 | 查询数据 | SELECT * FROM hcuser; |
| 8 | 退出 | EXIT; |
步骤5 创建表的 SQL 语句:
CREATE TABLE hcuser (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(20) NOT NULL,
addr VARCHAR(50)
);
7.2 从库验证
| 步骤 | 操作说明 | SQL 命令 |
|---|---|---|
| 1 | 登录从库数据库 | mysql -u root -phc123 |
| 2 | 使用数据库 | USE hcdata; |
| 3 | 查询数据 | SELECT * FROM hcuser; |
| 4 | 退出 | EXIT; |
若从库能查看到与主库相同的数据,说明主从复制成功。
八、常见排错方案
8.1 IP 配置问题
| 报错现象 | 解决方法 |
|---|---|
| 重启网络失败 | 检查配置文件语法、ONBOOT=yes、无多余空格 |
| 无法上网 | 确保已添加 DNS1=8.8.8.8,网关正确 |
8.2 YUM 源问题
| 报错现象 | 解决方法 |
|---|---|
mount: 找不到设备 |
在 VMware 中确认已挂载 CentOS 镜像 |
| 没有已启用的源 | 确保 local.repo 放在 /etc/yum.repos.d/ 且 enabled=1 |
8.3 MariaDB 服务问题
| 报错现象 | 解决方法 |
|---|---|
Unit mariadb.service is masked |
systemctl unmask mariadb systemctl daemon-reload systemctl start mariadb |
| 启动失败 | 重装:yum remove -y mariadb-server mariadb yum install -y mariadb-server mariadb |
8.4 主从同步报错
| 报错现象 | 解决方法 |
|---|---|
Slave_IO_Running: No |
检查防火墙是否关闭、主库 IP/密码是否正确、MASTER_LOG_FILE 和 MASTER_LOG_POS 是否与主库 SHOW MASTER STATUS 一致 |
Slave_SQL_Running: No |
执行:STOP SLAVE; RESET SLAVE ALL; START SLAVE; |
8.5 SQL 语法错误(本手册已修正)
| 错误写法 | 正确写法 |
|---|---|
INSERT INTO hcuser(name,addr) VALUES (1,'wang','beijing'); |
方式一(推荐):INSERT INTO hcuser(name,addr) VALUES ('wang','beijing'); 方式二: INSERT INTO hcuser VALUES (1,'wang','beijing'); |
总结
通过以上步骤,我们完成了:
- CentOS 7 静态 IP 配置
- 本地 YUM 源搭建
- MariaDB 安装与主从复制配置
- Apache 服务安装
- 主从数据同步验证(含 SQL 语法修正)
这套架构可用于读写分离、数据备份、负载均衡等场景。如有问题,欢迎在评论区交流!
📌 转载请注明出处
**修正说明:**
- 将所有原本写在表格单元格内的多行代码(配置文件、SQL 语句)移至**表格外的独立代码块**,并在表格内用“见下方代码块”或“见下方 SQL 语句”引用。
- 这样保证了表格结构完整,且代码块在 CSDN 上可以正常高亮显示。
- 其余表格内单行命令、短命令保持不变。
直接复制上述内容到 CSDN Markdown 编辑器,预览无误后即可发布。
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐
所有评论(0)