【Linux】重生之從零開始學習運維之主從MGR高可用

MGR集群部署

12、15、18主機環境準備

ssh免密碼登錄

\rm -rf .ssh/*
ssh-keygen
ssh-copy-id 127.1
scp -r .ssh 10.0.0.12:/root/
ssh root@10.0.0.12

還原基礎環境

systemctl stop mysqld
\rm -rf /var/lib/mysql/*
id mysql

vim /etc/my.cnf.d/mysql-server.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
log-error=/var/log/mysql/mysqld.log
pid-file=/run/mysqld/mysqld.pid

初始化mysql

mysqld --initialize-insecure --user=mysql --basedir=/usr --datadir=/var/lib/mysql
systemctl start mysqld

設定用戶認證策略

mysql -e "ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';"

配置文件環境

12主機

生成uuid
uuidgen

定制配置文件
cat >> /etc/my.cnf.d/mysql-server.cnf <<- eof
# 為了版本兼容性,更改默認的用戶認證插件
default_authentication_plugin=mysql_native_password
# 設置MySQL插件目錄:MGR基于插件,必須設置插件路徑
plugin_dir=/usr/lib64/mysql/plugin
# 復制框架
server_id=12
# 開啟binlog的GTID模式(MGR強制要求)
gtid_mode=ON
# 開啟后MySQL只允許能夠保障事務安全,并且能夠被日志記錄的SQL語句被執行
enforce_gtid_consistency=ON
# 關閉binlog校驗(MGR強制要求)
binlog_checksum=NONE
log_bin=binlog
log_slave_updates=ON
binlog_format=ROW
master_info_repository=TABLE
relay_log_info_repository=TABLE# 組復制設置
# server必須為每個事務收集寫集合,并使用XXHASH64哈希算法將其編碼為散列
transaction_write_set_extraction=XXHASH64
# 啟用組復制模塊
plugin_load_add='group_replication.so'
# 告知插件加入或創建組命名,UUID
group_replication_group_name="14b78170-6fff-43a9-bf74-ea40051ac164"
# server啟動時不自啟組復制,為了避免每次啟動自動引導具有相同名稱的第二個組,所以設置為OFF。
group_replication_start_on_boot=off
# 告訴插件使用IP地址,端口33061用于接收組中其他成員轉入連接
# 注意:此處可以使用ip地址,也可以使用主機名方式
group_replication_local_address="10.0.0.12:33061"
# 啟動組server,種子server,加入組應該連接這些的ip和端口;其他server要加入組得由組成員同意
# 注意:此處可以使用ip地址,也可以使用主機名方式
group_replication_group_seeds="10.0.0.12:33061,10.0.0.15:33061,10.0.0.18:33061"
# 配置此服務器為引導組,這個選項必須僅在一臺服務器上設置,
# 并且僅當第一次啟動組或者重新啟動整個組時。成功引導組啟動后,將此選項設置為關閉。
group_replication_bootstrap_group=off
# 指定當前節點向集群其他成員報告的自身的主機名或 IP 地址,用于成員間通信和連接
# 這是保證集群成員間正確通信的基礎配置。
report_host=10.0.0.12
report_port=3306
eof

啟動服務
systemctl restart mysqld
ss -tunlp | grep mys

?15主機

定制配置文件
cat >> /etc/my.cnf.d/mysql-server.cnf <<- eof
# 為了版本兼容性,更改默認的用戶認證插件
default_authentication_plugin=mysql_native_password
plugin_dir=/usr/lib64/mysql/plugin
# 復制框架
server_id=15
gtid_mode=ON
enforce_gtid_consistency=ON
binlog_checksum=NONE
log_bin=binlog
log_slave_updates=ON
binlog_format=ROW
master_info_repository=TABLE
relay_log_info_repository=TABLE# 組復制設置
transaction_write_set_extraction=XXHASH64
plugin_load_add='group_replication.so'
group_replication_group_name="14b78170-6fff-43a9-bf74-ea40051ac164"
group_replication_start_on_boot=off
group_replication_local_address="10.0.0.15:33061"
group_replication_group_seeds="10.0.0.12:33061,10.0.0.15:33061,10.0.0.18:33061"
group_replication_bootstrap_group=off
report_host=10.0.0.15
report_port=3306
eof

啟動服務

18主機

定制配置文件
cat >> /etc/my.cnf.d/mysql-server.cnf <<- eof
# 為了版本兼容性,更改默認的用戶認證插件
default_authentication_plugin=mysql_native_password
plugin_dir=/usr/lib64/mysql/plugin 
# 復制框架
server_id=18
gtid_mode=ON
enforce_gtid_consistency=ON
binlog_checksum=NONE
log_bin=binlog
log_slave_updates=ON
binlog_format=ROW
master_info_repository=TABLE
relay_log_info_repository=TABLE# 組復制設置
transaction_write_set_extraction=XXHASH64
plugin_load_add='group_replication.so'
group_replication_group_name="14b78170-6fff-43a9-bf74-ea40051ac164"
group_replication_start_on_boot=off
group_replication_local_address="10.0.0.18:33061"
group_replication_group_seeds="10.0.0.12:33061,10.0.0.15:33061,10.0.0.18:33061"
group_replication_bootstrap_group=off
report_host=10.0.0.18
report_port=3306
eof

啟動服務

集群認證配置

12主機設定腳本

cat > cluster_auth_init.sql <<-eof
# 如下操作不記錄二進制日志
SET SQL_LOG_BIN=0;
# 創建rpl_user賬戶,此賬戶用于實現主從數據同步
CREATE USER rpl_user@'%' IDENTIFIED BY '123456';
GRANT REPLICATION SLAVE ON *.* TO rpl_user@'%';
GRANT CONNECTION_ADMIN ON *.* TO rpl_user@'%';
GRANT BACKUP_ADMIN ON *.* TO rpl_user@'%';
GRANT GROUP_REPLICATION_STREAM ON *.* TO rpl_user@'%';
# 創建一個遠程連接用戶,便于圖形化管理工具使用
create user 'remote'@'%' identified with mysql_native_password by '123456';
grant all privileges on *.* to remote@'%';
FLUSH PRIVILEGES;
# 恢復二進制日志功能并且重置二進制日志
SET SQL_LOG_BIN=1;
RESET MASTER;
eof

執行腳本
mysql -uroot -p'123456' < cluster_auth_init.sql

15主機設定腳本

cat > cluster_auth_init.sql <<-eof
SET SQL_LOG_BIN=0;
CREATE USER rpl_user@'%' IDENTIFIED BY '123456';
GRANT REPLICATION SLAVE ON *.* TO rpl_user@'%';
GRANT CONNECTION_ADMIN ON *.* TO rpl_user@'%';
GRANT BACKUP_ADMIN ON *.* TO rpl_user@'%';
GRANT GROUP_REPLICATION_STREAM ON *.* TO rpl_user@'%';
create user 'remote'@'%' identified with mysql_native_password by '123456';
grant all privileges on *.* to remote@'%';
FLUSH PRIVILEGES;
SET SQL_LOG_BIN=1;
RESET MASTER;
eof

執行腳本
mysql -uroot -p'123456' < cluster_auth_init.sql

18主機設定腳本

cat > cluster_auth_init.sql <<-eof
> SET SQL_LOG_BIN=0;
> CREATE USER rpl_user@'%' IDENTIFIED BY '123456';
> GRANT REPLICATION SLAVE ON *.* TO rpl_user@'%';
> GRANT CONNECTION_ADMIN ON *.* TO rpl_user@'%';
> GRANT BACKUP_ADMIN ON *.* TO rpl_user@'%';
> GRANT GROUP_REPLICATION_STREAM ON *.* TO rpl_user@'%';
> create user'remote'@'%' identified with mysql_native_password by '123456';
> grant all privileges on *.* to remote@'%';
> FLUSH PRIVILEGES;
> SET SQL_LOG_BIN=1;
> RESET MASTER;
> eof

執行腳本
mysql -uroot -p'123456' < cluster_auth_init.sql

查看集群插件

12主機

mysql -uroot -p'123456' -e "show plugins;"

15主機

mysql -uroot -p'123456' -e "show plugins;"

18主機

mysql -uroot -p'123456' -e "show plugins;"

啟動集群環境

SET GLOBAL group_replication_bootstrap_group=ON;
START GROUP_REPLICATION USER='rpl_user', PASSWORD='123456';
SET GLOBAL group_replication_bootstrap_group=OFF;

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

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

相關文章

如何在虛擬機(Linux)安裝Qt5.15.2

1.進入到阿里的網站下載在線安裝包 qt-official_releases-online_installers安裝包下載_開源鏡像站-阿里云 https://mirrors.aliyun.com/qt/official_releases/online_installers/?spma2c6h.13651104.d-5201.2.60ad4773ZZNPNm 2.下載完畢后&#xff0c;進入到下載地址&…

【運維進階】DHCP服務配置和DNS域名解析

DHCP服務配置和DNS域名解析 DHCP 服務介紹 在大型網絡中&#xff0c;系統靜態分配IP地址面臨問題&#xff1a; 確保不要同時在多個系統上使用同一個地址。部署新系統通常需要手動分配其IP地址。在云環境中&#xff0c;實例的網絡是自動化配置的。 動態主機配置協議&#xff08;…

VisionPro MR環境下虛擬物體與現實的透明度混合

display.rgb (virtualcontent.rgb*1)(passthrough.rgb*(1 - vistualcontent.a) viirtualcontent預乘過a值了&#xff0c;跟透明度混合公式一致 人頭檢測挖孔不清晰問題&#xff0c;這個a值變成設備層動態檢測人頭的a值&#xff0c;當面前的渲染壓力過大時&#xff0c;會導致…

css怪異模式(Quirks Mode)和標準模式(Standards Mode)最明顯的區別

文章目錄css怪異模式&#xff08;Quirks Mode&#xff09;和標準模式&#xff08;Standards Mode&#xff09;最明顯的區別詳細對比示例對比&#xff08;盒模型&#xff09;標準模式&#xff08;Standards Mode&#xff09;怪異模式&#xff08;Quirks Mode&#xff09;如何觸發…

一種簡單的3dnr去噪算法介紹

一段未經過插補的視頻圖像可以分解為若干幀&#xff0c;為了能正確地找到并去除圖像幀中的噪聲污染&#xff0c;由于視頻圖像各幀的連續性&#xff0c;在去噪的過程中就必須考慮幀圖像的空間性和時間性&#xff0c;一個簡單的例子&#xff0c;在去噪算法中就必須考慮&#xff0…

【數據結構初階】--排序(四):歸并排序

&#x1f525;個人主頁&#xff1a;草莓熊Lotso &#x1f3ac;作者簡介&#xff1a;C研發方向學習者 &#x1f4d6;個人專欄&#xff1a; 《C語言》 《數據結構與算法》《C語言刷題集》《Leetcode刷題指南》 ??人生格言&#xff1a;生活是默默的堅持&#xff0c;毅力是永久的…

GaussDB 并行創建索引

1 背景當業務數據在單表存儲達到一定的數量級時&#xff0c;此時對表創建索引是要花費時間的。GaussDB為了解決這個問題采用并行創建索引技術&#xff0c;以提高創建索引的效率。2 示例步驟1&#xff1a;根據實際情況調整maintenance_work_mem參數該大小。[Rubydtest1 ~]$ gsq…

LOOP Finance:一場 Web3 共和國中的金融制度實驗

LOOP Finance 是建構于幣安智能鏈&#xff08;BNB Chain&#xff09;上的定投型DEFI理財協議。 它以凱因斯經濟學為啟發&#xff0c;設計出一套長期、安全、穩定收益的全新DEFI玩法&#xff0c;兼顧穩健利息回報與DEFI高速成長的潛力。 通過生態機制&#xff0c;LOOP要求每位參…

【golang面試題】Golang遞歸函數完全指南:從入門到性能優化

引言&#xff1a;遞歸的本質與挑戰 在Golang中&#xff0c;遞歸函數是一把鋒利的雙刃劍。它通過函數自身調用實現問題分解&#xff0c;讓代碼變得簡潔優雅&#xff0c;但也容易因無限遞歸、棧溢出或性能問題讓開發者陷入困境。本文將從基礎到高級&#xff0c;全面解析Golang遞歸…

功能安全和網絡安全的綜合保障流程

摘要網絡物理系統是控制機械部件的計算機化系統。這些系統必須既功能安全又網絡安全。因此&#xff0c;已建立的功能安全與網絡安全標準需求創建網絡安全檔案&#xff08;ACs&#xff09;&#xff0c;以論證系統是功能安全與網絡安全的&#xff0c;即所有功能安全與網絡安全目標…

數據科學首戰:用機器學習預測世界杯冠軍

數據科學首戰&#xff1a;用機器學習預測世界杯冠軍Scikit-learn實戰&#xff1a;從數據清洗到冠軍預測的完整指南一、足球預測&#xff1a;數據科學的終極挑戰??世界杯數據價值??&#xff1a;歷史比賽數據&#xff1a;44,000場球隊特征指標&#xff1a;200球員數據點&…

一個php 連sqlserver 目標計算機積極拒絕,無法連接問題的解決

一個接口查詢數據耗時15秒&#xff0c;還沒數據&#xff0c;經查報錯日志&#xff1a;SQLSTATE[08001]: [Microsoft][ODBC Driver 17 for SQL Server]TCP 提供程序: 由于目標計算機積極拒絕&#xff0c;無法連接。 命令行執行&#xff1a;netstat -ano | findstr :1433發現結…

生成網站sitemap.xml地圖教程

要生成 sitemap.xml 文件&#xff0c;需要通過爬蟲程序抓取網站的所有有效鏈接。以下是完整的解決方案&#xff1a; 步驟 1&#xff1a;安裝必要的 Python 庫 ounter(line pip install requests beautifulsoup4 lxml 步驟 2&#xff1a;創建 Python 爬蟲腳本 (sitemap_genera…

idea拉取新項目第一次啟動報內存溢出(java.lang.OutOfMemoryError: Java heap space)

背景&#xff1a; 新拉取一個項目后&#xff0c;第一次啟動的時候報錯內存溢出&#xff1a; Java 堆內存溢出 (java.lang.OutOfMemoryError: Java heap space) 這個錯誤表示你的 Java 應用程序需要的內存超過了 JVM 堆內存的分配上限。 解決方案 1.增加堆內存大小 啟動應用時添…

安卓雷電模擬器安裝frida調試

1.在模擬器中設置調試root和adb 2.在vscode中安裝autox.js 3.在github上下載auto.js組件 新地址鏈接看來大佬的項目也經歷了波折https://blog.csdn.net/weixin_41961749/article/details/145669531 github地址https://github.com/aiselp/AutoX/releases 將下載的apk放入雷電…

Godot ------ 初級人物血條制作02

Godot ------ 初級人物血條制作02引言正文血條動態顯示引言 在 Godot ------ 初級人物血條制作01 一文中我們介紹了如何構建一個初級血條&#xff0c;但是我們并沒有涉及如何動態顯示血條。本文我們將介紹如何動態顯示血條。 正文 血條動態顯示 首先&#xff0c;我們為當前…

(Python)待辦事項升級網頁版(html)(Python項目)

源代碼&#xff1a; app.py from flask import Flask, render_template, request, redirect, url_for, jsonify import json import osapp Flask(__name__)# 數據存儲文件 DATA_FILE "todos.json"def load_todos():"""從文件加載待辦事項"&q…

智慧養老破局:科技如何讓“老有所養”變成“老有優養”?

隨著人口老齡化加劇&#xff0c;“養老”成了社會關注的焦點。傳統養老往往停留在“有地方住、有人照顧”的基礎需求&#xff0c;而智慧養老則通過科技與人文的結合&#xff0c;讓老年人的生活從“老有所養”升級到“老有優養”。不僅活得安心&#xff0c;更能活得有尊嚴、有質…

自學嵌入式 day45 ARM體系架構

一、SOCRAM&#xff1a;隨機訪問存儲器&#xff0c;存放隨機變量&#xff0c;掉電數據丟失ROM&#xff1a;只讀存儲器&#xff0c;存放單片機的程序、指令&#xff0c;掉電數據不丟失注&#xff1a;1、馮諾依曼架構中將數據與指令存放在同一存儲器中2、哈佛架構是將數據與指令存…

HTML應用指南:利用GET請求獲取全國OPPO官方授權體驗店門店位置信息

本篇文章將利用GET請求從OPPO官方網站或公開接口中獲取官方授權體驗店的分布信息&#xff0c;并通過Python編程語言中的requests庫來實現HTTP請求&#xff0c;從而提取詳細的門店位置數據。隨著OPPO品牌的發展和市場布局的擴展&#xff0c;其官方授權體驗店已經遍布全國各大城市…