mariadb

一、环境规划

单机测试(服务端+客户端)

主机名 IP地址 角色
mariadb-server 10.1.8.10/24 MariaDB服务端
mariadb-client 10.1.8.11/24 远程客户端

主从复制架构

主机名 IP地址 角色
mariadb-server1 10.1.8.10/24 主库Master
mariadb-server2 10.1.8.11/24 从库Slave

二、系统基础网络配置

1. 主机名设置

bash 复制代码
hostnamectl set-hostname mariadb-server

2. 静态IP配置

bash 复制代码
nmcli connection modify ens33 ipv4.method manual \
ipv4.addresses 10.1.8.10/24 \
ipv4.gateway 10.1.8.2 \
ipv4.dns 10.1.8.2 autoconnect yes
nmcli connection up ens33

三、MariaDB 安装与初始化(CentOS7 yum)

1. 安装服务端

bash 复制代码
yum install -y mariadb mariadb-server
# 启动+开机自启
systemctl start mariadb
systemctl enable mariadb
# 查看运行状态
systemctl status mariadb

2. 生产安全初始化(必执行)

bash 复制代码
mysql_secure_installation

交互步骤统一选择y

  1. 初始无root密码,直接回车
  2. 设置root密码:y
  3. 删除匿名测试用户:y
  4. 禁止root账号远程登录:y
  5. 删除test测试库:y
  6. 刷新权限立即生效:y

3. 数据库登录方式

bash 复制代码
# 本地快捷登录
mysql -uroot -p
# 指定IP+端口登录
mysql -uroot -p -h127.0.0.1 -P3306

4. 客户端安装(仅远程机器执行)

bash 复制代码
yum install mariadb -y
# 远程连接服务端
mysql -uadmin -p123456 -h10.1.8.10 -P3306

5. 放行防火墙3306端口

bash 复制代码
firewall-cmd --add-port=3306/tcp --permanent
firewall-cmd --reload

四、核心基础SQL语句(每条以;结尾)

1. 数据库库操作

sql 复制代码
-- 查看所有库
show databases;

-- 创建普通数据库
create database school;

-- 指定utf8mb4字符集(支持emoji,推荐)
create database school2 default character set utf8mb4 collate utf8mb4_general_ci;

-- 切换使用数据库
use school;

-- 查看当前所在库
select database();

-- 删除数据库
drop database school2;

2. 数据表操作

sql 复制代码
-- 查看当前库所有表
show tables;

-- 创建学生表
create table student(
id int primary key auto_increment,
name varchar(20),
age int
);

-- 查看表字段结构
desc student;

-- 查看完整建表语句
show create table student;

-- 删除数据表
drop table student2;

3. DML增删改查(业务常用)

sql 复制代码
-- 批量插入数据
insert into student(name,age) values('zhangsan',18),('lisi',20);

-- 查询全表数据
select * from student;

-- 条件过滤查询
select * from student where age>18;

-- 更新数据(务必加where条件)
update student set age=19 where id=1;

-- 删除指定数据(务必加where条件)
delete from student where id=2;

4. 用户创建与权限管理

创建登录账号
sql 复制代码
-- 仅本地localhost登录
create user 'admin'@'localhost' identified by '123456';
-- 允许任意IP远程登录 %
create user 'admin'@'%' identified by '123456';
权限分配
sql 复制代码
-- 给admin授予school库全部权限
grant all privileges on school.* to 'admin'@'%';
-- 刷新权限生效
flush privileges;

-- 查看指定用户权限
show grants for 'admin'@'%';

-- 删除用户
drop user 'test'@'%';

权限说明:

  • *.*:服务器所有数据库、所有表
  • school.*:仅school库下全部数据表

五、MariaDB 配置文件说明

  1. 主配置文件:/etc/my.cnf
  2. 子配置目录:/etc/my.cnf.d/*.cnf
  3. 推荐服务端配置 /etc/my.cnf.d/server.cnf
ini 复制代码
[mysqld]
server-id=1                  # 实例唯一ID,主从必须不同
datadir=/var/lib/mysql      # 数据存储目录
bind-address=0.0.0.0        # 监听所有IP,允许远程访问
character-set-server=utf8mb4 # 默认字符集
log_bin=mysql-bin           # 开启二进制日志(主从必备)
binlog_format=mixed         # binlog日志格式

[mysqld_safe]
log-error=/var/log/mariadb/mariadb.log
pid-file=/var/run/mariadb/mariadb.pid

修改配置后重启服务生效:

bash 复制代码
systemctl restart mariadb

六、MariaDB 一主一从复制原理与实操

1. 主从复制核心原理图

2. 核心组件说明

  1. 主库 binlog(二进制日志)
    记录所有增删改、建表等数据变更操作,是同步数据源。
  2. 从库 relay log(中继日志)
    缓存从主库拉取的binlog,避免网络中断丢失数据。
  3. 主库 binlog dump线程
    向从库推送binlog日志事件。
  4. 从库 IO线程
    连接主库、拉取binlog写入本地relay log。
  5. 从库 SQL线程
    读取relay log并回放SQL,实现数据同步。

3. 完整同步流程

  1. 主库执行数据变更,事务提交时写入binlog;
  2. 从库IO线程携带binlog文件名+偏移位置连接主库;
  3. 主库dump线程推送增量日志给从库IO线程;
  4. IO线程将日志写入本地relay log,记录同步位点;
  5. SQL线程按顺序回放relay log,同步主库数据。

4. 主库Master配置(10.1.8.10)

① 修改配置文件
bash 复制代码
vim /etc/my.cnf
[mysqld]
server-id=1
log_bin=mysql-bin
# 重启服务
systemctl restart mariadb
② 创建复制专用账号
sql 复制代码
create user 'repl'@'%' identified by 'Repl@123456';
grant replication slave on *.* to 'repl'@'%';
flush privileges;
-- 查看主库同步位点,记录File、Position
show master status;

5. 从库Slave配置(10.1.8.11)

① 修改配置文件
bash 复制代码
vim /etc/my.cnf
[mysqld]
server-id=2
relay_log=mysql-relay-bin
systemctl restart mariadb
② 关联主库并启动同步
sql 复制代码
change master to
master_host='10.1.8.10',
master_user='repl',
master_password='Repl@123456',
master_log_file='mysql-bin.000001',
master_log_pos=548;

-- 启动从同步
start slave;
-- 查看同步状态
show slave status\G;

同步正常标识:

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

6. 同步测试

主库执行建库语句:

sql 复制代码
create database qingqingcaoyuan;

从库执行show databases;可自动同步到新建数据库,验证同步成功。

相关推荐
泡干脆面就番茄20 分钟前
MySQL_子查询_分页查询与联合查询详解
数据库·mysql
devpotato1 小时前
缓存与数据库更新顺序不一致问题
java·数据库·redis
天若有情6732 小时前
Node+MySQL小型全栈笔记项目实战课程分享
数据库·笔记·mysql
wxwx_bscxy3222 小时前
基于springboot宠物领养系统的设计与实现
数据库·spring boot·后端·spring·宠物
九月要晚安3 小时前
达梦DW与AFC对比
数据库
实战派K8S&DB3 小时前
如何在内网配置 TiDB 数据库 Agent
数据库·人工智能·分布式·tidb
实战派K8S&DB3 小时前
《基于 Dify + FastAPI + PyTiDB 搭建大模型驱动的 TiDB 智能运维 Agent》
运维·数据库·分布式·云原生·tidb·fastapi
SelectDB3 小时前
Apache Doris 5.0 年度版本前瞻(一):构建统一的多模湖仓实时分析平台
大数据·数据库·数据分析
小白学大数据3 小时前
超简单:用 Python 让 Excel 飞起来:用 openpyxl 把重复报表整理交给脚本
开发语言·数据库·python·excel
西索斯coding3 小时前
doubao-seed-2.1-turbo 调用一直 401 怎么办?pro 版同样的 Key 却正常——5 分钟排查定位指南
java·服务器·数据库·ai