linux搭建mysql主從復制(一主一從)

目錄

0、環境部署

1、主服務器配置

1.1? 修改mysql配置文件

1.2? 重啟mysql

1.3? 為從服務器授權

1.4? 查看二進制日志坐標

2、從服務器配置

2.1? 修改mysql配置文件

2.2? 重啟mysql

2.3? 配置主從同步

2.4? 開啟主從復制

3、驗證主從復制

3.1? 主服務器上創建test_db

3.2? 從服務器上查看test_db

4、報錯解決

Slave_IO_Running:?No

Slave_IO_Running: Connecting

補充


0、環境部署

設備操作系統?IP地址mysql版本
master主服務器openEuler release 22.03 (LTS-SP2)192.168.48.1318.0.37 for Linux on x86_64 (Source distribution)
slave從服務器openEuler release 22.03 (LTS-SP2)192.168.48.1328.0.37 for Linux on x86_64 (Source distribution)

注:openEuler release 22.03 (LTS-SP2)的內核為?Linux 5.10.0-153.12.0.92.oe2203sp2.x86_64

#下載mysql
yum install -y mysql-server
#防火墻放行mysql3306端口(防火墻沒開忽略此操作)
firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --reload
firewall-cmd --zone=public --list-ports | grep 3306
#關閉selinux
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
reboot
#啟動mysql
systemctl start mysqld
#檢查mysql是否成功啟動
ps -ef | grep mysql
#設置mysql開機自啟
systemctl enable mysqld
#登錄mysql
mysql -uroot -p

該版本mysql首次登錄密碼為空,直接回車即可

1、主服務器配置

1.1? 修改mysql配置文件

vim /etc/my.sql

server-id=1#必選項
read-only=0
binlog_format=MIXED
log-slave-updates=true
log-bin=mysql-bin#不添加此項默認為binlog.0000x格式

1.2? 重啟mysql

systemctl restart mysqld

1.3? 為從服務器授權

mysql -uroot -p
#創建elysia用戶,允許登錄遠程主機IP為192.168.48.132,密碼為elysia@123
CREATE USER 'elysia'@'192.168.48.132' IDENTIFIED WITH mysql_native_password BY 'elysia@123';
#為elysia用戶授予所有權限,包括了replication slave權限
GRANT ALL PRIVILEGES ON *.* TO 'elysia'@'192.168.48.132';
#刷新權限
flush privileges;

1.4? 查看二進制日志坐標

show master status\G;

當前使用的二進制文件的名字為:mysql-bin.000001?

當前偏移量為:2405

2、從服務器配置

2.1? 修改mysql配置文件

echo server-id=2 >> /etc/my.cnf

從服務器server-id不能與主服務器一樣

2.2? 重啟mysql

systemctl restart mysqld

2.3? 配置主從同步

mysql -u root -p
change master to master_host='192.168.48.131',#主服務器IP
master_user='elysia',#用于復制的用戶,必須有replication slave權限
master_password='elysia@123',#用于復制用戶的密碼
master_log_file='mysql-bin.000001',#當前使用的二進制日志文件binlog
master_log_pos=2405;#binlog的位置

2.4? 開啟主從復制

start slave;
#查看當前主從復制狀態
show slave status\G;

出現雙yes即可

3、驗證主從復制

3.1? 主服務器上創建test_db

#創建一個test_db數據庫
create database test_db;
#創建一個dept表
use test_db;
create table dept (dept1 int ,dept_name varchar(11)) charset=utf8;
#插入數據
insert into dept values
(101,'財務'),
(102,'銷售'),
(103,'IT技術'),
(104,'行政');

3.2? 從服務器上查看test_db

#查看當前數據庫; 
show databases;
#查看表的內容;
select * from test_db.dept;

從服務器上出現test_db,并且成功查詢,主從復制搭建成功

4、報錯解決

Slave_IO_Running:?No

查看 Last_IO_Error?

報錯原因:

二進制文件位置坐標錯誤

解決:將master_log_pos改為正確位置即可

其他可能錯誤:

  • 從服務器mysql遠程連接主服務器失敗;
  • 兩臺虛擬機uuid或者mac地址重復(可能你的兩臺虛擬機由同一臺克隆而來);

Slave_IO_Running: Connecting

查看 Last_IO_Error?

?報錯原因:這個錯誤表明連接到MySQL數據庫時,使用了caching_sha2_password身份驗證插件,但是要求進行安全連接。也就是,你在從服務器mysql上使用了以下格式的命令創建了從服務器的登錄用戶

CREATE USER 'elysia'@'192.168.48.132' IDENTIFIED BY 'elysia@123';

解決方法:

ALTER USER 'elysia'@'192.168.48.132' IDENTIFIED WITH mysql_native_password BY 'elysia@123';

補充

CREATE USER 'elysia'@'192.168.48.132' IDENTIFIED BY 'elysia@123';

CREATE USER 'elysia'@'192.168.48.132' IDENTIFIED WITH mysql_native_password BY 'elysia@123';

的區別:

這兩個 SQL 語句的區別在于用戶的身份驗證機制。

  • 1. `CREATE USER 'elysia'@'192.168.48.132' IDENTIFIED BY 'elysia@123';`:?這條語句創建了一個名為 'elysia' 的用戶,該用戶可以從 IP 地址為 '192.168.48.132' 的主機連接到 MySQL 數據庫。通過 `IDENTIFIED BY 'elysia@123'` 指定了用戶的密碼。這種方式使用的身份驗證插件是默認的 `caching_sha2_password`,這是 MySQL 8.0 版本及以上的默認身份驗證插件。
  • 2. `CREATE USER 'elysia'@'192.168.48.132' IDENTIFIED WITH mysql_native_password BY 'elysia@123';`:這條語句也創建了一個名為 'elysia' 的用戶,同樣可以從 IP 地址為 '192.168.48.132' 的主機連接到 MySQL 數據庫。不同之處在于,通過 `IDENTIFIED WITH mysql_native_password` 指定了用戶要使用的身份驗證插件,即 `mysql_native_password`。這是舊版本 MySQL 使用的默認身份驗證插件,它在 MySQL 8.0 版本中被 `caching_sha2_password` 替代。

因此,這兩個語句的主要區別在于用戶的身份驗證機制。如果你的 MySQL 數據庫版本是 MySQL 8.0 及以上,推薦使用第一個語句,因為它使用了更安全的默認身份驗證插件。如果你需要與舊版本的 MySQL 數據庫兼容,可以使用第二個語句指定使用 `mysql_native_password` 身份驗證插件。

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

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

相關文章

微服務拆分流程 (黑馬商城拆分商品服務)

1. 創建新module - maven模塊,并引入依賴(可以復制 把不需要的依賴刪掉 ) 2. 新建包com.hmall.xx(業務名),添加和修改啟動類,新建mapper包、domain包 - service包 - controller包 3. 拷貝并修…

4款良心軟件,免費又實用,內存滿了都舍不得卸載

以下幾款高質量軟件,若是不曾體驗,實在是遺憾可惜。 PDF Guru 這是一款開源免費的PDF編輯軟件,打開之后功能一目了然。 可以拆分、合并PDF,也可以給PDF添加水印和密碼,同時也可以去除別人PDF里的水印或密碼&#xff0…

HouseCrafter:平面草稿至3D室內場景的革新之旅

在室內設計、房地產展示和影視布景設計等領域,將平面草稿圖快速轉換為立體的3D場景一直是一個迫切的需求。HouseCrafter,一個創新的AI室內設計方案,正致力于解決這一挑戰。本文將探索HouseCrafter如何將這一過程自動化并提升至新的高度。 一、定位:AI室內設計的革新者 Ho…

Scala之OOP講解

Scala OOP 前序 Scala 為純粹OOP1、不支持基本類型:一切皆為對象 Byte,Int,...2、不支持靜態關鍵字:static 3、支持類型推斷【通過判斷泛型的父子關系來確定泛型類的父子關系>協變,逆變,不變】和類型預定, 動靜…

【iOS】類對象的結構分析

目錄 對象的分類object_getClass和class方法isa流程和繼承鏈分析isa流程實例驗證類的繼承鏈實例驗證 類的結構cache_t結構bits分析實例驗證屬性properties方法methods協議protocolsro類方法 類結構流程圖解 對象的分類 OC中的對象主要可以分為3種:實例對象&#xf…

【React】JSX基礎

一、簡介 JSX是JavaScript XML的縮寫,它是一種在JavaScript代碼中編寫類似HTML模板的結構的方法。JSX是React框架中構建用戶界面(UI)的核心方式之一。 1.什么是JSX JSX允許開發者使用類似HTML的聲明式模板來構建組件。它結合了HTML的直觀性…

TDesign組件庫日常應用的一些注意事項

【前言】Element(餓了么開源組件庫)在國內使用的普及率和覆蓋率高于TDesign-vue(騰訊開源組件庫),這也導致日常開發遇到組件使用上的疑惑時,網上幾乎搜索不到其文章解決方案,只能深挖官方文檔或…

2024.7.17 ABAP面試題目總結

2024.7.17 用的SAP什么平臺,S4/HANA嗎,有用過ECC嗎 S4/HANA,沒用過ECC 會不會CDS VIEW 不會 會不會FIORI 不會 銀企直連里面的邏輯了解不 不了解,做過,但是只能算很簡單的修改 SAP做增強,如何創建…

網絡安全-網絡安全及其防護措施7

31.防病毒和惡意軟件保護 防病毒和惡意軟件防護的定義和作用 防病毒和惡意軟件防護是一種保護計算機和網絡免受病毒、木馬、間諜軟件等惡意軟件侵害的安全措施。通過防護措施,可以檢測、阻止和清除惡意軟件,確保系統和數據的安全。其主要作用包括&…

C++右值引用和移動語義

目錄 概念: 左值引用和右值引用 概念: 注意: 左值引用的意義 作函數參數 函數引用返回 右值引用的意義 誕生背景 移動構造 移動賦值 其他應用 萬能引用和完美轉發 默認的移動構造和移動賦值 概念: 左值:顧…

List數據的幾種數據輸出方式

一、問題引入 在Java中&#xff0c;查詢List集合是一項常見的任務&#xff0c;它可以通過多種方式實現&#xff0c;以滿足不同的需求。下面&#xff0c;List數據的幾種數據輸出方式。 二、實例 /*** 查詢所有用戶信息* return*/ List<User> getAllUser(); <select…

Git【撤銷遠程提交記錄】

在實際開發中&#xff0c;你是否遇到過錯誤的提交了代碼&#xff0c;想要刪掉本次提交記錄的情況&#xff0c;你可以按照如下方法實現。 1、使用 git revert 如果你想要保留歷史記錄&#xff0c;并且對遠程倉庫其他使用者的影響最小&#xff0c;你可以使用 git revert 命令。這…

conda 使用

首先要安裝Miniconda的環境 下面是一下命令關于如何使用conda 查看當前環境列表&#xff1a; conda env list 創建環境不指定路徑&#xff1a; conda create --name p38 python3.8 創建新環境并指定路徑&#xff1a; conda create --prefix /data/p38 python3.8激活新環境&a…

VulnHub:CK00

靶場搭建 靶機下載地址&#xff1a;CK: 00 ~ VulnHub 下載后&#xff0c;在vmware中打開靶機。 修改網絡配置為NAT 處理器修改為2 啟動靶機 靶機ip掃描不到的解決辦法 靶機開機時一直按shift或者esc直到進入GRUB界面。 按e進入編輯模式&#xff0c;找到ro&#xff0c;修…

Kubernetes網絡性能測試-calico插件環境

Kubernetes 網絡性能測試-calico插件環境 本次主要針對calico網絡插件k8s集群的網絡性能進行摸底及測試方法探索實踐。 1. 測試準備 1.1 測試環境 測試環境為VMware Workstation虛擬機搭建的一套K8S環境&#xff0c;版本為1.28.2&#xff0c;網絡插件使用calico&#xff0c…

6Python的Pandas:數據讀取與輸出

Pandas是一個強大的Python數據分析庫&#xff0c;提供了讀取和輸出數據的多種功能。以下是一些常見的數據讀取與輸出方法&#xff1a; 1. 讀取CSV 讀取數據 從CSV文件讀取數據 import pandas as pd# 讀取CSV文件 df pd.read_csv(file_path.csv) print(df.head())從Excel文…

Flutter 狀態管理調研總結

一, 候選狀態管理組件簡介 0. flutter_hooks 一個 React 鉤子在 Flutter 上的實現&#xff1a;Making Sense of React Hooks 鉤子是一種用來管理 Widget 生命周期的新對象&#xff0c;以減少重復代碼、增加組件間復用性&#xff0c;允許將視圖邏輯提取到通用的用例中并重用&…

思路|如何利用oneNote釣魚?

本文僅用于技術研究學習&#xff0c;請遵守相關法律&#xff0c;禁止使用本文所提及的相關技術開展非法攻擊行為&#xff0c;由于傳播、利用本文所提供的信息而造成任何不良后果及損失&#xff0c;與本賬號及作者無關。 本文來源無問社區&#xff0c;更多實戰內容&#xff0c;…

[python]pycharm設置清華源

國內鏡像源有以下幾個&#xff0c;因為都是國內的&#xff0c;基本速度差不了太多。 清華&#xff1a;https://pypi.tuna.tsinghua.edu.cn/simple 阿里云&#xff1a;http://mirrors.aliyun.com/pypi/simple/ 中國科技大學 https://pypi.mirrors.ustc.edu.cn/simple/ 豆瓣&…

針對【module_or_function】的單元測試,全面覆蓋可能的【edge_cases】

針對【module_or_function】的單元測試&#xff0c;全面覆蓋可能的【edge_cases】 編寫單元測試是為了驗證代碼模塊或函數的正確性和魯棒性。對于module_or_function&#xff0c;首先需要確定這個模塊或函數的具體功能和預期輸入范圍。一個好的單元測試應該包括以下幾個步驟&a…