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

相关推荐
fen_fen3 分钟前
Jmeter5.1.1连接oracle数据库的错误复盘
数据库·jmeter·oracle
imDwAaY1 小时前
MySQL 存储引擎是什么?
android·数据库·mysql
星云低代码开发平台1 小时前
ERP 与 CRM 客户信用核对:业务键、时点和权限验收
大数据·数据库·人工智能
xiaogai_gai1 小时前
销售出库单同步实战:旺店通→金蝶云星空的单一策略深度拆解
大数据·前端·数据库
下页、再停留1 小时前
【C#桌面客户端系列学习-11】将SQLite数据库打包到exe里
数据库·c#·visual studio
下页、再停留1 小时前
【C#桌面客户端系列学习-12】封装SQLite数据库基础操作工具类(CURD)
数据库·c#·visual studio
LYmatch1 小时前
2024年408真题第41~47题汇总解析
数据库
程序员Sunday1 小时前
Redis 缓存穿透、击穿、雪崩怎么区分?从回源压力找原因
数据库·redis·缓存
我科绝伦(Huanhuan Zhou)1 小时前
磐维数据库(PanWeiDB)日常运维命令总结
运维·数据库
guo_wen_qiang2 小时前
redis实现秒杀功能-超卖&库存遗留问题的解决
数据库·redis·缓存