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

相关推荐
这个DBA有点耶3 天前
MVCC深入:Read View、版本链与快照读——InnoDB并发控制的内核
数据库·mysql·架构
DBA_G3 天前
从地面到云霄:GBase数据库在民航三大场景的落地实践
数据库
自由能燃气设备3 天前
商用全预混低氮冷凝锅炉免费方案vs付费方案对比+选型避坑指南
大数据·数据库·人工智能
科创致远3 天前
科创致远 ESOP 系统核心效能与实战价值展示
大数据·数据库·人工智能·精益工程
2601_962218613 天前
万象生鲜系统称重自动多退少补算法解决生鲜非标品痛点
大数据·数据库·人工智能·python·算法
张洛闻Eren3 天前
k8s云原生【第十课】:水平 Pod 自动扩缩容
运维·数据库·云原生·kubernetes·github
于平安3 天前
MySQL-触发器
数据库·mysql
白远山3 天前
上海24小时自助健身房解决方案实战指南与经验分享
java·数据库·架构·需求分析
Omics Pro3 天前
斯坦福Nature+Science|广义虚拟细胞基础大模型
数据库·人工智能·算法·机器学习·自然语言处理
2603_965148113 天前
AI+API选品:下一代智能商务助手雏形已现
java·大数据·数据库·人工智能·数据挖掘