栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

【Mysql运维篇】一、日志、主从复制、分库分表

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【Mysql运维篇】一、日志、主从复制、分库分表

文章目录

参考资料1. 日志

1.1 错误日志1.2 二进制日志

1. 介绍2. 日志格式3. 日志查看4. 日志删除 1.3 查询日志1.4 慢查询日志 2. 主从复制

2.1 概述2.2 原理2.3 搭建

1. 服务器2. 主库配置3. 从库配置4. 开启同步操作5. 查看主从同步状态 2.4 测试

参考资料

https://www.bilibili.com/video/BV1Kr4y1i7ru?p=153&spm_id_from=pageDriver

1. 日志 1.1 错误日志

错误日志是 MySQL 中最重要的日志之一,它记录了当 mysqld 启动和停止时,以及服务器在运行过程中发生任何严重错误时的相关信息。当数据库出现任何故障导致无法正常使用时,建议首先查看此日志。

该日志是默认开启的,默认存放目录/var/log/,默认的日志文件名为 mysqld.log 。查看日志位置:

show variables like '%log_error%';
1.2 二进制日志 1. 介绍

二进制日志(BINLOG)记录了所有的 DDL(数据定义语言)语句和 DML(数据操纵语言)语句,但不包括数据查询(SELECT、SHOW)语句。

作用:①. 灾难时的数据恢复;②. MySQL的主从复制。在MySQL8版本中,默认二进制日志是开启着的,涉及到的参数如下:

show variables like '%log_bin%';

2. 日志格式

MySQL服务器中提供了多种格式来记录二进制日志,具体格式及特点如下:

show variables like '%binlog_format%';
3. 日志查看

由于日志是以二进制方式存储的,不能直接读取,需要通过二进制日志查询工具 mysqlbinlog 来查看,具体语法:

4. 日志删除

对于比较繁忙的业务系统,每天生成的binlog数据巨大,如果长时间不清除,将会占用大量磁盘空间。可以通过以下几种方式清理日志:

也可以在mysql的配置文件中配置二进制日志的过期时间,设置了之后,二进制日志过期会自动删除。

show variables like '%binlog_expire_logs_seconds%';
1.3 查询日志

查询日志中记录了客户端的所有操作语句,而二进制日志不包含查询数据的SQL语句。默认情况下, 查询日志是未开启的。如果需要开启查询日志,可以设置以下配置 :

首先查看是否开启

show variables like '%general%';

修改MySQL的配置文件 /etc/my.cnf 文件,添加如下内容:

1.4 慢查询日志

慢查询日志记录了所有执行时间超过参数 long_query_time 设置值并且扫描记录数不小于 min_examined_row_limit的所有的SQL语句的日志,默认未开启。long_query_time 默认为 10 秒,最小为 0, 精度可以到微秒

修改MySQL的配置文件 /etc/my.cnf 文件,输入以下语句,即可开启:

默认情况下,不会记录管理语句,也不会记录不使用索引进行查找的查询。可以使用log_slow_admin_statements和更改此行为 log_queries_not_using_indexes,如下所述。

2. 主从复制 2.1 概述

主从复制是指将主数据库的DDL 和 DML 操作通过二进制日志传到从库服务器中,然后在从库上对这些日志重新执行(也叫重做),从而使得从库和主库的数据保持同步。

MySQL支持一台主库同时向多台从库进行复制, 从库同时也可以作为其他从服务器的主库,实现链状复制。

MySQL 复制的优点主要包含以下三个方面:

    主库出现问题,可以快速切换到从库提供服务。实现读写分离,降低主库的访问压力。可以在从库中执行备份,以避免备份期间影响主库服务。
2.2 原理

从上图来看,复制分成三步:

    Master 主库在事务提交时,会把数据变更记录在二进制日志文件 Binlog 中。从库读取主库的二进制日志文件 Binlog ,写入到从库的中继日志 Relay Log 。slave重做中继日志中的事件,将改变反映它自己的数据。
2.3 搭建 1. 服务器

准备好两台服务器

对两台服务器的防火墙进行设置

# 开放指定的3306端口号:
firewall-cmd --zone=public--add-port=3306/tcp-permanent
firewall-cmd-reload
# 关闭服务器的防火墙:
systemctl stop firewalld
systemctl disable firewalld

准备好两台服务器之后,在上述的两台服务器中分别安装好MySQL,并完成基础的初始化准备工作。

2. 主库配置

    修改配置文件 /etc/my.cnf

    重启MySQL服务器

    systemctl restart mysqld
    

    登录mysql,创建远程连接的账号,并授予主从复制权限

    通过指令,查看二进制日志坐标

    show master status;
    

3. 从库配置

    修改配置文件 /etc/my.cnf

    重新启动MySQL服务

    systemctl restart mysqld
    

    登录mysql,设置从库配置


    上述是8.0.23中的语法。如果mysql是 8.0.23 之前的版本,执行如下SQL:

4. 开启同步操作
start replica; #8.0.22之后
start slave; #8.0.222前
5. 查看主从同步状态
show replica status; #8.0.22之后
show slave status; #8.0.222前
2.4 测试

    在主库上创建数据库、表,并插入数据

    create database db01
    use db01;
    create table tb_user(
    	id int(11) primary key not null auto_increment,
    	name varchar(50) not null,
    	sex varchar(1)
    )engine=innodb default charset=utf8mb4;
    insert into tb_user(id,name,sex) values(null,'Tom', '1'),(null. 'Trigger','0'),(null,'Dawn','1');
    

    在从库中查询数据,验证主从是否同步

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/747806.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号