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;可自动同步到新建数据库,验证同步成功。

相关推荐
大千UI工场8 小时前
时序数据库对数字孪生的作用
数据库·ui·时序数据库·前端开发·b端管理系统
Tongzhi20268 小时前
通芝科技无感考勤一体机:软硬一体,开箱即用
数据结构·数据库·科技·算法·均值算法·数据库开发
这就是佬们吗8 小时前
向量数据库选型与实战:从原理到生产环境的完整指南
数据库
Shawn Dev9 小时前
MySQL Binlog 数据误删除恢复完全指南
数据库·mysql·elasticsearch
oradh9 小时前
Oracle ADRCI 诊断数据工具总结
数据库·oracle·adrci
zzzll11119 小时前
Loop Engineering:循环工程的原理、实践与应用
java·数据库·python
IpdataCloud9 小时前
IPv6查出来的地理位置是错的?技术解析与双栈定位方案
数据库·tcp/ip·ip
数字新视界9 小时前
信创动环监控厂家深入剖析智能机房环境监控技术应用与挑战
服务器·数据库·物联网·芯片·动环监控系统
羑悻的小杀马特9 小时前
打破深海垄断:国产数据库如何托起固井软件的“数据心脏”?
数据库