亚洲视频二区_亚洲欧洲日本天天堂在线观看_日韩一区二区在线观看_中文字幕不卡一区

公告:魔扣目錄網(wǎng)為廣大站長(zhǎng)提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請(qǐng)做好本站友鏈:【 網(wǎng)站目錄:http://www.430618.com 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會(huì)員:747

作者:慘綠少年

出處:http://clsn.io

一、主從復(fù)制基礎(chǔ)概念

在了解主從復(fù)制之前必須要了解的就是數(shù)據(jù)庫(kù)的二進(jìn)制日志(binlog),主從復(fù)制架構(gòu)大多基于二進(jìn)制日志進(jìn)行。

1.1 二進(jìn)制日志管理說(shuō)明

二進(jìn)制日志在哪?如何設(shè)置位置和命名?

在my.cnf文件中使用 log-bin = 指定;命名規(guī)則為 MySQL-bin.000000 (后為6位數(shù)字)

二進(jìn)制日志位置

mysql> show variables like '%log_bin%' ;
+---------------------------------+-----------------------------------------+
| Variable_name | Value |
+---------------------------------+-----------------------------------------+
| log_bin | ON |
| log_bin_basename | /Application/mysql/data/mysql-bin |
| log_bin_index | /application/mysql/data/mysql-bin.index |
| log_bin_trust_function_creators | OFF |
| log_bin_use_v1_row_events | OFF |
| sql_log_bin | ON |
+---------------------------------+-----------------------------------------+
6 rows in set (0.06 sec)

日志命名:

mysql> show binary logs;
+------------------+-----------+
| Log_name | File_size |
+------------------+-----------+
| mysql-bin.000001 | 2979 |
| mysql-bin.000002 | 120 |
+------------------+-----------+
2 rows in set (0.00 sec)

二進(jìn)制日志記錄什么?二進(jìn)制日志中記錄的是一個(gè)個(gè)完成的事件

二進(jìn)制日志格式是怎樣的?推薦使用row格式

查看當(dāng)前使用的日志格式:

mysql> show variables like '%format%';
+--------------------------+-------------------+
| Variable_name | Value |
+--------------------------+-------------------+
| binlog_format | ROW |
| date_format | %Y-%m-%d |
| datetime_format | %Y-%m-%d %H:%i:%s |
| default_week_format | 0 |
| innodb_file_format | Antelope |
| innodb_file_format_check | ON |
| innodb_file_format_max | Antelope |
| time_format | %H:%i:%s |
+--------------------------+-------------------+
8 rows in set (0.00 sec)

二進(jìn)制日志如何滾動(dòng)?每次重啟都會(huì)刷新日志,也可以通過(guò)命令進(jìn)行刷新 reset master;

二進(jìn)制日志用來(lái)干嘛?備份恢復(fù),起始點(diǎn)的備份恢復(fù)

二進(jìn)制日志的操作命令?查看都有哪些二進(jìn)制日志

mysql> show binary logs;
+------------------+-----------+
| Log_name | File_size |
+------------------+-----------+
| mysql-bin.000001 | 2979 |
| mysql-bin.000002 | 167 |
| mysql-bin.000003 | 120 |
+------------------+-----------+
3 rows in set (0.00 sec)

查看當(dāng)前使用的二進(jìn)制日志文件:

mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000003 | 120 | | | |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)

binlog相關(guān)詳情參照:

http://www.cnblogs.com/clsn/p/8087678.html#_label6

1.2 mysql傳統(tǒng)備份方式和缺陷

  1. 二進(jìn)制日志備份
  2. mysqldump
  3. 必須有數(shù)據(jù)庫(kù)服務(wù)器完成邏輯工作,需要更多地cpu周期
  4. 邏輯備份還原速度慢:需要MySQL加載和解釋語(yǔ)句、轉(zhuǎn)化存儲(chǔ)格式、重建引擎
  5. xtrabackup
  6. 文件大
  7. 不總是可以跨平臺(tái)、操作系統(tǒng)和MySQL版本

1.3 MySQL主從復(fù)制能為我們做什么

  • 高可用
  • 輔助備份
  • 分擔(dān)負(fù)載

二、MySQL主從復(fù)制介紹

2.1 復(fù)制技術(shù)

作用:

  • 保證數(shù)據(jù)安全(異機(jī)實(shí)時(shí)備份)
  • 保證服務(wù)持續(xù)運(yùn)行(宕機(jī)接管)

主從復(fù)制實(shí)現(xiàn)基本原理

  • 自帶功能,復(fù)制是 MySQL 的一項(xiàng)功能,允許服務(wù)器將更改從一個(gè)實(shí)例復(fù)制到另一個(gè)實(shí)例。
  • 主服務(wù)器將所有數(shù)據(jù)和結(jié)構(gòu)更改記錄到二進(jìn)制日志中。
  • 從屬服務(wù)器從主服務(wù)器請(qǐng)求該二進(jìn)制日志并在本地應(yīng)用其內(nèi)容。即通過(guò)把主庫(kù)的binlog傳送到從庫(kù),從新解析應(yīng)用到從庫(kù)。

2.2 復(fù)制架構(gòu)

mysql復(fù)制的應(yīng)用常見(jiàn)場(chǎng)景:

應(yīng)用場(chǎng)景1:從服務(wù)器作為主服務(wù)器的實(shí)時(shí)數(shù)據(jù)備份

應(yīng)用場(chǎng)景2:主從服務(wù)器實(shí)現(xiàn)讀寫分離,從服務(wù)器實(shí)現(xiàn)負(fù)載均衡

應(yīng)用場(chǎng)景3:把多個(gè)從服務(wù)器根據(jù)業(yè)務(wù)重要性進(jìn)行拆分訪問(wèn)

傳統(tǒng)的 MySQL復(fù)制提供了一種簡(jiǎn)單的主–從復(fù)制方法,有一個(gè)主,以及一個(gè)或多個(gè)從。

主節(jié)點(diǎn)執(zhí)行和提交事務(wù),然后將它們(異步地)發(fā)送到從節(jié)點(diǎn),以重新執(zhí)行(在基于語(yǔ)句的復(fù)制中)或應(yīng)用(在基于行的復(fù)制中)。

這是一個(gè) shared-nothing 的系統(tǒng),默認(rèn)情況下所有 server 成員都有一個(gè)完整的數(shù)據(jù)副本。

 

如何基于 MySQL 主從模式搭建上萬(wàn)并發(fā)的系統(tǒng)架構(gòu)?

(圖)MySQL 異步復(fù)制

還有一個(gè)半同步復(fù)制,它在協(xié)議中添加了一個(gè)同步步驟。

這意味著主節(jié)點(diǎn)在提交時(shí)需要等待從節(jié)點(diǎn)確認(rèn)它已經(jīng)接收到事務(wù)。只有這樣,主節(jié)點(diǎn)才能繼續(xù)提交操作。

 

如何基于 MySQL 主從模式搭建上萬(wàn)并發(fā)的系統(tǒng)架構(gòu)?

(圖)MySQL 異步復(fù)制

在上面的兩個(gè)圖片中,可以看到傳統(tǒng)異步 MySQL 復(fù)制協(xié)議(以及半同步)的圖形展示。

藍(lán)色箭頭表示在不同 server 之間或者 server 與 client 應(yīng)用之間的信息交互。

2.3 MySQL主從復(fù)制原理介紹

復(fù)制過(guò)程:

  • 開(kāi)啟binlog日志,通過(guò)把主庫(kù)的binlog傳送到從庫(kù),從新解析應(yīng)用到從庫(kù)。
  • 復(fù)制需要3個(gè)線程(dump、io、sql)完成,5.6從庫(kù)多個(gè)sql。
  • 復(fù)制是異步的過(guò)程。主從復(fù)制是異步的邏輯的SQL語(yǔ)句級(jí)的復(fù)制。

復(fù)制前提:

  • 主服務(wù)期一定要打開(kāi)二進(jìn)制日志
  • 必須兩臺(tái)服務(wù)器(或者是多個(gè)實(shí)例)
  • 從服務(wù)器需要一次數(shù)據(jù)初始化
  • 如果主從服務(wù)器都是新搭建的話,可以不做初始化
  • 如果主服務(wù)器已經(jīng)運(yùn)行了很長(zhǎng)時(shí)間,可以通過(guò)備份將主庫(kù)數(shù)據(jù)恢復(fù)到從庫(kù)
  • 主庫(kù)必須要有對(duì)從庫(kù)復(fù)制請(qǐng)求的用戶。
  • 從庫(kù)需要有relay-log設(shè)置,存放從主庫(kù)傳送過(guò)來(lái)的二進(jìn)制日志:
  • show variables like '%relay%';
  • 在第一次的時(shí)候,從庫(kù)需要change master to 去連接主庫(kù)。
  • change master信息需要存放到master.info中 :
  • show variables like '%master_info%';
  • 從庫(kù)怎么知道,主庫(kù)發(fā)生了新的變化?通過(guò)relay-log.info記錄的已經(jīng)應(yīng)用過(guò)的relay-log信息。
  • 在復(fù)制過(guò)程中涉及到的線程
  • 從庫(kù)會(huì)開(kāi)啟一個(gè)IO thread(線程),負(fù)責(zé)連接主庫(kù),請(qǐng)求binlog,接收binlog并寫入relay-log。
  • 從庫(kù)會(huì)開(kāi)啟一個(gè)SQL thread(線程),負(fù)責(zé)執(zhí)行relay-log中的事件。
  • 主庫(kù)會(huì)開(kāi)啟一個(gè)dump thrad(線程),負(fù)責(zé)響應(yīng)從IO thread的請(qǐng)求。

主從怎么實(shí)現(xiàn)的?

  • 通過(guò)二進(jìn)制日志
  • 至少兩臺(tái)(主、從)
  • 主服務(wù)器的二進(jìn)制日志“拿”到從服務(wù)器上再運(yùn)行一遍。
  • 通過(guò)網(wǎng)絡(luò)連接兩臺(tái)機(jī)器,一般都會(huì)出現(xiàn)延遲的狀態(tài)。也可以說(shuō)是異步的。
如何基于 MySQL 主從模式搭建上萬(wàn)并發(fā)的系統(tǒng)架構(gòu)?

 

2.4 執(zhí)行原理--第一次開(kāi)啟主從過(guò)程

  • 從庫(kù)通過(guò)手工執(zhí)行change master to 語(yǔ)句連接主庫(kù),提供了連接的用戶一切條件:
  • (user、password、port、ip)
  • 并且讓從庫(kù)知道,二進(jìn)制日志的起點(diǎn)位置(file名 position號(hào))
  • start slave
  • 從庫(kù)的IO和主庫(kù)的dump線程建立連接
  • 從庫(kù)根據(jù)change master to 語(yǔ)句提供的file名和position號(hào),IO線程向主庫(kù)發(fā)起binlog的請(qǐng)求
  • 主庫(kù)dump線程根據(jù)從庫(kù)的請(qǐng)求,將本地binlog以events的方式發(fā)給從庫(kù)IO線程
  • 從庫(kù)IO線程接收binlog evnets,并存放到本地relay-log中,傳送過(guò)來(lái)的信息,會(huì)記錄到master.info中。
  • 從庫(kù)SQL線程應(yīng)用relay-log,并且把應(yīng)用過(guò)的記錄到relay-log.info,默認(rèn)情況下,已經(jīng)應(yīng)用過(guò)的relay會(huì)自動(dòng)被清理purge。

到此為止,一次主從復(fù)制就完成

一旦主從運(yùn)行起來(lái):就不需要手工執(zhí)行change master to,因?yàn)樾畔⒍紩?huì)被存放到master.info(user、password、port、ip,上次獲取過(guò)的binlog信息file和position)中。

詳細(xì)的mysql replication 過(guò)程

 

如何基于 MySQL 主從模式搭建上萬(wàn)并發(fā)的系統(tǒng)架構(gòu)?

 

三、 主從搭建配置

本次主從搭建使用mysql多實(shí)例進(jìn)行實(shí)驗(yàn)。多實(shí)例配置參考文檔進(jìn)行配置:

http://www.cnblogs.com/clsn/p/8038964.html#_label8

3.1 多實(shí)例數(shù)據(jù)庫(kù)slave配置

系統(tǒng)環(huán)境說(shuō)明:

[root@db02 ~]# cat /etc/redhat-release
centos release 6.9 (Final)
[root@db02 ~]# uname -r
2.6.32-696.el6.x86_64
[root@db02 ~]# /etc/init.d/iptables status
iptables: Firewall is not running. # 注意:務(wù)必關(guān)閉防火墻(iptables selinux)
[root@db02 ~]# getenforce
Disabled
[root@db02 ~]# mysql --version
mysql Ver 14.14 Distrib 5.6.36, for Linux (x86_64) using EditLine wrapper

1、啟動(dòng)多實(shí)例數(shù)據(jù)庫(kù)

[root@db02 ~]# /data/3306/mysql start
Starting MySQL...
[root@db02 ~]# /data/3307/mysql start
Starting MySQL...

2、配置文件說(shuō)明:

master 配置文件說(shuō)明:

[root@db02 ~]# cat /data/3306/my.cnf
[client]
port = 3306
socket = /data/3306/mysql.sock
[mysqld]
user = mysql
port = 3306
socket = /data/3306/mysql.sock
basedir = /application/mysql
datadir = /data/3306/data
log-bin = /data/3306/mysql-bin
server-id = 6 # server id 不能相同
skip_name_resolve = 0 # 跳過(guò)域名解析參數(shù)
[mysqld_safe]
log-error=/data/3306/mysql_3306.err
pid-file=/data/3306/mysqld.pid

slave 配置文件說(shuō)明:

[root@db02 ~]# cat /data/3307/my.cnf
[client]
port = 3307
socket = /data/3307/mysql.sock
[mysqld]
user = mysql
port = 3307
socket = /data/3307/mysql.sock
basedir = /application/mysql
datadir = /data/3307/data
log-bin = /data/3307/mysql-bin
server-id = 7 # server id 不能相同
skip_name_resolve = 0 # 跳過(guò)域名解析參數(shù)
read_only = 1 # 從庫(kù)只讀 (非root用戶 )
[mysqld_safe]
log-error=/data/3307/mysql_3307.err
pid-file=/data/3307/mysqld.pid

3、在主庫(kù)創(chuàng)建復(fù)制用戶

登陸到主數(shù)據(jù)庫(kù)中:

mysql -uroot -p123 -S /data/3306/mysql.sock

創(chuàng)建授權(quán)用戶,注意是slave用戶。

grant replication slave on *.* to repl@'10.0.0.%' identified by '123';

4、初始化從庫(kù)數(shù)據(jù)

備份主庫(kù)當(dāng)前數(shù)據(jù)

mysqldump -uroot -p123 -A -B -F --master-data=2 -S /data/3306/mysql.sock >/tmp/full.sql

部分參數(shù)說(shuō)明:

  • -F 刷新二進(jìn)制日志
  • --master-data [=#]這會(huì)導(dǎo)致二進(jìn)制日志的位置和文件名被追加到輸出中。如果等于1,則將其打印為CHANGE MASTER命令; 如果等于2,那么該命令將以注釋符號(hào)為前綴。

到從庫(kù)進(jìn)行恢復(fù)

mysql -uroot -p123 -S /data/3307/mysql.sock

恢復(fù)備份的數(shù)據(jù)

set sql_log_bin=0;
source /tmp/full.sql

5、開(kāi)啟從庫(kù)復(fù)制

查看備份的當(dāng)前使用的文件及POS號(hào)

mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000012 | 120 | | | |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)

登入數(shù)據(jù)庫(kù),進(jìn)行slave配置。

mysql -uroot -p123 -S /data/3307/mysql.sock
CHANGE MASTER TO
MASTER_HOST='10.0.0.52',
MASTER_USER='repl',
MASTER_PASSWORD='123',
MASTER_PORT=3306,
MASTER_LOG_FILE='mysql-bin.000012',
MASTER_LOG_POS=120;
start slave; # 啟動(dòng)從庫(kù)復(fù)制

該配置想關(guān)說(shuō)明可以通過(guò) help 獲得。

mysql> help CHANGE MASTER TO
CHANGE MASTER TO
MASTER_HOST='master2.mycompany.com',
MASTER_USER='replication',
MASTER_PASSWORD='bigs3cret',
MASTER_PORT=3306,
MASTER_LOG_FILE='master2-bin.001',
MASTER_LOG_POS=4,
MASTER_CONNECT_RETRY=10;

3.2 測(cè)試主從同步

查看slave庫(kù)的狀態(tài),主要查看:

Slave_IO_Running與Slave_SQL_Running是否都為Yes

主庫(kù)進(jìn)行操作,在從庫(kù)驗(yàn)證

[root@db02 ~]# mysql -uroot -p123 -S /data/3306/mysql.sock
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| test |
+--------------------+
4 rows in set (0.00 sec)
mysql> create database clsn;
Query OK, 1 row affected (0.00 sec)

在從庫(kù)上可以看到該數(shù)據(jù)庫(kù)已創(chuàng)建

[root@db02 ~]# mysql -uroot -p123 -S /data/3307/mysql.sock
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| clsn |
| mysql |
| performance_schema |
| test |
+--------------------+
5 rows in set (0.00 sec)

至此mysql主從復(fù)制就搭建完成

3.3 忘記數(shù)據(jù)庫(kù)密碼?

shell> /application/mysql/bin/mysqld_safe --defaults-file=/data/3306/my.cnf --skip-grant-tables --skip-networking &
mysql> update user set password=password('123') where user='root' and host='localhost';
mysql> flush privileges;

3.4 主從復(fù)制狀態(tài)失敗的原因?

Last_IO_Error: error reconnecting to master '[email protected]:3306' - retry-time: 60 retries: 1

原因:

  • 主機(jī)沒(méi)啟動(dòng),或者宕機(jī),檢查主庫(kù)的狀態(tài)。
  • 網(wǎng)絡(luò)通信問(wèn)題,使用ping命令進(jìn)行檢查;或使用mysql命令進(jìn)行shell端登陸測(cè)試
  • 防火墻,selinux(務(wù)必檢查)
  • 復(fù)制用戶和密碼、端口號(hào)、地址有問(wèn)題,使用mysql命令進(jìn)行shell端登陸測(cè)試。
  • mysql自動(dòng)解析,會(huì)將連接的IP解析成主機(jī)名(skip-name-resolve = 0)寫入my.cnf文件即可。
  • 從庫(kù)IO異常關(guān)閉,通過(guò)show slave status G 進(jìn)行查看。

四、MySQL主從復(fù)制常見(jiàn)問(wèn)題

4.1 從庫(kù)binlog落后主庫(kù)binlog?

從庫(kù)記錄的已經(jīng)主庫(kù)已經(jīng)給我傳送的binlog事件的坐標(biāo),一般在繁忙的生產(chǎn)環(huán)境下會(huì)落后于主庫(kù)

show master statusG --- 主
show slave status G --- 從
Master_Log_File: mysql-bin.000007
Read_Master_Log_Pos: 729

落后太遠(yuǎn)的原因:

  • 硬件條件有關(guān)的,機(jī)器磁盤IO性能不足。
  • 主要還是網(wǎng)絡(luò)問(wèn)題,網(wǎng)絡(luò)傳輸?shù)男阅堋?/em>
  • 主庫(kù)存放二進(jìn)制日志的存儲(chǔ)性能太低,建議binlog日志存咋SSD中。
  • 主庫(kù)DUMP線程太繁忙,主要發(fā)生在一主多從的環(huán)境下。
  • 從庫(kù)IO線程太忙
  • 人為控制(delay節(jié)點(diǎn)、延時(shí)節(jié)點(diǎn) )

4.2 主庫(kù)update,從庫(kù)遲遲的沒(méi)有更新

特殊情況日志已經(jīng)傳過(guò)來(lái)了,數(shù)據(jù)并沒(méi)有同步

一般情況:

  • 沒(méi)開(kāi)啟SQL線程
  • 傳的東西有問(wèn)題(你要做的事情,我提前已經(jīng)做了,不想重復(fù)做了,然后他就死了)
  • SQL線程忙
  • 人為控制了【delay(從庫(kù))節(jié)點(diǎn)、延時(shí)節(jié)點(diǎn),一般生產(chǎn)設(shè)置為3-6小時(shí)之間,可以保證過(guò)去3-6小時(shí)之間的誤操作,可以避免】

4.3 主從復(fù)制延時(shí)配置(從庫(kù)配置)

停止從庫(kù)復(fù)制

mysql>stop slave;
Query OK, 0 rows affected (0.01 sec)

修改延時(shí)參數(shù),MASTER_DELAY,單位位S (秒)。

mysql>CHANGE MASTER TO MASTER_DELAY = 30;
Query OK, 0 rows affected (0.07 sec)

啟動(dòng)從庫(kù)復(fù)制

mysql>start slave;
Query OK, 0 rows affected (0.07 sec)

查看配置是否生效

mysql> show slave status G
……
 SQL_Delay: 30

4.4 從庫(kù)安全配置(其他用戶只讀)

修改my.cnf配置文件,添加只讀參數(shù)

read_only = 1 ====> 控制普通用戶
innodb_read_only = 1 ====> 控制root用戶,正常情況不要加

添加完成后重啟數(shù)據(jù)庫(kù)

mysql> show variables like '%read_only%';
+------------------+-------+
| Variable_name | Value |
+------------------+-------+
| innodb_read_only | OFF |
| read_only | ON |
| tx_read_only | OFF |
+------------------+-------+
3 rows in set (0.00 sec)

延時(shí)從庫(kù): delay節(jié)點(diǎn)、延時(shí)節(jié)點(diǎn)

4.5 主從復(fù)制故障及解決(跳過(guò)錯(cuò)誤)

命令行設(shè)置

stop slave; #<==臨時(shí)停止同步開(kāi)關(guān)。
set global sql_slave_skip_counter = 1 ; #<==將同步指針向下移動(dòng)一個(gè),如果多次不同步,可以重復(fù)操作。
start slave;

在配置文件修改,設(shè)置要跳過(guò)的pos

/etc/my.cnf
slave-skip-errors = 1032,1062,1007

在mysql中可以跳過(guò)某些錯(cuò)誤,但是最好的解決辦法,重新搭建主從復(fù)制。

4.6 延時(shí)節(jié)點(diǎn)概念 --> SQL線程延時(shí)?

Last_SQL_Errno: 0
Last_SQL_Error:

原因:

  • 主庫(kù)做操作的對(duì)象,在從庫(kù)不存在
  • 主庫(kù)做操作的對(duì)象屬性不一致
  • 主庫(kù)做操作的對(duì)象,從庫(kù)已經(jīng)存在

……

4.7 Slave_*_Running:?

  • Slave_IO_Running I/O 線程正在運(yùn)行、未運(yùn)行還是正在運(yùn)行但尚未連接到主服務(wù)器。可能值分別為Yes、No 或 Connecting。
  • Slave_SQL_Running SQL線程當(dāng)前正在運(yùn)行、未運(yùn)行,可能值分別為Yes、No
  • 主服務(wù)器日志坐標(biāo):Master_Log_File 和 Read_Master_Log_Pos 標(biāo)識(shí)主服務(wù)器二進(jìn)制日志中 I/O 線程已經(jīng)傳輸?shù)淖罱录淖鴺?biāo)。
  • 如果Master_Log_File和Read_Master_Log_Pos 的值遠(yuǎn)遠(yuǎn)落后于主服務(wù)器上的那些值,這表示主服務(wù)器與從屬服務(wù)器之間事件的網(wǎng)絡(luò)傳輸可能存在延遲。

4.8 中繼日志坐標(biāo)

Relay_Log_File 和 Relay_Log_Pos 列標(biāo)識(shí)從屬服務(wù)器中繼日志中 SQL 線程已經(jīng)執(zhí)行的最近事件的坐標(biāo)。

這些坐標(biāo)對(duì)應(yīng)于 Relay_Master_Log_File 和 Exec_Master_Log_Pos 列標(biāo)識(shí)的主服務(wù)器二進(jìn)制日志中的坐標(biāo)。

如果 Relay_Master_Log_File 和 Exec_Master_Log_Pos 列的輸出遠(yuǎn)遠(yuǎn)落后于 Master_Log_File 和Read_Master_Log_Pos 列(表示 I/O 線程的坐標(biāo))

這表示 SQL 線程(而不是 I/O 線程)中存在延遲。即,它表示復(fù)制日志事件快于執(zhí)行這些事件。

4.9 單一主從需要改變的地方

從庫(kù)的作用

1、相當(dāng)于實(shí)時(shí)備份

2、使用從庫(kù)備份

3、一主多從應(yīng)對(duì)讀多的業(yè)務(wù)需求

如果,從庫(kù)只做備份服務(wù)器用,那么主庫(kù)的壓力會(huì)不減反增。因?yàn)椋械臉I(yè)務(wù)都在主庫(kù)實(shí)現(xiàn),讀和寫,dump線程讀取并投遞binlog

解決方案:

  • 可不可以挪走一部分讀業(yè)務(wù)到從庫(kù),讀寫分離
  • 一主多從應(yīng)對(duì)讀多的業(yè)務(wù)需求,一旦發(fā)展成這個(gè)架構(gòu),dump線程投遞binlog的壓力更大
  • 多級(jí)主從,采用中間庫(kù)緩解主庫(kù)dump的壓力,會(huì)出現(xiàn)中間庫(kù)瓶頸的問(wèn)題,選擇blackhole引擎,看性能與安全的權(quán)衡
  • 雙主模型:緩解,數(shù)據(jù)一致性難保證
  • 環(huán)狀復(fù)制

分享到:
標(biāo)簽:架構(gòu) MySQL
用戶無(wú)頭像

網(wǎng)友整理

注冊(cè)時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會(huì)員

趕快注冊(cè)賬號(hào),推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過(guò)答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫(kù),初中,高中,大學(xué)四六

運(yùn)動(dòng)步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動(dòng)步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績(jī)?cè)u(píng)定2018-06-03

通用課目體育訓(xùn)練成績(jī)?cè)u(píng)定