mysql學習

查看glibc版本
ldd --version

--mysql啟動失敗,嘗試啟動
1 查看錯誤日志,端口被占用,參數名寫錯,有不支持的參數
2 通過mysqld啟動 mysqld --default-file=my.cnf &
3 mysqld --no-defaults --basedir=/user/local/mysql --datadir=/data/mysql/3306/data/ --user=mysql
4 strace查看mysql啟動過程的系統調用情況

查看當前用戶
select user();

系統表中注冊已加載的組件
rpm包安裝的軟件默認加載了validate_password
show plugins;
SELECT PLUGIN_NAME, PLUGIN_STATUS FROM INFORMATION_SCHEMA.PLUGINS;
select * from mysql.component;
show variables like 'validate_password%';

加載validate_password
mysql5.7?
install plugin validate_password soname 'validate_password.so';
vi /etc/my.cnf
plugin-load=validate_password.so

mysql8.0
install component 'file://component_validate_password';

--參數
--查看參數的信息
select * from variables_info limit 1 \G
default_authentication_plugin:默認的密碼認證插件
master_info_repository:復制的相關信息保存在文件還是表里(mysql.slave_master_info,mysql.slave_relay_log_info)
gtid_mode=on
enforce_gtid_consistency=on


--錯誤
--mysql8.0以下的客戶端連接mysql8.0報錯
Authentication plugin ‘caching_sha2_password‘ cannot be loaded
原因:mysql8 之前的版本中加密規則是mysql_native_password,而在mysql8之后,加密規則是caching_sha2_password。
解決方法:
1 升級mysql客戶端或驅動
2 將參數default_authentication_plugin設置為mysql_native_password
3 創建用戶時指定auth_plugin為mysql_native_password
create user user1@'%' identified with mysql_native_password 'xxxxx';
創建用戶不指定密碼認證插件,實際上被默認指定

--主從復制
mysql8.0要加 get_master_public_key=1 ,主要是由于復制用戶使用新的密碼認證插件
change master to ?master_host='xxx', master_port=xxx, master_user='xxx', master_password='xxxx', get_master_public_key=1,master_log_file='binlog.000003',master_log_pos=155 for channel 'channel_201_3306';
基于gtid復制
change master to ?master_host='xxx', master_port=xxx, master_user='xxx', master_password='xxxx', master_auto_position=1;

?
--數據字典
mysql.slave_master_info ?保存連接主庫的信息,IO線程讀取主庫binlog信息(非實時,寫入sync_master_info參數個事務后更新)
mysql.slave_relay_log_info ?sql線程重放relay_log的位置

--查看binlog事件
show binlog events in 'mysql-bin.000001';?

--查看全局變量
show global variables like 'gtid_executed';


============================延遲復制============================
暫停SQL線程應用,并不會暫停IO線程接受日志
在主庫執行后,要等待若干秒才在備庫執行
===============使用場景:
1 應對主庫的誤操作,比如drop table
delete,update誤操作,如果日志格式是ROW,可通過binlog閃回恢復.drop操作binlog只記錄原生SQL,無法使用工具恢復
2 查看數據的歷史狀態
3 人為模擬主從延遲
也可使用flush tables with read lock模擬來模擬延遲
===============開啟延遲復制
CHANGE MASTER TO master_host='xxxxx',master_port=xxxx,master_user='xxx',master_password='******',MASTER_LOG_FILE='mysql1_bin.000007', MASTER_LOG_POS=426114256 ,master_delay=28800;
stop slave;
CHANGE MASTER TO master_delay=28800;
start slave;

show slave status\G
SQL_Delay: 28800 ---期望的延遲時間
SQL_Remaining_Delay: 28774 ---需要等待多久才能到達期望延遲時間
Slave_SQL_Running_State: Waiting until MASTER_DELAY seconds after master executed event
===============使用延遲復制恢復主庫誤刪的表
從庫開啟延遲復制
主庫查看刪表的binlog位置
show master status;
show binlog events in 'mysql-bin.000003';
pager grep -iB 5 drop
show binlog events in 'mysql-bin.000003';

從庫恢復到drop之前的位點
stop slave;
CHANGE MASTER TO master_delay=0;
start slave until master_log_file='xxx',master_log_pos=xxx;

show slave status\G ?--確認恢復到指定位置
Master_Log_File=Relay_Master_Log_File
Exec_Master_Log_Pos=Until_Log_Pos
Slave_SQL_Running='No'
導出數據導入到主庫

============================主從延遲============================
===============如何分析主從延遲
1 從庫服務器的負載情況
top?
iostat -xm 1
2 主從復制狀態
show master status;
show slave status\G
對比主位點以及備讀取位點
對比備讀取位點以及備執行位點
3 主庫binlog寫入量
===============主從延遲常見原因以及解決方法
1 IO線程存在延遲
網絡延遲 ?--開啟slave_compressed_protocol,啟用binlog壓縮
磁盤IO存在瓶頸 ?--調整從庫雙1設置或者關閉binlog
網卡問題
2 sql線程存在延遲
a 主庫binlog寫入量過大,SQL線程單線程重放
具體體現:
從庫磁盤IO無明顯瓶頸
relay_master_log_file和exec_master_log_pos不斷變化
binlog生成速度快于5分鐘一個,主庫寫入量過大
解決:升級到5.7以上,開啟并行復制
b statement格式下的慢SQL
具體體現:
relay_master_log_file和exec_master_log_pos一段時間沒變化
解決:設置log_slow_slave_statements,記錄從庫的慢SQL,優化SQL
c 表上無索引且binlog為row格式
具體體現:
relay_master_log_file和exec_master_log_pos一段時間沒變化
表無索引操作時,主庫表只會被掃描一次,而row格式下的從庫,對于每條記錄都會掃描一次
解決
從庫臨時創建一個索引
將參數slave_rows_search_algorithms設置為INDEX_SCAN,HASH_SCAN
d 大事務
拆分成小事務
e 從庫上有查詢
消耗系統資源,有鎖等待
查詢操作阻塞主庫的DDL
f 從庫上有備份
全局讀鎖阻塞SQL線程
g 磁盤IO存在瓶頸
===============如何理解seconds_behind_master
根據計算邏輯
1 seconds_behind_master只計算SQL線程的延遲,不計算IO線程的延遲
網絡原因,磁盤瓶頸,slave_net_timeout設置過大,導致的binlog未及時發送
2 binlog為statement和row計算邏輯不一樣
3 級聯復制無法真正反映延遲

主從延遲的監控
8.0之前使用pt-hearteat
8.0使用如下SQL
select case when min_commit_timestamp is null then 0?
? ? ? ?else unix_timestamp(now(6))-unix_timestamp(min_commit_timestamp) end as seconds_behind_master?
? from (select min(APPLYING_TRANSACTION_ORIGINAL_COMMIT_TIMESTAMP) as min_commit_timestamp?
? ? ? ? from performance_schema.replication_applier_status_by_worker?
?? ? ? where applying_transaction<>'') t;

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

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

相關文章

深入理解 Nginx 的負載均衡與反向代理

深入理解 Nginx 的負載均衡與反向代理 Nginx 是一個高性能的 HTTP 和反向代理服務器&#xff0c;也是一個 IMAP/POP3/SMTP 代理服務器。由于其出色的性能和靈活性&#xff0c;Nginx 已成為現代 web 架構中的重要組成部分&#xff0c;尤其是在處理高并發連接和大規模流量時。在…

找到數組的中間位置-1991-[簡單]

力扣 關鍵點 從題目中總結出公式 sum * 2 nums[i] total從左往右開始嘗試&#xff0c;尋找 i 位置滿足上面的公式&#xff0c;為什么從左開始&#xff0c;因為題目要求找到最左邊的一個用前綴和的概念來解&#xff0c;從左往右嘗試i位置的左邊所有數之和&#xff0c;右邊所有…

基礎小白快速入門Python------>模塊的作用和意義

模塊&#xff0c; 這個詞聽起來是如此的高大威猛&#xff0c;以至于萌新小白見了瑟瑟發抖&#xff0c;本草履蟲見了都直搖頭&#xff0c;好像聽上去很難的樣子&#xff0c;但是但是&#xff0c;年輕人&#xff0c;請聽本少年細細講述&#xff0c;他只是看起來很難&#xff0c;實…

GO-接口

1. 接口 在Go語言中接口&#xff08;interface&#xff09;是一種類型&#xff0c;一種抽象的類型。 interface是一組method的集合&#xff0c;接口做的事情就像是定義一個協議&#xff08;規則&#xff09;&#xff0c;只要一臺機器有洗衣服和甩干的功能&#xff0c;我就稱它…

【go語言開發】swagger安裝和使用

本文主要介紹go-swagger的安裝和使用&#xff0c;首先介紹如何安裝swagger&#xff0c;測試是否成功&#xff1b;然后列出常用的注釋和給出使用例子&#xff1b;最后生成接口文檔&#xff0c;并在瀏覽器上測試 文章目錄 安裝注釋說明常用注釋參考例子 文檔生成格式化文檔生成do…

C++從零開始的打怪升級之路(day39)

這是關于一個普通雙非本科大一學生的C的學習記錄貼 在此前&#xff0c;我學了一點點C語言還有簡單的數據結構&#xff0c;如果有小伙伴想和我一起學習的&#xff0c;可以私信我交流分享學習資料 那么開啟正題 今天分享的是關于模板的知識點 1.非類型模板參數 模板參數分為…

大模型生成,Open API調用

大模型是怎么生成結果的 通俗原理 其實&#xff0c;它只是根據上文&#xff0c;猜下一個詞&#xff08;的概率&#xff09;…… OpenAI 的接口名就叫【completion】&#xff0c;也證明了其只會【生成】的本質。 下面用程序演示【生成下一個字】。你可以自己修改 prompt 試試…

高并發下的 AtomicReference 性能陷阱

介紹 Java 提供了 AtomicInteger/AtomicLong 在并發編程里經常用到&#xff0c;它們封裝了對 int 和 long 的原子操作。 Java 還提供了 AtomicReference&#xff0c;用于對象引用做原子性的管理&#xff0c;比如 get、set、CAS。 一般情況下 AtomicInteger、AtomicLong 的性能…

mac新環境

1、maven 設置阿里云鏡像 打開Maven的settings.xml文件。找到<mirrors>標簽&#xff0c;如果沒有&#xff0c;可以手動添加。在<mirrors>標簽內部添加以下內容&#xff1a; <mirror> <id>nexus-aliyun</id> <mirrorOf>*</mirrorO…

【C++】類的轉換函數

使用場景 C中當你創建了一個類&#xff0c;你想把這個類對象轉換成基本類型的函數。類對象->基本類型對象 原理 如下實例&#xff0c;設計一個分數類&#xff0c;實現分數轉換成double 浮點數的轉換函數。并在mian函數隱式調用。 #include<iostream> class Fractio…

6. 使用 Spring Boot進行開發(Developing with Spring Boot)

6. 使用 Spring Boot進行開發&#xff08;Developing with Spring Boot&#xff09; 本節詳細介紹了如何使用Spring Boot。它涵蓋考慮構建系統、自動配置以及如何運行應用程序等主題。我們還介紹一些 Spring Boot 最新做法。雖然 Spring Boot 沒有什么特別之處&#xff08;它只…

Java 接口和抽象類有何區別?

Java接口&#xff08;Interface&#xff09;和抽象類&#xff08;Abstract Class&#xff09;都是面向對象編程中用于實現多態和代碼復用的重要概念&#xff0c;但它們之間有幾個關鍵的區別&#xff1a; 1. **實例化**&#xff1a; - **接口**&#xff1a;不能被實例化。它…

【Spring連載】使用Spring Data訪問 MongoDB----對象映射之JSON Schema

【Spring連載】使用Spring Data訪問 MongoDB----對象映射之JSON Schema 一、生成Schema二、加密字段三、JSON Schema類型 從3.6版本開始&#xff0c;MongoDB支持根據提供的 JSON Schema驗證documents的集合。在創建集合時&#xff0c;可以定義schema本身以及驗證操作和級別&…

Python爬蟲Cookies 池的搭建

Cookies 池的搭建 很多時候&#xff0c;在爬取沒有登錄的情況下&#xff0c;我們也可以訪問一部分頁面或請求一些接口&#xff0c;因為畢竟網站本身需要做 SEO&#xff0c;不會對所有頁面都設置登錄限制。 但是&#xff0c;不登錄直接爬取會有一些弊端&#xff0c;弊端主要有…

南京師范大學計電院數據結構課設——排序算法

1 排序算法 1.1 題目要求 編程實現希爾、快速、堆排序、歸并排序算法。要求首先隨機產生10000個數據存入磁盤文件&#xff0c;然后讀入數據文件&#xff0c;分別采用不同的排序方法進行排序并將結果存入文件中。 1.2 算法思想描述 1.2.1 隨機數生成 當需要生成一系列隨機數…

windows 11 前后端項目部署

目錄 1.準備環境&#xff1a; 2.安裝jdk 測試&#xff1a;winr 輸入cmd 3.安裝tomcat 4.安裝mysql 遠程導入數據&#xff1a; 外部后臺訪問&#xff1a;192.168.232.1:8080/crm/sys/loginAction.action?usernamezs&password123 5.安裝nginx 前后端部署&#xff1…

qsort函數的模擬實現(冒泡排序模擬)

冒泡排序&#xff1a; 從第一個元素開始&#xff0c;依次比較相鄰的兩個元素&#xff0c;如果順序不對就交換它們。 經過一輪遍歷后&#xff0c;最大&#xff08;或最小&#xff09;的元素會排在最后。 重復進行上述步驟&#xff0c;直到沒有任何元素需要交換&#xff0c;即…

Linux了解

簡介 Linux是一種自由和開放源代碼的類UNIX操作系統&#xff0c;由芬蘭的Linus Torvalds于1991年首次發布。Linux最初是作為支持英特爾x86架構的個人電腦的一個自由操作系統&#xff0c;現在已經被移植到更多的計算機硬件平臺&#xff0c;如手機、平板電腦、路由器、視頻游戲控…

爬蟲入門到精通_實戰篇8(分析Ajax請求并抓取今日頭條美食美圖)_界面上抓取Ajax方式

1 目標 目標&#xff1a; 抓取今日頭條美食美圖&#xff0c;如下&#xff1a; 一些網頁直接請求得到的HTML代碼并沒有在網頁中看到的內容&#xff0c;因為一些信息是通過Ajax加載&#xff0c;并通過js渲染生成的&#xff0c;這時就需要通過分析網頁的請求來獲取想要爬取的內容…

解決conda環境下import TensorFlow失敗的問題

問題描述 安裝了anaconda的電腦&#xff0c;新建了一個名叫deeplearning的環境&#xff0c;在該環境下已經成功安裝了tensorflow。 于是在終端打開python并執行代碼 import tensorflow as tf print(1)除了提示 2024-02-27 21:50:00.801427: I external/local_tsl/tsl/cuda/c…