Linux運維新手的修煉手扎之第27天

mysql服務

1 主從復制
集群:多主機集群【復制】
負載過大解決方案:橫向擴展[增加服務器節點分散負載]、縱向擴展[提升單機硬件性能]
復制工作原理:
前提:基礎數據一樣,主節點上有同步數據用的賬號
主角色【二進制日志、binlog dump】、從角色【中繼日志、IO線程、sql線程】

????????mysql架構:

? ? 主節點只要負責正常運行,保證有二進制日志可以被復制,為復制這項功能開啟一個專門的用戶賦予復制權限可以讓從節點用此用戶登錄主節點來實現復制。
①創建存放二進制文件的目錄[mkdir -pv /data/mysql/logbin],并基于mysql的運行方式賦予目錄mysql的屬主屬組[chown -R mysql:mysql /data/mysql]
②修改mysql-server.conf配置文件,給自己添加server-id:標識自己主機身份的id(為了從節點準確找到自己);并在配置文件里指定自己二進制文件路徑log_bin=/data/mysql/logbin/mysql-bin(mysql-bin是binlog文件的前綴)
③創建用于復制的用戶[create user repluser@'10.0.0.%' identified by '123456';],并賦予他可以復制的權限[grant replication slave on *.* to repluser@'10.0.0.%';]

? ? 從節點是實現主從集群復制的主動方,做好一系列環境準備后,運行命令開啟主從復制。
①環境準備:包括創建存放二進制文件的目錄,修改mysql-server.conf等
②需要在主節點運行命令:show master status;查看從節點需要復制的二進制日志數據的開始位置
③從節點配置對接主節點的配置參數,配置完執行show slave status查看從節點是否根據配置參數找到了主節點
④如果show slave status的返回結果正確且Slave_IO_Running 和 Slave_SQL_Running 是兩個No,說明主從已經配置好了,只是沒有開啟,接下來可以開啟主從復制了:start slave

2 中間件實踐
定位:通過數據庫中間件減少程序端的復雜邏輯,讓應用層更專注于業務
方案:mycat
核心配置文件:server.xml-定義用戶權限、系統參數
schema.xml-定義邏輯庫、分片規則、數據節點

3 高可用方案
mgr官方的解決方案【基礎環境很重要,必須開啟GTID gtid_mode=ON】

實踐:零數據一主一從實踐[熟練]
1 環境準備:
主master-rocky10.0.0.12-mysql8.0.41
從slave-rocky10.0.0.15-mysql8.0.41
#rocky環境關閉selinux、firewalld
vim /etc/selinux/config
SELINUX=disabled
systemctl disable --now firewalld.service
reboot2 主節點配置
(1)準備mysql環境
yum install mysql-server -y
(2)目錄環境準備
#創建目錄 
mkdir -pv /data/mysql/logbin
#修改屬主屬組 
chown -R mysql:mysql /data/mysql
(3)主節點mysql配置
#修改mysql配置文件
[root@rocky9-12 ~]# vim /etc/my.cnf.d/mysql-server.cnf
[mysqld] #指定服務端配置
server-id=177 #指定server-id
log_bin=/data/mysql/logbin/mysql-bin #指定二進制文件路徑
default_authentication_plugin=mysql_native_password # 避免出現認證問題
#重啟mysql服務
systemctl restart mysqld
#查看二進制日志
ll /data/mysql/logbin
(4)登錄到mysql確認效果
[root@rocky9-12 ~]# mysql
mysql> show master logs;
(5)創建賬號并授權
mysql> create user repluser@'10.0.0.%' identified by '123456';
mysql> grant replication slave on *.* to repluser@'10.0.0.%';(replication slave 是一種特殊的權限,用于允許從庫(Slave)連接到主庫(Master)并同步數據)
mysql> flush privileges;3 從節點配置
(1)準備mysql環境
yum install mysql-server -y
(2)目錄環境準備
#創建目錄 
mkdir -pv /data/mysql/logbin
#修改屬主屬組 
chown -R mysql:mysql /data/mysql
(3)從節點mysql配置
#修改mysql配置文件
[root@rocky9-15 ~]# vim /etc/my.cnf.d/mysql-server.cnf
[mysqld]
server-id=183 #指定server-id
read-only #只讀模式
log-bin=/data/mysql/logbin/mysql-bin #指定二進制文件路徑
default_authentication_plugin=mysql_native_password # 避免出現認證問題
#重啟mysql服務
systemctl restart mysqld
#查看二進制日志
ll /data/mysql/logbin
(4)登錄到mysql確認效果
[root@rocky9-12 ~]# mysql
mysql> show slave status;
此時從節點為空Empty set,......4 從角色配置數據同步角色
#master主機確認數據效果
mysql> show master status;
結果顯示-要同步的數據在mysql-bin.000002,數據位置在879
#查看從節點狀態
mysql> show slave status;
此時從節點為空Empty set,......
#從節點上配置賬號級別的主從同步
mysql> CHANGE MASTER TO MASTER_HOST='10.0.0.12',MASTER_USER='repluser',MASTER_PASSWORD='123456',MASTER_PORT=3306,MASTER_LOG_FILE='mysql-bin.000002',MASTER_LOG_POS=849;
#查看從節點狀態
mysql> show slave status\G;
結果顯示-Slave_IO_Running 和 Slave_SQL_Running 是兩個No,說明主從已經配置好了,只是沒有啟動而已5 啟動同步操作
#從節點啟動slave
mysql> start slave;
#從節點再次查看狀態,同步需要一段時間,不是說會立刻同步過來
mysql> show slave status\G;
結果顯示-Slave_IO_State: Waiting for source to send event # 等待數據發送過來Master_Host: 10.0.0.12Master_User: repluserMaster_Port: 3306Connect_Retry: 60 #當從節點與主節點的連接中斷時,每隔60秒嘗試重新連接主節點Master_Log_File: mysql-bin.000002Read_Master_Log_Pos: 849 #主節點二進制日志大小Relay_Log_File: rocky9-relay-bin.000002 #中繼日志發生了變化Relay_Log_Pos: 326Relay_Master_Log_File: mysql-bin.000002Slave_IO_Running: Yes #線程都啟動了Slave_SQL_Running: Yes #線程都啟動了......Seconds_Behind_Master: 0 #主從節點數據時間差,0表示己經完全同步
#從節點驗證數據同步效果
mysql> select User,host from mysql.user;6 數據同步測試
#主節點上寫入數據,創建數據庫,創建數據表,添加數據
mysql> create database db1;
mysql> use db1;
mysql> CREATE TABLE `student` (`id` int unsigned NOT NULL AUTO_INCREMENT,`name` varchar(20) NOT NULL,`age` tinyint unsigned DEFAULT NULL,`gender` enum('M','F') DEFAULT 'M',PRIMARY KEY (`id`)) ENGINE=InnoDB;
mysql> insert into student (name,age,gender)values('user1',10,'M'),('user2',20,'F'),('user3',30,'M'); 
#在從節點查看數據,都同步過來了
mysql> show databases;
mysql> use db1;
mysql> show tables;
mysql> select * from student;
實踐:有數據一主一從實踐[熟練]
1 環境準備:
主master-rocky10.0.0.12-mysql8.0.41
從slave-rocky10.0.0.15-mysql8.0.41
目前master節點是有數據的,我們可以將從節點環境清空,從而實現,兩者環境的不一致效果
#從節點環境清空[root@rocky9-15 ~]
systemctl stop mysqld
rm -rf /var/lib/mysql/* #刪除MySQL數據庫文件
rm -rf /data/mysql/logbin/* #刪除MySQL二進制日志
systemctl start mysqld
#主節點重置二進制日志,如果從當前使用位置開始同步,則原有數據無法同步
mysql> reset master;
mysql> show master status;
結果顯示-mysql-bin.000001,數據位置1572 全量數據同步
#用全量備份的方式導出所有己有數據,并刷新二進制日志
[root@rocky9-12 ~]# mysqldump -A -F --source-data=1 --single-transcaction > all.sql 
(-A mysqldump備份MySQL服務器上的所有數據庫;-F 在執行備份之前,MySQL服務器刷新并重置它的日志文件;--source-data=1的作用是,在導出數據的時候記錄二進制位置;--single-transaction:mysqldump創建一個單獨的事務來導出數據,從而不需要鎖定表)
#確認效果
[root@rocky9-12 ~]# ll all.sql
#主節點確認日志效果,日志被刷新
mysql> show master status;
結果顯示-mysql-bin.000002,數據位置157
#查看備份文件
[root@rocky9-12 ~]# more all.sql
......
CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000002', MASTER_LOG_POS=157; ?# 非注釋的第一行
#同步文件到從主機
[root@rocky9-12 ~]# scp all.sql 10.0.0.15: (同步到遠程主機 10.0.0.15的當前用戶的家目錄,如果當前用戶是root,則路徑為 /root/all.sql)3 同步賬號授權
#主節點創建賬號并授權
mysql> create user repluser@'10.0.0.%' identified by '123456';
mysql> grant replication slave on *.* to repluser@'10.0.0.%';
#確認效果
mysql> select user,host from mysql.user;4 從節點配置
#配置文件定制
[root@rocky9-15 ~]# vim /etc/my.cnf.d/mysql-sever.cnf
[mysqld]
server-id=183
read-only
log-bin=/data/mysql/logbin/mysql-bin
default_authentication_plugin=mysql_native-password #避免出現認證問題
#修改備份文件
[root@rocky9-15 ~]# vim all.sql
...
# CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000002', MASTER_LOG_POS=157; 
# 將此句補全為如下樣式
CHANGE MASTER TO
MASTER_HOST='10.0.0.12',
MASTER_USER='repluser',
MASTER_PASSWORD='123456',
MASTER_PORT=3306,
MASTER_LOG_FILE='mysql-bin.000002',
MASTER_LOG_POS=157;
#從節點加載語句
mysql> set sql_log_bin=0;(因為是導數據,所以需要關閉二進制日志,否則可能會導致當從節點作為其他實例的主節點時,這些SQL會再次傳回主節點,導致數據重復執行,如同一條INSERT被執行兩次,導致數據出現混亂)
#開始導入數據
mysql> source /root/all.sql
#檢查主從狀態
mysql> show slave status\G;
結果顯示-Slave_IO_Running: No Slave_SQL_Running: No# 主從環境導入成功5 啟動同步操作
#從節點啟動slave
mysql> start slave;
#從節點再次查看狀態
mysql> show slave status\G;
結果顯示-Slave_IO_State: Waiting for source to send eventMaster_Host: 10.0.0.12Master_User: repluserMaster_Port: 3306Connect_Retry: 60Master_Log_File: mysql-bin.000002Read_Master_Log_Pos: 157Relay_Log_File: rocky9-relay-bin.000002Relay_Log_Pos: 326Relay_Master_Log_File: mysql-bin.000002Slave_IO_Running: Yes # 主從環境恢復了Slave_SQL_Running: Yes......
#從節點恢復二進制日志
mysql> set @@sql_log_bin=1;
#查詢
mysql> use db1;
mysql> select * from student;6 數據同步測試
#主節點新增數據
mysql> insert into student (name,age,gender)values('user4',40,'M');
#從節點確認效果
mysql> select * from student;

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

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

相關文章

【Linux】Linux增刪改查命令大全(附頻率評級)

Linux增刪改查命令大全(附頻率評級)* 《Linux命令全景手冊:增刪改查全場景解析(含136個高頻命令)》 按使用頻率★分級 | 測試/運維/開發均適用 | 附思維導圖下載一、命令全景表(增刪改查頻率評級&#xff0…

SwiftUI 登錄頁面鍵盤約束沖突與卡頓優化全攻略

網羅開發(小紅書、快手、視頻號同名)大家好,我是 展菲,目前在上市企業從事人工智能項目研發管理工作,平時熱衷于分享各種編程領域的軟硬技能知識以及前沿技術,包括iOS、前端、Harmony OS、Java、Python等方…

建筑物實例分割數據集-9,700 張圖片 城市規劃與發展 災害評估與應急響應 房地產市場分析 智慧城市管理 地理信息系統(GIS) 環境影響評估

建筑物實例分割數據集-9,700 張圖片📦 已發布目標檢測數據集合集(持續更新)🏢 建筑物實例分割數據集介紹📌 數據集概覽包含類別🎯 應用場景🖼 數據樣本展示使用建議🌟 數據集特色&am…

LeetCode 刷題【36. 有效的數獨】

36. 有效的數獨 自己做 解&#xff1a;多層for class Solution { public:bool isValidSudoku(vector<vector<char>>& board) {int hight board.size(); //長if (hight 0)return true;int wide board[0].size(); //寬//判斷一行是否出現重復bool…

Java 日志從入門到精通:告別日志混亂

作為一名 Java 開發者&#xff0c;你是否曾在生產環境故障排查時面對過這樣的困境&#xff1a;系統報錯卻找不到關鍵日志&#xff0c;日志文件大到無法打開&#xff0c;或者日志內容雜亂無章根本無法定位問題&#xff1f;日志作為系統運行的 “黑匣子”&#xff0c;其重要性不言…

系統開發 Day1

前端開發 目的&#xff1a; 開發一個平臺&#xff08;網站&#xff09; - 前端開發&#xff1a;HTML CSS JavaScript - web框架&#xff1a;接受請求和處理 - MySQL數據庫&#xff1a;存儲數據的地方快速上手&#xff1a;基于Flask Web框架快速搭建一個網站 深度學習&#xff…

機器視覺任務(目標檢測、實例分割、姿態估計、多目標跟蹤、單目標跟蹤、圖像分類、單目深度估計)常用算法及公開數據集分享

本文按目標檢測、實例分割、姿態估計、多目標跟蹤、單目標跟蹤、圖像分類、單目深度估計七個任務分類&#xff0c;融合數據集介紹、評價指標及推薦算法&#xff0c;方便查閱&#xff1a; 一、目標檢測 目標檢測任務需定位圖像中目標的邊界框&#xff08;bounding box&#xff0…

MongoTemplate中setOnInsert與set方法的深度解析

MongoTemplate中setOnInsert與set方法的深度解析 在Spring Data MongoDB的MongoTemplate中&#xff0c;setOnInsert和set方法都是在更新文檔時使用的&#xff0c;但它們在處理upsert操作&#xff08;即&#xff0c;如果文檔不存在則插入&#xff0c;存在則更新&#xff09;時扮…

利用OJ判題的多語言優雅解耦方法深入體會模板方法模式、策略模式、工廠模式的妙用

在線評測系統&#xff08;Online Judge, OJ&#xff09;的核心是判題引擎&#xff0c;其關鍵挑戰在于如何高效、安全且可擴展地支持多種編程語言。在博主的項目練習過程中&#xff0c;借鑒了相關設計模式實現一種架構設計方案&#xff0c;即通過組合運用模板方法、策略、工廠等…

[FOC電機控制]霍爾傳感器于角度問題

如果電機有1對極(p1&#xff0c;那么每旋轉一圈的機械角度&#xff0c;電氣角度會轉動一圈&#xff08;360&#xff09;。如果電機有2對極(p2&#xff0c;那么每旋轉一圈的機械角度&#xff0c;電氣角度會轉動兩圈&#xff08;720&#xff09;。

阿里云 Flink

阿里云 Flink 是阿里云基于Apache Flink打造的企業級實時計算平臺&#xff0c;旨在為用戶提供高效、穩定、易用的流處理與批處理能力&#xff0c;幫助企業快速構建實時數據處理鏈路&#xff0c;支撐實時業務決策。核心特性流批一體計算繼承 Apache Flink “流批一體” 的核心優…

企業級高性能web服務器

1 web服務基礎 1.1 正常情況的單次web服務訪問流程&#xff1a; 正常情況下&#xff0c;單次 Web 服務訪問流程從用戶在客戶端發起請求開始&#xff0c;到最終在客戶端展示內容結束&#xff0c;涉及客戶端、網絡傳輸、服務器端等多個環節&#xff0c;以下是詳細過程&#xff…

免費PDF編輯軟件 pdf24-creator 及其安裝包

最近發現了一款還算是不錯的PDF編輯和閱讀軟件 pdf24-creator&#xff0c;官方下載網站為&#xff1a;https://tools.pdf24.org/zh/creator&#xff0c;但是官方下載如果沒有魔法的話&#xff0c;下載速度很慢&#xff0c;比百度網盤下載還滿&#xff0c;因此我把它分享到網盤。…

openvela之ADB

ADB&#xff08;Android Debug Bridge&#xff09;是一款功能豐富的命令行工具&#xff0c;旨在實現開發工作站與設備&#xff08;如模擬器、實體設備&#xff09;之間的通信。通過 ADB&#xff0c;開發者可以便捷地在設備上執行命令、傳輸文件、調試應用等。本文將詳細介紹 AD…

如何控制需求交付節奏

有效控制需求的交付節奏&#xff0c;其核心在于將產品開發過程從一個不可預測的、時快時慢的混亂狀態&#xff0c;轉變為一套產出穩定、流程順暢、步調可持續的系統化交付機制。要成功構建這套機制&#xff0c;實現有節奏的價值交付&#xff0c;必須綜合運用五大關鍵策略&#…

匯編中常用寄存器介紹

X86-32位寄存器 4個數據寄存器&#xff1a;EAX、EBX、ECX和EDX; 2個變址和指針寄存器&#xff1a;ESI和EDI; 2個指針寄存器&#xff1a;ESP和EBP; 1個指令指針寄存器&#xff1a;EIP; 6個段寄存器&#xff1a;ES、CS、SS、DS、FS和GS; 1個標志寄存器&#xff1a;EFlags。 在X8…

SOMGAN:用自組織映射改善GAN的模式探索能力

論文信息 論文題目:Improving mode exploring capability ofgenerative adversarial nets by self-organizing map(利用自組織映射提高生成對抗網絡的模式探索能力) 期刊:Neurocomputing 摘要:生成對抗網絡(GANs)的出現將生成模型的研究推向了一個新的高潮。支持這一進步…

《匯編語言:基于X86處理器》第12章 復習題和練習

本篇記錄了《匯編語言&#xff1a;基于X86處理器》第12章 復習題和練習的筆記。12.6復習題和練習12.6.1 簡答題1.假設有二進制浮點數1101.01101&#xff0c;如何將其表示為十進制分數之和?答&#xff1a;1101.01101(1x)(1x)(0x)(1x)(0x)(1x)(1x)(1x)(1x) 13.406252.為什么十進…

ApacheCon Asia 2025 中國開源年度報告:Apache Doris 國內第一

上周剛落下帷幕的 ApacheCon Asia 2025 中&#xff0c;一個數據讓所有人都為之震撼&#xff1a;全球 Apache 基金會項目 OpenRank 排行榜中&#xff0c;Apache Doris 位居第二&#xff0c;在中國 Apache 項目中更是穩居第一。 這個排名意味著什么&#xff1f;在 Apache 基金會管…

Pytest中實現自動生成測試用例腳本代碼

&#x1f345; 點擊文末小卡片&#xff0c;免費獲取軟件測試全套資料&#xff0c;資料在手&#xff0c;漲薪更快在Python的測試框架中&#xff0c;我們通常會針對某個系統進行測試用例的維護&#xff0c;在對龐大系統進行用例維護時&#xff0c;往往會發現很多測試用例是差不多…