# 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 maskedsystemctl 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 编辑器,预览无误后即可发布。
Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐