MySQL數據庫運維第一篇(日志與主從復制)

文章目錄

  • 一、錯誤日志
  • 二、二進制日志
  • 三、查詢日志
  • 四、慢查詢日志(記錄超時的sql語句)
  • 五、主從復制概括
  • 六、主從復制原理
  • 七、搭建主從復制
  • 八、主從復制的測試

在這篇深入的技術文章中,作者將以明晰透徹的方式詳細介紹MySQL數據庫中關鍵的日志類型,如錯誤日志、二進制日志、查詢日志和慢查詢日志,以及它們的配置方法和應用場景。文章不僅探討了日志的重要性,如在故障排除和數據恢復中的關鍵作用,還步入了主從數據庫復制的核心運營,詳細講解了主從復制的設置和測試過程。讀者通過本文可以獲得對MySQL數據庫管理和排錯的全方位認識,為數據庫的高效維護和安全管理打下堅實基礎。

一、錯誤日志

在這里插入圖片描述
錯誤日志是 MySQL 中最重要的日志之一,它記錄了當 mysqld 啟動和停止時,以及服務器在運行過程中發生任何嚴重錯誤時的相關信息。當數據庫出現任何故障導致無法正常使用時,可以首先查看此日志。

該日志是默認開啟的 , 默認存放目錄為 mysql 的數據目錄, 默認的日志文件名為 hostname.err(hostname是主機名)。

查看日志位置的命令:

show variables like 'log_error%';

二、二進制日志

二進制日志(BINLOG)記錄了所有的 DDL(數據定義語言)語句和 DML(數據操縱語言)語句,但是不包括數據查詢語句。此日志對于災難時的數據恢復起著極其重要的作用,MySQL的主從復制, 就是通過該binlog實現的。
在這里插入圖片描述

二進制日志,MySQl8.0默認已經開啟,低版本的MySQL的需要通過配置文件開啟,并配置MySQL日志的格式。
Windows系統:my.ini Linux系統:my.cnf

#配置開啟binlog日志, 日志的文件前綴為 mysqlbin -----> 生成的文件名如 : mysqlbin.000001,mysqlbin.000002
log_bin=mysqlbin#配置二進制日志的格式
binlog_format=STATEMENT

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

-- 查看MySQL是否開啟了binlog日志
show variables like 'log_bin';-- 查看binlog日志的格式
show variables like 'binlog_format';-- 查看所有日志
show binlog events;-- 查看最新的日志
show master status;-- 查詢指定的binlog日志
show binlog events in 'binlog.000010';
select * from mydb1.emp2;
select count(*) from mydb1.emp2;
update mydb1.emp2 set salary = 8000;
-- 從指定的位置開始,查看指定的Binlog日志
show binlog events in 'binlog.000010' from 156;-- 從指定的位置開始,查看指定的Binlog日志,限制查詢的條數
show binlog events in 'binlog.000010' from 156 limit 2;
--從指定的位置開始,帶有偏移,查看指定的Binlog日志,限制查詢的條數
show binlog events in 'binlog.000010' from 666 limit 1, 2;-- 清空所有的 binlog 日志文件
reset master

三、查詢日志

在這里插入圖片描述
查詢日志中記錄了客戶端的所有操作語句,而二進制日志不包含查詢數據的SQL語句。

默認情況下, 查詢日志是未開啟的。如果需要開啟查詢日志,可以設置以下配置 :

#該選項用來開啟查詢日志 , 可選值 : 0 或者 10 代表關閉, 1 代表開啟 
general_log=1#設置日志的文件名 , 如果沒有指定, 默認的文件名為 host_name.log 
general_log_file=file_name

查詢日志的相關操作

-- 查看MySQL是否開啟了查詢日志
show variables like 'general_log';-- 開啟查詢日志
set global  general_log=1;select * from mydb1.emp2;
select * from mydb6_view.emp;select count(*) from mydb1.emp2;
select count(*) from mydb6_view.emp;
update mydb1.emp2 set salary = 9000;

四、慢查詢日志(記錄超時的sql語句)

慢查詢日志記錄了所有執行時間超過參數 long_query_time 設置值并且掃描記錄數不小于 min_examined_row_limit 的所有的SQL語句的日志。long_query_time 默認為 10 秒,最小為 0, 精度可以到微秒。
在這里插入圖片描述

# 該參數用來控制慢查詢日志是否開啟, 可取值: 101 代表開啟, 0 代表關閉
slow_query_log=1# 該參數用來指定慢查詢日志的文件名
slow_query_log_file=slow_query.log# 該選項用來配置查詢的時間限制, 超過這個時間將認為值慢查詢, 將需要進行日志記錄, 默認10slong_query_time=10

注意:查詢日志和慢查詢日志都是8.0之后才默認開啟的,sql語句開啟只能暫時開啟,要想永久開啟需要區配置文件里開啟。

五、主從復制概括

在這里插入圖片描述

六、主從復制原理

在這里插入圖片描述
核心是:二進制文件

從上圖看,復制分為三步:

1、master主庫在事務提交的時候會把數據變更記錄寫進二進制日志文件binlog中;

2、從庫通過IOthread讀取二進制日志文件binlog,寫入到從庫的中繼日志 Relay log中;

3、從庫重做中繼日志中的事件,將改變反映;

七、搭建主從復制

服務器準備
在這里插入圖片描述
請關閉防火墻,不讓端口訪問會有問題

主庫配置
在這里插入圖片描述

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

# 修改配置文件
[root@db01 ~]# vim /etc/my.cnf
[mysqld]
server_id=1 
#mysql服務ID,不要相同和從庫# 修改配置文件后重啟數據庫&&&&&&&&&&
######## 創建主從復制用戶,賦予主從復制的權限
mysql> create user 'repl'@'%' identified by 'repl@123';
mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
mysql> flush privileges;# 查看主庫master狀態
mysql> show master status;
+------------------+----------+--------------+------------------+------------------------------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set                        |
+------------------+----------+--------------+------------------+------------------------------------------+
| mysql-bin.000006 |      193 |              |                  | 54a2c4bc-89dc-11ee-a732-5254d7f9c2f7:1-5 |
+------------------+----------+--------------+------------------+------------------------------------------+
1 row in set (0.00 sec)

從庫配置
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

# 執行change master to 語句
CHANGE MASTER TO
MASTER_HOST='172.16.1.51',
MASTER_PORT = 3306,
MASTER_USER='rep',
MASTER_PASSWORD='rep@123',
MASTER_LOG_FILE='mysql-bin.000006',
MASTER_LOG_POS=193;master_port:主庫的ip地址master_port:主庫的端口master_user:用戶名master_password:密碼master_log_file:上節中主庫查詢的file項對應的值master_log_pos:上節中主庫查詢的的值# 開啟主從復制
mysql> start slave;# 查看主從復制狀態
mysql> show slave status\G

八、主從復制的測試

在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/719682.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/719682.shtml
英文地址,請注明出處:http://en.pswp.cn/news/719682.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

XGB-16:自定義目標和評估指標

概述 XGBoost被設計為一個可擴展的庫。通過提供自定義的訓練目標函數和相應的性能監控指標,可以擴展它。本文介紹了如何為XGBoost實現自定義的逐元評估指標和目標。 注意: 排序不能自定義 在接下來的兩個部分中,將逐步介紹如何實現平方對數…

【EAI 027】Learning Interactive Real-World Simulators

Paper Card 論文標題:Learning Interactive Real-World Simulators 論文作者:Mengjiao Yang, Yilun Du, Kamyar Ghasemipour, Jonathan Tompson, Leslie Kaelbling, Dale Schuurmans, Pieter Abbeel 作者單位:UC Berkeley, Google DeepMind, …

【 Docker 容器詳細介紹和說明】

Docker 容器詳細介紹和說明 Docker 容器詳細介紹和說明Docker 安裝步驟(以Ubuntu為例):使用Docker創建并運行容器:VSCode遠程連接Docker容器:步驟1:配置Docker環境步驟2:配置PyCharm步驟3&#…

日本發動全面侵華戰爭他們在怕什么?為何不敢動陜西,

日本全面侵華戰爭之謎:恐懼與野心的交織 在二十世紀三十年代,日本帝國主義以令人發指的暴行和殘忍手段,對中國發動了全面侵華戰爭。然而,在這場戰爭中,有一個引人關注的現象:日本侵略者在進攻過程中&#…

python和nodejs一鍵安裝當前項目所有依賴

python和nodejs一鍵安裝當前項目所有依賴。群里有人問怎么快速安裝網上下載的源碼里面的依賴。所以在這里分享一下。更多問題可以自己加群917400262問我。 目錄導航 1.0 python一鍵安裝當前項目所有依賴2.0 nodejs一鍵安裝當前項目所有依賴 1.0 python一鍵安裝當前項目所有依賴…

snakemake: 基礎知識

為了有效地學習和使用 Snakemake,你需要具備一定的基礎知識。這些基礎知識將幫助你更好地理解 Snakemake 的工作原理和如何在你的項目中應用它。以下是學習 Snakemake 所需的一些基礎知識: 1. Python 編程 Snakemake 是用 Python 編寫的,并…

聊聊國內「類Sora模型」發展現狀,和 Sora 的差距到底有多大?

2024 年 2 月 16 日。 就在谷歌發布他新一代的多模態大模型 Gemini 1.5 Pro 的同一天,OpenAI 帶著新一代的文生視頻模型 Sora 再次抓住了全世界人們的眼球。 “顛覆”、“炸裂”、“變天”、“瘋狂”,類似的形容詞一夜之間簇擁在 Sora 周圍,…

網絡傳輸基本流程(封裝,解包)+圖解(同層直接通信的證明),報頭分離問題,協議定位問題,協議多路復用

目錄 網絡傳輸基本流程 引入 封裝 過程梳理 圖解 報文 解包 過程梳理 圖解 -- 同層直接通信的證明 總結 解包時的報頭分離問題 舉例 -- 倒水 介紹 自底向上傳輸時的協議定位問題 介紹 解決方法 協議多路復用 介紹 優勢 網絡傳輸基本流程 引入 首先,我們明確…

VS查看C++頭文件(.h文件)的函數列表

這里使用的是VS2019舉例 如下圖查看Actor.h文件中的函數列表 設置步驟如下圖

【d35】【Java】【力扣】28. 找出字符串中第一個匹配項的下標

題目 給你兩個字符串 haystack 和 needle ,請你在 haystack 字符串中找出 needle 字符串的第一個匹配項的下標(下標從 0 開始)。如果 needle 不是 haystack 的一部分,則返回 -1 。 示例 1: 輸入:haystac…

【大數據】通過 docker-compose 快速部署 MinIO 保姆級教程

文章目錄 一、概述二、MinIO 與 Ceph 對比1)架構設計對比2)數據一致性對比3)部署和管理對比4)生態系統和兼容性對比 三、前期準備1)部署 docker2)部署 docker-compose 四、創建網絡五、MinIO 編排部署1&…

【SQL】608. 樹節點(流控制語句 CASE + IF語句)

前述 知識點推薦學習: sql中的 IF 條件語句的用法 MySQL:if語句、if…else語句、case語句,使用方法解析 題目描述 leetcode 題目:608. 樹節點 思路 關鍵點:如何確定有沒有子節點 根節點:父節點為空內節…

基于Redo log Undo log的MySQL的崩潰恢復

基于Redo log & Undo log的MySQL的崩潰恢復 Redo log Undo log Redo log 重做日志,記錄,修改過的數據 Undo log 回滾日志,記錄修改之前的數據 兩個我不做詳細的介紹了,redo log就是記錄哪些地方被修改了 undo log是記錄修改之前我們的數據長什么樣 更新流程 我們來捋一…

python封裝,繼承,復寫詳解

目錄 1.封裝 2.繼承 復寫和使用父類成員 1.封裝 class phone:__voltage 0.5def __keepsinglecore(self):print("單核運行")def callby5g(self):if self.__voltage > 1:print("5g通話開啟")else:self.__keepsinglecore()print("不能開啟5g通…

Redis集群(主從)

1.主從集群 集群結構: 一.單機安裝redis 1.上傳壓縮包并解壓,編譯 tar -xzf redis-6.2.4.tar.gz cd redis-6.2.4 make && make install 2.修改redis.config的配置并啟動redis # 綁定地址,默認是127.0.0.1,會導致只能在本地訪問。…

Tomcat布署及優化-----JDK和Tomcat

1.Tomcat簡介 Tomcat 是 Java 語言開發的,Tomcat 服務器是一個免費的開放源代碼的 Web 應用服務器,Tomcat 屬于輕量級應用服務器,在中小型系統和并發訪問用戶不是很多的場合下被普遍使用,是開發和調試 JSP 程序的首選。一般來說&…

C++ //練習 10.2 重做上一題,但讀取string序列存入list中。

C Primer(第5版) 練習 10.2 練習 10.2 重做上一題,但讀取string序列存入list中。 環境:Linux Ubuntu(云服務器) 工具:vim 代碼塊 /******************************************************…

Vue前端加密后的數據發送到服務器端

首先,定義了一個名為 PUBLIC_KEY 的公鑰和一個名為 PRIVATE_KEY 的私鑰。然后,通過 JSEncrypt 創建了兩個實例 encrypt 和 decrypt,分別用于加密和解密操作。 對于加密操作,調用了 encrypt.setPublicKey() 方法設置公鑰&#xff…

升級Centos7的openssh到openssh-9.6p1版本 shell腳本 漏掃整改

升級Centos7的openssh到openssh-9.6p1版本 shell腳本 漏掃整改 #!/bin/bash# 聲明: 該腳本適用于升級Centos7的openssh到openssh-9.6p1版本# 定義源碼包版本號 OPENSSH_VERSIONopenssh-9.6p1 OPENSSL_VERSIONopenssl-3.2.1 ZILB_VERSIONzlib-1.3.1# 安裝編譯環境 yum -y insta…

【前端面試題5】利用 border 屬性畫一個三角形

舉例1:利用 border 屬性畫一個三角形(小技巧) 完整代碼如下: div{width: 0;height: 0;border: 50px solid transparent;border-top-color: red;border-bottom: none; }步驟如下: (1)當我們設…