国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

用幾張圖實戰(zhàn)講解MySQL主從復(fù)制

這篇具有很好參考價值的文章主要介紹了用幾張圖實戰(zhàn)講解MySQL主從復(fù)制。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

本文分享自華為云社區(qū)《結(jié)合實戰(zhàn),我為MySQL主從復(fù)制總結(jié)了幾張圖!》,作者: 冰 河。

MySQL官方文檔

MySQL 主從復(fù)制官方文檔鏈接地址如下所示:

http://dev.mysql.com/doc/refman/8.0/en/replication.html

MySQL 主從復(fù)制方式

MySQL5.6 開始主從復(fù)制有兩種方式:基于日志(binlog)、基于 GTID(全局事務(wù)標示符)。 這里,我們主要講基于日志(binlog)的復(fù)制。 關(guān)于GTID的主從復(fù)制,我們后面再詳細討論。

MySQL主從復(fù)制原理

MySQL主從復(fù)制原理,也稱為A/B原理。

(1) Master 將數(shù)據(jù)改變記錄到二進制日志(binary log)中,也就是配置文件 log-bin 指定的文件, 這些記錄叫做二進制日志事件(binary log events);

(2) Slave 通過 I/O 線程讀取 Master 中的 binary log events 并寫入到它的中繼日志(relay log);

(3) Slave 重做中繼日志中的事件,把中繼日志中的事件信息一條一條的在本地執(zhí)行一次,完 成數(shù)據(jù)在本地的存儲,從而實現(xiàn)將改變反映到它自己的數(shù)據(jù)(數(shù)據(jù)重放)。

主從配置注意事項

(1)主從服務(wù)器操作系統(tǒng)版本和位數(shù)一致;

(2) Master 和 Slave 數(shù)據(jù)庫的版本要一致;

(3) Master 和 Slave 數(shù)據(jù)庫中的數(shù)據(jù)要一致;

(4) Master 開啟二進制日志,Master 和 Slave 的 server_id 在局域網(wǎng)內(nèi)必須唯一;

主從配置的簡要步驟

1、Master 上的配置

(1) 安裝數(shù)據(jù)庫;

(2) 修改數(shù)據(jù)庫配置文件,指明 server_id,開啟二進制日志(log-bin);

(3) 啟動數(shù)據(jù)庫,查看當(dāng)前是哪個日志,position 號是多少;

(4) 登錄數(shù)據(jù)庫,授權(quán)數(shù)據(jù)復(fù)制用戶(IP 地址為從機 IP 地址,如果是雙向主從,這里的 還需要授權(quán)本機的 IP 地址,此時自己的 IP 地址就是從 IP 地址);

(5) 備份數(shù)據(jù)庫(記得加鎖和解鎖);

(6) 傳送備份數(shù)據(jù)到 Slave 上;

(7) 啟動數(shù)據(jù)庫;

以下步驟,為單向主從搭建成功,想搭建雙向主從需要的步驟:

(1) 登錄數(shù)據(jù)庫,指定 Master 的地址、用戶、密碼等信息(此步僅雙向主從時需要);

(2) 開啟同步,查看狀態(tài);

2、Slave 上的配置

(1) 安裝數(shù)據(jù)庫;

(2) 修改數(shù)據(jù)庫配置文件,指明 server_id(如果是搭建雙向主從的話,也要開啟二進制 日志 log-bin);

(3) 啟動數(shù)據(jù)庫,還原備份;

(4) 查看當(dāng)前是哪個日志,position 號是多少(單向主從此步不需要,雙向主從需要);

(5) 指定 Master 的地址、用戶、密碼等信息;

(6) 開啟同步,查看狀態(tài)。

單向主從環(huán)境搭建

安裝數(shù)據(jù)庫

參考《MySQL之——源碼編譯MySQL8.x+升級gcc+升級cmake(親測完整版)》。

配置Master的my.cnf

[root@liuyazhuang131 ~]# vi /etc/my.cnf  
# 在 [mysqld] 中增加以下配置項 
# 設(shè)置 server_id,一般設(shè)置為 IP 
server_id=131
# 復(fù)制過濾:需要備份的數(shù)據(jù)庫,輸出 binlog
#binlog-do-db=liuyazhuang
# 復(fù)制過濾:不需要備份的數(shù)據(jù)庫,不輸出(mysql 庫一般不同步) 
binlog-ignore-db=mysql 
# 開啟二進制日志功能,可以隨便取,最好有含義 
log-bin=lyz-mysql-bin 
## 為每個 session 分配的內(nèi)存,在事務(wù)過程中用來存儲二進制日志的緩存 
binlog_cache_size=1M 
## 主從復(fù)制的格式(mixed,statement,row,默認格式是 statement)
binlog_format=mixed
# 二進制日志自動刪除/過期的天數(shù)。默認值為 0,表示不自動刪除。 
expire_logs_days=7
# 跳過主從復(fù)制中遇到的所有錯誤或指定類型的錯誤,避免 slave 端復(fù)制中斷。
# 如:1062 錯誤是指一些主鍵重復(fù),1032 錯誤是因為主從數(shù)據(jù)庫數(shù)據(jù)不一致
slave_skip_errors=1062

復(fù)制過濾可以讓你只復(fù)制服務(wù)器中的一部分數(shù)據(jù),有兩種復(fù)制過濾:

(1) 在 Master 上過濾二進制日志中的事件;

(2) 在 Slave 上過濾中繼日志中的事件。如下:

MySQL 對于二進制日志 (binlog)的復(fù)制類型

(1) 基于語句的復(fù)制:在 Master 上執(zhí)行的 SQL 語句,在 Slave 上執(zhí)行同樣的語句。MySQL 默 認采用基于語句的復(fù)制,效率比較高。一旦發(fā)現(xiàn)沒法精確復(fù)制時,會自動選著基于行的復(fù)制。

(2) 基于行的復(fù)制:把改變的內(nèi)容復(fù)制到 Slave,而不是把命令在 Slave 上執(zhí)行一遍。從MySQL5.0 開始支持。

(3) 混合類型的復(fù)制:默認采用基于語句的復(fù)制,一旦發(fā)現(xiàn)基于語句的無法精確的復(fù)制時,就會采用基于行的復(fù)制。

重啟Master庫

啟動/重啟 Master 數(shù)據(jù)庫服務(wù),登錄數(shù)據(jù)庫,創(chuàng)建數(shù)據(jù)同步用戶,并授予相應(yīng)的權(quán)限

[root@liuyazhuang131 ~]# service mysql restart 
[root@liuyazhuang131 ~]# mysql -uroot -proot
##創(chuàng)建數(shù)據(jù)同步用戶,并授予相應(yīng)的權(quán)限 
mysql> grant replication slave, replication client on *.* to 'repl'@'192.168.209.132' identified by '123456'; 
Query OK, 0 rows affected (0.00 sec) ## 刷新授權(quán)表信息 
mysql> flush privileges; 
Query OK, 0 rows affected (0.00 sec) 
## 查看 position 號,記下 position 號(從機上需要用到這個 position 號和現(xiàn)在的日志文件) 
mysql> show master status;
+----------------------+----------+--------------+------------------+-------------------+
| File                 | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+----------------------+----------+--------------+------------------+-------------------+
| lyz-mysql-bin.000001 |     1312 |              | mysql            |                   |
+----------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec) 

模擬業(yè)務(wù)數(shù)據(jù)庫

創(chuàng)建 lyz 庫、表,并寫入一定量的數(shù)據(jù),用于模擬現(xiàn)有的業(yè)務(wù)系統(tǒng)數(shù)據(jù)庫

create database if not exists lyz default charset utf8 collate utf8_general_ci;
use lyz; 
DROP TABLE IF EXISTS `lyz_user`; CREATE TABLE `lyz_user` ( 
`Id` int(11) NOT NULL AUTO_INCREMENT, 
`userName` varchar(255) NOT NULL DEFAULT '' COMMENT '用戶名', `pwd` varchar(255) NOT NULL DEFAULT '' COMMENT '密碼',
 PRIMARY KEY (`Id`) 
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COMMENT='用戶信息表'; 
INSERT INTO `lyz_user` VALUES (1,'yixiaoqun','123456');

實現(xiàn)初始數(shù)據(jù)一致

為保證 Master 和 Slave 的數(shù)據(jù)一致,我們采用主備份,從還原來實現(xiàn)初始數(shù)據(jù)一致

## 先臨時鎖表
mysql> flush tables with read lock; Query OK, 0 rows affected (0.00 sec) 
## 這里我們實行全庫備份,在實際中,我們可能只同步某一個庫,那也可以只備份一個庫
[root@liuyazhuang131 mysql]# mysqldump -u root -proot lyz > /tmp/lyz.sql 
[root@liuyazhuang131 mysql]# cd /tmp
[root@liuyazhuang131 tmp]# ll | grep lyz.sql
-rw-r--r--  1 root  root     2031 Apr 25 01:18 lyz.sql
# 注意:實際生產(chǎn)環(huán)境中大數(shù)據(jù)量(超 2G 數(shù)據(jù))的備份,建議不要使用 mysqldump 進行 比分,因為會非常慢。此時推薦使用 XtraBackup 進行備份。
# 解鎖表
mysql> unlock tables; 
Query OK, 0 rows affected (0.00 sec)

將 Master 上備份的數(shù)據(jù)遠程傳送到 Slave 上,以用于 Slave 配置時恢復(fù)數(shù)據(jù)

[root@liuyazhuang131 tmp]# scp /tmp/lyz.sql root@192.168.209.132:/tmp/lyz.sql
The authenticity of host '192.168.209.132 (192.168.209.132)' can't be established.
RSA key fingerprint is da:70:7b:d5:0c:16:b3:1a:53:b7:3d:9f:20:01:26:3e.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.209.132' (RSA) to the list of known hosts.
root@192.168.209.132's password: 
lyz.sql    

配置Slave庫

接下來處理 Slave(192.168.209.132),配置文件只需修改一項,其余配置用命令來操作

[root@liuyazhuang132 ]# vi /etc/my.cnf
# 在 [mysqld] 中增加以下配置項 
# 設(shè)置 server_id,一般設(shè)置為 IP 
server_id=132
# 復(fù)制過濾:需要備份的數(shù)據(jù)庫,輸出 binlog #binlog-do-db=lyz
# 復(fù)制過濾:不需要備份的數(shù)據(jù)庫,不輸出(mysql 庫一般不同步)
 binlog-ignore-db=mysql 
# 開啟二進制日志,以備 Slave 作為其它 Slave 的 Master 時使用 
log-bin=lyz-mysql-slave1-bin 
## 為每個 session 分配的內(nèi)存,在事務(wù)過程中用來存儲二進制日志的緩存 binlog_cache_size = 1M 
# 主從復(fù)制的格式(mixed,statement,row,默認格式是 statement) 
binlog_format=mixed 
# 二進制日志自動刪除/過期的天數(shù)。默認值為 0,表示不自動刪除。 
expire_logs_days=7 
# 跳過主從復(fù)制中遇到的所有錯誤或指定類型的錯誤,避免 slave 端復(fù)制中斷。 
# 如:1062 錯誤是指一些主鍵重復(fù),1032 錯誤是因為主從數(shù)據(jù)庫數(shù)據(jù)不一致 
slave_skip_errors=1062 
## relay_log 配置中繼日志 
relay_log=lyz-mysql-relay-bin 
## log_slave_updates 表示 slave 將復(fù)制事件寫進自己的二進制日志 
log_slave_updates=1
##防止改變數(shù)據(jù)(除了特殊的線程)
read_only=1

如果Slave為其它的Slave的Master時,必須設(shè)置bin_log,在這里,我開啟了二進制日志,而且顯式的命名(默認名稱為hostname),但是如果hostname改變則會出現(xiàn)問題。

relay_log配置中繼日志,log_slave_updates表示slave將復(fù)制事件 寫進自己的二進制日志.當(dāng)設(shè)置log_slave_updates時,你可以讓slave扮演其它slave的master.此時,slave把sql線程執(zhí)行的事件寫進自己的二進制日志(binary log)然后,它的slave可以獲取這些事件并執(zhí)行它。如下圖所示(發(fā)送復(fù)制事件到其它的Slave):

還原備份數(shù)據(jù)

保存后重啟MySQL服務(wù),還原備份數(shù)據(jù)

[root@liuyazhuang132 ~]# service mysql restart
Shutting down MySQL. SUCCESS! 
Starting MySQL.. SUCCESS! 

Slave上創(chuàng)建相同庫

[root@liuyazhuang132 ~]# mysql -uroot -proot
 mysql> use lyz;
 Database changed

導(dǎo)入數(shù)據(jù)

[root@liuyazhuang132 ~]# mysql -uroot -proot lyz < /tmp/lyz.sql 
[root@liuyazhuang132 ~]# mysql -uroot -proot
mysql> use lyz;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> select * from lyz_user;
+----+-----------+--------+
| Id | userName  | pwd    |
+----+-----------+--------+
|  1 | yixiaoqun | 123456 |
+----+-----------+--------+
1 row in set (0.00 sec)

Slave庫添加參數(shù)

登錄Slave數(shù)據(jù)庫,添加相關(guān)參數(shù):Master的IP、端口、同步用戶、密碼、position號、讀取哪個日志文件

change master to master_host='192.168.209.131',master_user='repl',master_password='123456',master_port=3306,
master_log_file='lyz-mysql-bin.000001',master_log_pos=1312,master_connect_retry=30;

上面執(zhí)行的命令的解釋:

  • master_host=‘192.168.209.131’ ##Master的IP地址
  • master_user=‘repl’ ##用于同步數(shù)據(jù)的用戶(在Master中授權(quán)的用戶)
  • master_password=‘123456’ ##同步數(shù)據(jù)用戶的密碼
  • master_port=3306 ##master數(shù)據(jù)庫服務(wù)的端口
  • master_log_file=‘lyz-mysql-bin.000001’ ##指定Slave從哪個日志文件開始讀取復(fù)制文件(可在Master上使用show master status查看到日志文件名)
  • master_log_pos=429 ##從哪個POSITION號開始讀
  • master_connect_retry=30 #當(dāng)重新建立主從連接時,如果連接建立失敗,間隔多久后重試,單位為秒,默認設(shè)置為60秒,同步延遲調(diào)優(yōu)參數(shù)。

查看主從同步狀態(tài)

show slave status\G;

可看到Slave_IO_State為空,Slave_IO_Runngin和Slave_SQL_Running是No,表時Slave還是沒有開始復(fù)制過程。

開啟主從同步

mysql> start slave;

再次查看同步狀態(tài)

#show slave status\G;

主要看以下兩個參數(shù),這兩個參數(shù)如果是Yes,就表示數(shù)據(jù)同步正常

Slave_IO_Running:Yes
Slave_SQL_Running:Yes

可查看master和slave上線程的狀態(tài),在master上,可以看到slave的I/O線程創(chuàng)建的連接

Master:mysql>show processlist\G;

1.row為處理slave的I/O線程的連接。

2.row為處理MySQL客戶連接線程。

3.row為處理本地命令行的線程

Slave:mysql>show processlist\G;

1.row為處理slave的I/O線程的連接。

2.row為處理MySQL客戶連接線程。

3.row為處理本地命令行的線程

主從數(shù)據(jù)復(fù)制同步測試

Master:
mysql> insert into lyz_user values(2,'test1','123456');
Slave:
mysql> start slave;

經(jīng)過以上配置,在192.168.209.131上對數(shù)據(jù)庫/表進行增刪改查,創(chuàng)建/刪除數(shù)據(jù)庫/表都會同步到192.168.209.132數(shù)據(jù)庫上了。

至此,整個配置過程結(jié)束。

?文章來源地址http://www.zghlxwxcb.cn/news/detail-837787.html

點擊關(guān)注,第一時間了解華為云新鮮技術(shù)~

?

到了這里,關(guān)于用幾張圖實戰(zhàn)講解MySQL主從復(fù)制的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • Redis主從復(fù)制、哨兵實戰(zhàn)

    Redis主從復(fù)制、哨兵實戰(zhàn)

    環(huán)境:linux centos7.x ,虛擬機3臺 版本:redis-6.2.6 1.下載安轉(zhuǎn)redis 下載地址 wget https://download.redis.io/releases/redis-6.2.6.tar.gz 解壓?tar -zxvf redis-6.2.6.tar.gz 移動目錄?mv redis-6.2.6 /usr/local/redis 編譯???cd /usr/local/redis? ? ? ? ?make install PREFIX=/usr/local/redis 2.修改配置文件 redis.conf ?修改為

    2024年02月03日
    瀏覽(19)
  • mysql(九)mysql主從復(fù)制

    mysql(九)mysql主從復(fù)制

    MySQL的內(nèi)建功能是構(gòu)建基于MySQL的大規(guī)模,高性能應(yīng)用的基礎(chǔ),這類應(yīng)用使用所謂的“水平擴展”的架構(gòu)。我們可以通過為服務(wù)器配置一個或多個從庫的方式來進行數(shù)據(jù)同步,復(fù)制功能不僅有利于構(gòu)建高性能的應(yīng)用,同時也是高可用,可擴展性,災(zāi)難恢復(fù),備份以及數(shù)據(jù)倉庫等

    2024年02月09日
    瀏覽(18)
  • 【MySQL】主從復(fù)制&部署

    【MySQL】主從復(fù)制&部署

    SQL 什么是SQL? Structure Query Language(結(jié)構(gòu)化查詢語言) 它被美國國家標準局(ANSI)確定為關(guān)系型數(shù)據(jù)庫語言的美國標準,后被國際化標準組織(ISO)采納為關(guān)系數(shù)據(jù)庫語言的國際標準。 數(shù)據(jù)庫管理系統(tǒng)可以通過SQL管理數(shù)據(jù)庫;定義和操作數(shù)據(jù),維護數(shù)據(jù)的完整性和安全性。 優(yōu)點 簡單

    2024年02月08日
    瀏覽(23)
  • MYSQL8主從復(fù)制

    MYSQL8主從復(fù)制

    關(guān)鍵點: 主庫 創(chuàng)建一個 遠程用戶 并 授予復(fù)制權(quán)限 。 在 主庫 和 從庫 的 my.cnf 配置 服務(wù)器唯一id ; 開啟 全局事務(wù)ID ; 在 my.cnf 文件中啟用 二進制日志 記錄,并為其分配一個 唯一的服務(wù)器 ID 。 關(guān)閉 主節(jié)點 和 從節(jié)點 的mysql服務(wù)。 主服務(wù)器配置 每個數(shù)據(jù)庫實例的 服務(wù)器ID 要

    2024年02月01日
    瀏覽(38)
  • 詳解MySQL主從復(fù)制

    詳解MySQL主從復(fù)制

    目錄 1.概述 2.配置使用 2.1.master配置 2.2.slave配置 2.3.認主 2.4.確認認主結(jié)果 3.請求分發(fā) 3.1.概述 3.2.手動分發(fā) 3.2.1.原生JDBC 3.2.2.數(shù)據(jù)源 3.2.3.中間件 在實際的數(shù)據(jù)密集型應(yīng)用中,數(shù)據(jù)庫層面往往呈現(xiàn)兩個特點: 單點數(shù)據(jù)庫難以扛得住。 讀操作遠遠多于寫操作。 綜上所述我們可以

    2024年02月06日
    瀏覽(16)
  • 【MySQL】主從異步復(fù)制配置

    【MySQL】主從異步復(fù)制配置

    您好,我是碼農(nóng)飛哥(wei158556),感謝您閱讀本文,歡迎一鍵三連哦 。 ???? 1. Python基礎(chǔ)專欄,基礎(chǔ)知識一網(wǎng)打盡,9.9元買不了吃虧,買不了上當(dāng)。 Python從入門到精通 ?? 2. 畢業(yè)設(shè)計專欄,畢業(yè)季咱們不慌忙,幾百款畢業(yè)設(shè)計等你選。 ?? 3. Python爬蟲專欄,系統(tǒng)性的學(xué)習(xí)

    2024年02月03日
    瀏覽(18)
  • 6.Mysql主從復(fù)制

    6.Mysql主從復(fù)制

    讀寫分離概念: 讀寫分離,基本的原理是讓主數(shù)據(jù)庫處理事務(wù)性增、改、刪操作(INSERT、UPDATEDELETE),而從數(shù)據(jù)庫處理SELECT查詢操作。 數(shù)據(jù)庫復(fù)制被用來把事務(wù)性操作導(dǎo)致的變更同步到集群中的從數(shù)據(jù)庫。 讀寫分離的作用: 因為數(shù)據(jù)庫的“寫”( 寫10000條數(shù)據(jù)可能要3分鐘)操作

    2024年02月11日
    瀏覽(19)
  • Mysql 主從復(fù)制、讀寫分離

    Mysql 主從復(fù)制、讀寫分離

    目錄 前言 一、主從復(fù)制原理 1.1 MySQL的復(fù)制類型 1.2?mysql主從復(fù)制的工作原理 1.3 MySQL主從復(fù)制延遲 1.4?MySQL四種同步方式 1.5 MySQL支持的復(fù)制類型 二、 MySQL應(yīng)用場景 三、主從復(fù)制實驗 3.1?MySQL主從服務(wù)器時間同步 3.1.1 安裝ntp、修改配置文件 3.1.2 兩臺SLAVE服務(wù)器配置 3.2 配置主從

    2024年02月16日
    瀏覽(23)
  • MySQL主從復(fù)制環(huán)境部署

    通過將MySQL的某一臺主機(master)的數(shù)據(jù)復(fù)制到其他主機(slaves)上,并重新執(zhí)行一遍來執(zhí)行 復(fù)制的這一過程叫做主從復(fù)制。 通過主從復(fù)制可以實現(xiàn)后續(xù)的讀寫分離,部署高可用架構(gòu)等打下基礎(chǔ)。 在進行同步前,最好使兩邊數(shù)據(jù)庫內(nèi)容保持一致、版本號盡量一致、操作系統(tǒng)

    2024年02月15日
    瀏覽(25)
  • 【MySQL】主從復(fù)制

    MySQL是一款關(guān)系型數(shù)據(jù)庫,被廣泛應(yīng)用于各種互聯(lián)網(wǎng)應(yīng)用中。隨著業(yè)務(wù)的不斷擴大,數(shù)據(jù)量不斷增加,如何讓MySQL具有更好的可用性和容災(zāi)能力成為了越來越重要的問題。本文將重點介紹MySQL主從復(fù)制和高可用性的實現(xiàn),旨在為MySQL的使用者提供指導(dǎo)和幫助。 MySQL主從復(fù)制是指

    2024年02月20日
    瀏覽(15)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包