Mysql的主从复制及扩展功能

一、配置过程

1.配置master

vim /etc/my.cnf

mysqld

datadir=/data/mysql 指定数据库文件的存储位置

socket=/data/mysql/mysql.sock

symbolic-links=0

log-bin=mysql-bin 启用二进制日志,用于记录数据库的更改操作

servid-id=1 设置mysql服务器的唯一id

进入数据库配置用户权限

mysql -pxxx

create user 'repl'@'%' identified by 'test'; 生成专门用来做复制的用户,用于slave端做认证

grant replication slave on *.* to 'repl'@'%' 对这个用户进行授权

配置slave

vim /etc/my.cnf

mysqld

datadir=/data/mysql

socket=/data/mysql/mysql.sock

symbolic-links=0

server-id=2

进入数据库进行配置

mysql -pxxx

change master to****master_host='172.25.254.11',master_user='repl',master_password='test',master_log_file='mysql-bin.000001',master_log_pos=xxx; 后面两个参数的具体数值可以通过在主数据库使用命令****show master status 来查看对应的参数的数值

start slave;

show slave status\G; 可以通过该命令查看主从服务器之间的状态

测试

create database xiao;

create table xiao.user(username varchar(20) not null,password varchar(50) not null)

在主数据库设备上创建测试的数据库

show databases; show tables 在从数据库的设备上查看相关的信息,看在主数据库创建的数据库和表是否同步到从数据库上

一般情况下在slave阶段中是开启写功能,但是一般会关闭slave节点的写功能来保证数据一致性。

vim /etc/mysql.cnf

mysqld

super_read_only=on 一般改为off

当有数据时添加slave2

vim /etc/my.cnf

mysqld

datadir=/data/mysql

socket=/data/mysql/mysql.sock

symbolic-links=0

server-id=3

mysqldump -uroot -pxxx test > xiao.sql 从master节点备份数据

在生产环境进行上述操作时备份时需要锁表,保证备份前后的数据一致性

mysql> flush tables with read lock;

备份后再解锁

unlock tables;

**拉平数据:**mysql -uroot -pxxx -e "create database xiao;"

mysql -uroot -pxxx >xiao.sql

mysql -uroot -pxxx -e "select * from xiao.user;"

配置slave2的slave功能,在此之前先在主数据库设备上查询最后需要对应的两个参数的值,然后利用同上的命令将slave2配置为master的从设备。

二、延迟复制

1.延迟复制是用来控制sql线程和io线程无关,其io线程正常工作,而是日志已经保存在slave端,而是sql要等多久进行回放

此种功能适用于当master端误操作时,可以在slave端进行数据备份

2.配置操作(该配置操作是在slave上进行配置的)

stop slave sql_thread;

change master to master_delay=60; 表示从服务器会延迟60s才执行主服务器上的更改

start slave sql_thread;

可以通过 show slave status\G来查看延迟的效果

三、慢查询日志

1.当执行sql超过long_query_time参数设定的时间阈值(默认为10s)时会被认为是慢查询,则这个慢查询是要被优化的

慢查询的日志会被记录在慢查询的日志中且默认情况下不开启慢查询

2.开启慢查询日志:

set global slow_query_log=ON;

set long_query_time=4;

show variables like "slow%"; 通过该命令可以查看慢查询日志是否开启

测试:

select sleep (10);

cat /data/mysql/mysql-node1-slow.log 该命令用来查看慢查询的日志信息

相关推荐
一只鹿鹿鹿5 小时前
政务外网整体设计方案(PPT)
大数据·数据库·web安全·系统安全·流程图·政务
2603_965148115 小时前
社区与学习资源:从入门到精通的API选品学习路径
数据库·人工智能·python·学习·数据挖掘
for_ever_love__5 小时前
MySQL ORDER BY 排序优化:从 Using filesort 到索引有序扫描(含双路 / 单路排序原理)
java·mysql·优化·存储·by·order·filesort
AI砖家5 小时前
安全进入 Agent Loop:2027 年 Coding Agent 的决胜点
数据库·安全·codex·vibecoding
wangqiaowq6 小时前
SQL server C盘空间占满的处理
数据库·sql
文人sec6 小时前
SQL基础入门笔记 | 从零基础到掌握核心查询语句
数据库·笔记·sql
数字新视界6 小时前
机房动环监控提升运维效率
大数据·服务器·数据库·动环监控系统·动力与环境监控系统
SelectDB技术团队6 小时前
冷热分层从建到验:Storage Policy 创建、表级与分区级绑定、SHOW TABLETS 验证的完整命令
大数据·数据库·elasticsearch·搜索引擎·数据分析·apache doris·冷热分层
lambo mercy8 小时前
Day3:结构化输出
java·数据库·oracle
派小心.8 小时前
小程序分享链路中来源参数的传递校验
大数据·前端·数据库·人工智能·小程序·数据分析