Mysql的主从复制及扩展功能

news/2025/2/1 14:20:27/

一、配置过程

        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        该命令用来查看慢查询的日志信息

                


http://www.ppmy.cn/news/1568443.html

相关文章

初学stm32 --- FreeRTOS移植

目录 移植前准备 1. 基础工程 2. FreeRTOS 源码 添加 FreeRTOS 文件 1. 添加 FreeRTOS 源码 2. 将文件添加到工程 3. 添加头文件路径 4. 添加 FreeRTOSConfig.h 文件 (1) FreeRTOSConfig.h 获取途径一 (2) FreeRTOSConfig.h 获取途径二 (3) FreeRTOSConfig.h 获取途径…

HTTP(1)

HTTP协议 HTTP是什么 HTTP(全称为"超文本传输协议")是一种应用非常广泛的基于TCP协议的应用层协议。 常见的应用场景: 浏览器与服务器之间的交互(访问网站)手机与服务器之间的通信多个服务器之间进行通信 …

RocketMQ优势剖析-性能优化

RocketMQ在性能优化方面展现出了许多独特的优点,这些优势使其在高吞吐量、低延迟以及可靠性等方面具有显著的表现。以下是对RocketMQ性能优化方面的详细剖析: 高吞吐量 RocketMQ采用了批量发送和预读取等技术来提升消息处理速度。批量发送允许客户端将…

Microsoft Visual Studio 2022 主题修改(补充)

Microsoft Visual Studio 2022 透明背景修改这方面已经有很多佬介绍过了,今天闲来无事就补充几点细节。 具体的修改可以参考:Microsoft Visual Studio 2022 透明背景修改(快捷方法)_material studio怎么把背景弄成透明-CSDN博客文…

Qt事件处理:理解处理器、过滤器与事件系统

1. 事件 事件 是一个描述应用程序中、发生的某些事情的对象。 在 Qt 中,所有事件都继承自 QEvent ,并且每个事件都有特定的标识符,如:Qt::MouseButtonPress 代表鼠标按下事件。 每个事件对象包含该事件的所有相关信息&#xff…

Spring Boot - 数据库集成07 - 数据库连接池

数据库连接池 文章目录 数据库连接池一:知识准备1:什么是数据库连接池?2:数据库连接池基本原理 二:HikariCP连接池1:简单使用2:进一步理解2.1:是SpringBoot2.x默认连接池2.2&#xf…

蓝桥云客 三羊献瑞

三羊献瑞 题目描述 本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。 观察下面的加法算式: 祥 瑞 生 辉 三 羊 献 瑞 -------------------三 羊 生 瑞 气其中,相同的汉字代表相同的数字,…

AI Agent的安全实践:权限控制与数据保护

在前面的文章中,我们讨论了 AI Agent 的各个功能模块。今天,我想聊聊一个经常被忽视但极其重要的话题:安全性。说实话,我在这方面也吃过亏,希望通过分享我的经验,帮大家少走一些弯路。 从一个安全事故说起…