# 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_FILEMASTER_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 等多样性计算架构

更多推荐