主頁 > 資料庫 > mysql主從復制

mysql主從復制

2020-09-22 13:49:22 資料庫

一.主從復制簡介

2015年5月28日11時,12小時后恢復,損失:平均每小時106.48W$

1)高可用
2)輔助備份
3)分擔負載

復制是 MySQL 的一項功能,允許服務器將更改從一個實體復制到另一個實體,

1)主服務器將所有資料和結構更改記錄到二進制日志中,
2)從屬服務器從主服務器請求該二進制日志并在本地應用其內容,
3)IO:請求主庫,獲取上一次執行過的新的事件,并存放到relaylog
4)SQL:從relaylog中將sql陳述句翻譯給從庫執行

二.主從復制原理

主從復制的前提(保證資料的一致性,最好打點備份,寫入的位置點為打點備份的位置點或者cat /application/mysql/data/relay-log.info )

1)兩臺或兩臺以上的資料庫實體
2)主庫要開啟二進制日志
3)主庫要有復制用戶
4)主庫的server_id和從庫不同
5)從庫需要在開啟復制功能前,要獲取到主庫之前的資料(主庫備份,并且記錄binlog當時位置)
6)從庫在第一次開啟主從復制時,時必須獲知主庫:ip,port,user,password,logfile,pos


IP:10.0.0.51
Port:3306
User:rep
Password:oldboy123
logFile:mysql-bin.000002
Pos:120


7)從庫要開啟相關執行緒:IO、SQL
8)從庫需要記錄復制相關用戶資訊,還應該記錄到上次已經從主庫請求到哪個二進制日志
9)從庫請求過來的binlog,首先要存下來,并且執行binlog,執行過的資訊保存下來

主從復制涉及到的檔案和執行緒

主庫:

1)主庫binlog:記錄主庫發生過的修改事件
2)dump thread:給從庫傳送(TP)二進制日志執行緒

從庫:

1)relay-log(中繼日志):存盤所有主庫TP過來的binlog事件
2)master.info:存盤復制用戶資訊,上次請求到的主庫binlog位置點
3)IO thread:接收主庫發來的binlog日志,也是從庫請求主庫的執行緒
4)SQL thread:執行主庫TP過來的日志

原理

1)通過change master to陳述句告訴從庫主庫的ip,port,user,password,file,pos
2)從庫通過start slave命令開啟復制必要的IO執行緒和SQL執行緒
3)從庫通過IO執行緒拿著change master to用戶密碼相關資訊,連接主庫,驗證合法性
4)從庫連接成功后,會根據binlog的pos問主庫,有沒有比這個更新的
5)主庫接收到從庫請求后,比較一下binlog資訊,如果有就將最新資料通過dump執行緒給從庫IO執行緒
6)從庫通過IO執行緒接收到主庫發來的binlog事件,存盤到TCP/IP快取中,并回傳ACK更新master.info
7)將TCP/IP快取中的內容存到relay-log中
8)SQL執行緒讀取relay-log.info,讀取到上次已經執行過的relay-log位置點,繼續執行后續的relay-log日志,執行完成后,更新relay-log.info

主從復制搭建實戰

主庫操作:

1)修改組態檔

#編輯mysql組態檔
[root@db01 ~]# vim /etc/my.cnf
#在mysqld標簽下配置
[mysqld]
#主庫server-id為1,從庫不等于1
server_id =1
#開啟binlog日志
log_bin=mysql-bin

2)創建主從復制用戶

#登錄資料庫
[root@db01 ~]# mysql -uroot -poldboy123
#創建rep用戶
mysql> grant replication slave on *.* to rep@'10.0.0.%' identified by 'oldboy123';#replication全域,不能給單庫授權

從庫操作:

1)修改組態檔

#修改db02組態檔
[root@db02 ~]# vim /etc/my.cnf
#在mysqld標簽下配置
[mysqld]
#主庫server-id為1,從庫不等于1
server_id =5
#重啟mysql
[root@db02 ~]# /etc/init.d/mysqld restart
#記錄主庫binlog及位置點(主庫沒資料)
mysql> show master status;
#登陸資料庫
[root@db02 ~]# mysql -uroot -poldboy123
#執行change master to 陳述句
change master to
     master_host='10.0.0.51',
     master_user='rep',
     master_password='123',
     master_log_file='mysql-bin.000004',
     master_log_pos=68192
	 master_delay=

#主庫有資料時:找起始位置點
1.邏輯備份 zcat +備份檔案 |head 25  或者查看relay-log.info
2.物理備份 
[root@db01 script]# cat  /backup/full_2019-12-12-00/xtrabackup_binlog_info
mysql-bin.000001	15724

master_log_file=
master_log_pos=

#恢復資料,找截止點
邏輯:mysqlbinlog --base64-output=decode-rows -vvv +mysql-bin.000001的絕對路徑
物理:合并,--copy-back 先備份.在洗掉data

四.主從復制基本故障處理

IO執行緒

從庫上檢測

1.網路不通

ping 10.0.0.51
1.硬體層.路由,交換機,網路設備
2.網路
3.安全組規則
4.差錯網線口

2.埠不通

telnet 10.0.0.51 3306
yum install -y tcping
tcping 172.16.1.51  3306

mysql -urep -p1 -h172.16.1.51
原因:1.防火墻 2.selinux
解決:
1.針對埠開放firewalld-cmd --add-service=mysql --add-port=3306/tcp 2.關閉selinux 

3.用戶名錯誤

4.密碼錯誤

5.反向決議

skip_name_resolve

sql執行緒是NO

1.從庫有該資料,主庫要創建.操作物件已存在

從庫:a庫

主庫:要創建a庫

解決辦法: set global sql_slave_skip_counter=1 (生產環境不能交戶)

2.主庫有該資料,從庫沒有,操作物件不存在(insert update delete drop truncate alter)

解決辦法:保證資料一致性,

連接主庫

1)user password ip port
2)網路:不通,延時高,防火墻

請求binlog

1)binlog不存在或者損壞

更新relay-log和master.info

SQL執行緒
1)relay-log出現問題
2)從庫做寫入了

  • 操作物件已存在(create)
  • 操作物件不存在(insert update delete drop truncate alter)
  • 約束問題、資料型別、列屬性

處理方法一:

#臨時停止同步
mysql> stop slave;
#將同步指標向下移動一個(可重復操作)
mysql> set global sql_slave_skip_counter=1;
#開啟同步
mysql> start slave;

處理方法二:

#編輯組態檔
[root@db01 ~]# vim /etc/my.cnf
#在[mysqld]標簽下添加以下引數
slave-skip-errors=1032,1062,1007

但是以上操作都是有風險存在的

處理方法三:

1)重新備份資料庫,恢復到從庫
2)給從庫設定為只讀

#在命令列臨時設定
set global read_only=1;
#在組態檔中永久生效
read_only=1

#grant all 中有(supper),可以創建,只能給其它權限,

五.延時從庫

普通的主從復制可能存在不足

1)邏輯損壞怎么辦?
2)不能保證主庫的操作,從庫一定能做
3)高可用?自動failover?
4)過濾復制

企業中一般會延時3-6小時

延時從庫配置方法

#停止主從
mysql>stop slave;
#設定延時為180秒
mysql>CHANGE MASTER TO MASTER_DELAY = 180;
#開啟主從
mysql>start slave;
#查看狀態
mysql> show slave status \G
SQL_Delay: 60
3.延時從庫停止方法
#停止主從
mysql> stop slave;
#設定延時為0,取消延時
mysql> CHANGE MASTER TO MASTER_DELAY = 0;
#開啟主從
mysql> start slave;

沒有主從

1.修改主庫從庫的組態檔
主:server_id
開啟:binlog
從庫:配置server_id
2.保證從庫和主庫的資料一致
3.執行chang master to
master_host='',
master_user='',
master_password='',
master_log_file='',
master_log_pos= ,#找尋全量備份的點
master_delay= ;

思考問題:

總資料量級500G,正常備份去恢復需要1.5-2小時
1)配置延時3600秒

mysql>CHANGE MASTER TO MASTER_DELAY = 3600;

2)主庫

drop database db;

3)怎么利用延時從庫,恢復資料?

提示:
1、從庫relaylog存放在datadir目錄下
2、mysqlbinlog 可以截取relaylog內容
3、show relay log events in 'db01-relay-bin.000001';

處理的思路:1)停止SQL執行緒

mysql> stop slave sql_thread;

2)截取relaylog到誤洗掉之前點

  • relay-log.info 獲取到上次運行到的位置點,作為恢復起點

    1)停止SQL執行緒
    mysql> stop slave sql_thread;
    2)截取relaylog到誤洗掉之前點
    relay-log.info 獲取到上次運行到的位置點,作為恢復起點
    
    全備
    mysqldump -uroot -p1 -A |gzip>/tmp/full1.sql
    起始點
    [root@db04 data]# cat relay-log.info 
    7
    ./db04-relay-bin.000005
    283
    mysql-bin.000005
    
    截取截止點relay_log 檔案
    [root@db04 data]# mysqlbinlog -uroot -p1 --start-position=59503 --stop-position=59691 db04-relay-bin.000002 >/tmp/yanchi3.sql
    
    將資料匯入生產環境
    先導全備,在導增備
    

六.半同步復制

從MYSQL5.5開始,支持半自動復制,之前版本的MySQL Replication都是異步(asynchronous)的,主庫在執行完一些事務后,是不會管備庫的進度的,如果備庫不幸落后,而更不幸的是主庫此時又出現Crash(例如宕機),這時備庫中的資料就是不完整的,簡而言之,在主庫發生故障的時候,我們無法使用備庫來繼續提供資料一致的服務了,

半同步復制(Semi synchronous Replication)則一定程度上保證提交的事務已經傳給了至少一個備庫,
出發點是保證主從資料一致性問題,安全的考慮,


5.5 出現概念,但是不建議使用,性能太差
5.6出現group commit 組提交功能,來提升開啟半同步復制的性能
5.7更加完善了,在group commit基礎上出現了MGR
5.7的增強半同步復制的新特性:after commit; after sync;


半同步復制開啟方法(等待ack回傳時,主庫處于鎖表狀態)

1)安裝(主庫)

#登錄資料庫
[root@db01 ~]# mysql -uroot -poldboy123
#查看是否有動態支持
mysql> show global variables like 'have_dynamic_loading';
#安裝自帶插件
mysql> INSTALL PLUGIN rpl_semi_sync_master SONAME'semisync_master.so';
#啟動插件
mysql> SET GLOBAL rpl_semi_sync_master_enabled = 1;
#設定超時
mysql> SET GLOBAL rpl_semi_sync_master_timeout = 1000;
#修改組態檔
[root@db01 ~]# vim /etc/my.cnf
#在[mysqld]標簽下添加如下內容(不用重啟庫)
[mysqld]
rpl_semi_sync_master_enabled=1
rpl_semi_sync_master_timeout=1000
檢查安裝:
mysql> show variables like'rpl%';
mysql> show global status like 'rpl_semi%';

2)安裝(從庫)

#登錄資料庫
[root@mysql-db02 ~]# mysql -uroot -poldboy123
#安裝slave半同步插件
mysql>  INSTALL PLUGIN rpl_semi_sync_slave SONAME'semisync_slave.so';
#啟動插件
mysql> SET GLOBAL rpl_semi_sync_slave_enabled = 1;
#重啟io執行緒使其生效
mysql> stop slave io_thread;
mysql> start slave io_thread;
#編輯組態檔(不需要重啟資料庫)
[root@mysql-db02 ~]# vim /etc/my.cnf
#在[mysqld]標簽下添加如下內容
[mysqld]
rpl_semi_sync_slave_enabled =1

注:相關引數說明
rpl_semi_sync_master_timeout=milliseconds
設定此引數值(ms),為了防止半同步復制在沒有收到確認的情況下發生堵塞,如果Master在超時之前沒有收到任何確認,將恢復到正常的異步復制,并繼續執行沒有半同步的復制操作,

rpl_semi_sync_master_wait_no_slave={ON|OFF}
如果一個事務被提交,但Master沒有任何Slave的連接,這時不可能將事務發送到其它地方保護起來,默認情況下,Master會在時間限制范圍內繼續等待Slave的連接,并確認該事務已經被正確的寫到磁盤上,
可以使用此引數選項關閉這種行為,在這種情況下,如果沒有Slave連接,Master就會恢復到異步復制,


測驗半同步

#創建兩個資料庫,test1和test2
mysql> create database test1;
Query OK, 1 row affected (0.04 sec)
mysql> create database test2;
Query OK, 1 row affected (0.00 sec)
#查看復制狀態
mysql> show global status like 'rpl_semi%';
+--------------------------------------------+-------+
| Variable_name                              | Value |
+--------------------------------------------+-------+
| Rpl_semi_sync_master_clients               | 1     |
| Rpl_semi_sync_master_net_avg_wait_time     | 768   |
| Rpl_semi_sync_master_net_wait_time         | 1497  |
| Rpl_semi_sync_master_net_waits             | 2     |
| Rpl_semi_sync_master_no_times              | 0     |
| Rpl_semi_sync_master_no_tx                 | 0     |
| Rpl_semi_sync_master_status                | ON    |
| Rpl_semi_sync_master_timefunc_failures     | 0     |
| Rpl_semi_sync_master_tx_avg_wait_time      | 884   |
| Rpl_semi_sync_master_tx_wait_time          | 1769  |
| Rpl_semi_sync_master_tx_waits              | 2     |
| Rpl_semi_sync_master_wait_pos_backtraverse | 0     |
| Rpl_semi_sync_master_wait_sessions         | 0     |
#此行顯示2,表示剛才創建的兩個庫執行了半同步
| Rpl_semi_sync_master_yes_tx                | 2     | 
+--------------------------------------------+-------+
14 rows in set (0.06 sec)
#從庫查看
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test               |
| test1              |
| test2              |
+--------------------+
#關閉半同步(1:開啟 0:關閉)
mysql> SET GLOBAL rpl_semi_sync_master_enabled = 0;
#查看半同步狀態
mysql> show global status like 'rpl_semi%';
+--------------------------------------------+-------+
| Variable_name                              | Value |
+--------------------------------------------+-------+
| Rpl_semi_sync_master_clients               | 1     |
| Rpl_semi_sync_master_net_avg_wait_time     | 768   |
| Rpl_semi_sync_master_net_wait_time         | 1497  |
| Rpl_semi_sync_master_net_waits             | 2     |
| Rpl_semi_sync_master_no_times              | 0     |
| Rpl_semi_sync_master_no_tx                 | 0     |
| Rpl_semi_sync_master_status                | OFF   | #狀態為關閉
| Rpl_semi_sync_master_timefunc_failures     | 0     |
| Rpl_semi_sync_master_tx_avg_wait_time      | 884   |
| Rpl_semi_sync_master_tx_wait_time          | 1769  |
| Rpl_semi_sync_master_tx_waits              | 2     |
| Rpl_semi_sync_master_wait_pos_backtraverse | 0     |
| Rpl_semi_sync_master_wait_sessions         | 0     |
| Rpl_semi_sync_master_yes_tx                | 2     | 
+--------------------------------------------+-------+
14 rows in set (0.00 sec)

#再一次創建兩個庫
mysql> create database test3;
Query OK, 1 row affected (0.00 sec)
mysql> create database test4;
Query OK, 1 row affected (0.00 sec)

#再一次查看半同步狀態
mysql> show global status like 'rpl_semi%';
+--------------------------------------------+-------+
| Variable_name                              | Value |
+--------------------------------------------+-------+
| Rpl_semi_sync_master_clients               | 1     |
| Rpl_semi_sync_master_net_avg_wait_time     | 768   |
| Rpl_semi_sync_master_net_wait_time         | 1497  |
| Rpl_semi_sync_master_net_waits             | 2     |
| Rpl_semi_sync_master_no_times              | 0     |
| Rpl_semi_sync_master_no_tx                 | 0     |
| Rpl_semi_sync_master_status                | OFF   |
| Rpl_semi_sync_master_timefunc_failures     | 0     |
| Rpl_semi_sync_master_tx_avg_wait_time      | 884   |
| Rpl_semi_sync_master_tx_wait_time          | 1769  |
| Rpl_semi_sync_master_tx_waits              | 2     |
| Rpl_semi_sync_master_wait_pos_backtraverse | 0     |
| Rpl_semi_sync_master_wait_sessions         | 0     |
#此行還是顯示2,則證明,剛才的那兩條并沒有執行半同步否則應該是4
| Rpl_semi_sync_master_yes_tx                | 2     | 
+--------------------------------------------+-------+
14 rows in set (0.00 sec)
注:不難發現,在查詢半同步狀態是,開啟半同步,查詢會有延遲時間,關閉之后則沒有

七.過濾復制

主庫:

白名單:只記錄白名單中列出的庫的二進制日志

  • binlog-do-db

黑名單:不記錄黑名單列出的庫的二進制日志

  • binlog-ignore-db

從庫:

白名單:只執行白名單中列出的庫或者表的中繼日志

  • --replicate-do-db=test
  • --replicate-do-table=test.t1
  • --replicate-wild-do-table=test.t*#支持通配符

黑名單:不執行黑名單中列出的庫或者表的中繼日志

  • --replicate-ignore-db
  • --replicate-ignore-table
  • --replicate-wild-ignore-table

復制過濾配置:

[root@db01 data]# vim /data/3307/my.cnf 
#在[mysqld]標簽下添加
replicate-do-db=world
#關閉MySQL
mysqladmin -S /data/3307/mysql.sock  shutdown
#啟動MySQL
mysqld_safe --defaults-file=/data/3307/my.cnf &

測驗復制過濾:

第一次測驗:

1)主庫:

[root@db02 ~]# mysql -uroot -p123 -S /data/3308/mysql.sock 
mysql> use world
mysql> create table t1(id int);

2)從庫查看結果:

[root@db02 ~]# mysql -uroot -p123 -S /data/3307/mysql.sock 
mysql> use world
mysql> show tables;

第二次測驗:

1)主庫:

[root@db02 ~]# mysql -uroot -p123 -S /data/3308/mysql.sock 
mysql> use test
mysql> create table tb1(id int); 

2)從庫查看結果:

[root@db02 ~]# mysql -uroot -p123 -S /data/3307/mysql.sock 
mysql> use test
mysql> show tables;

過濾復制小結

  • 在主庫上設定白名單:只記錄白名單設定的庫和表,及相關的sql陳述句到binlog中
  • 在主庫上設定黑名單:不記錄黑名單設定的庫和表,及相關的sql陳述句到binlog中
  • 在從庫上設定白名單:IO執行緒會拿所有的binlog.但是sql執行緒只執行白名單設定的庫或者表相關的sql陳述句
  • 再從庫上設定黑名單:IO執行緒會拿 所有的binlog,但是sql執行緒不執行黑名單設定的庫或者表相關的sql陳述句

轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/105043.html

標籤:MySQL

上一篇:MySQL入門——Linux下安裝后的組態檔

下一篇:在Python中使用MySQL--PyMySQL的基本使用

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • GPU虛擬機創建時間深度優化

    **?桔妹導讀:**GPU虛擬機實體創建速度慢是公有云面臨的普遍問題,由于通常情況下創建虛擬機屬于低頻操作而未引起業界的重視,實際生產中還是存在對GPU實體創建時間有苛刻要求的業務場景。本文將介紹滴滴云在解決該問題時的思路、方法、并展示最終的優化成果。 從公有云服務商那里購買過虛擬主機的資深用戶,一 ......

    uj5u.com 2020-09-10 06:09:13 more
  • 可編程網卡芯片在滴滴云網路的應用實踐

    **?桔妹導讀:**隨著云規模不斷擴大以及業務層面對延遲、帶寬的要求越來越高,采用DPDK 加速網路報文處理的方式在橫向縱向擴展都出現了局限性。可編程芯片成為業界熱點。本文主要講述了可編程網卡芯片在滴滴云網路中的應用實踐,遇到的問題、帶來的收益以及開源社區貢獻。 #1. 資料中心面臨的問題 隨著滴滴 ......

    uj5u.com 2020-09-10 06:10:21 more
  • 滴滴資料通道服務演進之路

    **?桔妹導讀:**滴滴資料通道引擎承載著全公司的資料同步,為下游實時和離線場景提供了必不可少的源資料。隨著任務量的不斷增加,資料通道的整體架構也隨之發生改變。本文介紹了滴滴資料通道的發展歷程,遇到的問題以及今后的規劃。 #1. 背景 資料,對于任何一家互聯網公司來說都是非常重要的資產,公司的大資料 ......

    uj5u.com 2020-09-10 06:11:05 more
  • 滴滴AI Labs斬獲國際機器翻譯大賽中譯英方向世界第三

    **桔妹導讀:**深耕人工智能領域,致力于探索AI讓出行更美好的滴滴AI Labs再次斬獲國際大獎,這次獲獎的專案是什么呢?一起來看看詳細報道吧! 近日,由國際計算語言學協會ACL(The Association for Computational Linguistics)舉辦的世界最具影響力的機器 ......

    uj5u.com 2020-09-10 06:11:29 more
  • MPP (Massively Parallel Processing)大規模并行處理

    1、什么是mpp? MPP (Massively Parallel Processing),即大規模并行處理,在資料庫非共享集群中,每個節點都有獨立的磁盤存盤系統和記憶體系統,業務資料根據資料庫模型和應用特點劃分到各個節點上,每臺資料節點通過專用網路或者商業通用網路互相連接,彼此協同計算,作為整體提供 ......

    uj5u.com 2020-09-10 06:11:41 more
  • 滴滴資料倉庫指標體系建設實踐

    **桔妹導讀:**指標體系是什么?如何使用OSM模型和AARRR模型搭建指標體系?如何統一流程、規范化、工具化管理指標體系?本文會對建設的方法論結合滴滴資料指標體系建設實踐進行解答分析。 #1. 什么是指標體系 ##1.1 指標體系定義 指標體系是將零散單點的具有相互聯系的指標,系統化的組織起來,通 ......

    uj5u.com 2020-09-10 06:12:52 more
  • 單表千萬行資料庫 LIKE 搜索優化手記

    我們經常在資料庫中使用 LIKE 運算子來完成對資料的模糊搜索,LIKE 運算子用于在 WHERE 子句中搜索列中的指定模式。 如果需要查找客戶表中所有姓氏是“張”的資料,可以使用下面的 SQL 陳述句: SELECT * FROM Customer WHERE Name LIKE '張%' 如果需要 ......

    uj5u.com 2020-09-10 06:13:25 more
  • 滴滴Ceph分布式存盤系統優化之鎖優化

    **桔妹導讀:**Ceph是國際知名的開源分布式存盤系統,在工業界和學術界都有著重要的影響。Ceph的架構和演算法設計發表在國際系統領域頂級會議OSDI、SOSP、SC等上。Ceph社區得到Red Hat、SUSE、Intel等大公司的大力支持。Ceph是國際云計算領域應用最廣泛的開源分布式存盤系統, ......

    uj5u.com 2020-09-10 06:14:51 more
  • es~通過ElasticsearchTemplate進行聚合~嵌套聚合

    之前寫過《es~通過ElasticsearchTemplate進行聚合操作》的文章,這一次主要寫一個嵌套的聚合,例如先對sex集合,再對desc聚合,最后再對age求和,共三層嵌套。 Aggregations的部分特性類似于SQL語言中的group by,avg,sum等函式,Aggregation ......

    uj5u.com 2020-09-10 06:14:59 more
  • 爬蟲日志監控 -- Elastc Stack(ELK)部署

    傻瓜式部署,只需替換IP與用戶 導讀: 現ELK四大組件分別為:Elasticsearch(核心)、logstash(處理)、filebeat(采集)、kibana(可視化) 下載均在https://www.elastic.co/cn/downloads/下tar包,各組件版本最好一致,配合fdm會 ......

    uj5u.com 2020-09-10 06:15:05 more
最新发布
  • day02-2-商鋪查詢快取

    功能02-商鋪查詢快取 3.商鋪詳情快取查詢 3.1什么是快取? 快取就是資料交換的緩沖區(稱作Cache),是存盤資料的臨時地方,一般讀寫性能較高。 快取的作用: 降低后端負載 提高讀寫效率,降低回應時間 快取的成本: 資料一致性成本 代碼維護成本 運維成本 3.2需求說明 如下,當我們點擊商店詳 ......

    uj5u.com 2023-04-20 08:33:24 more
  • MySQL中binlog備份腳本分享

    關于MySQL的二進制日志(binlog),我們都知道二進制日志(binlog)非常重要,尤其當你需要point to point災難恢復的時侯,所以我們要對其進行備份。關于二進制日志(binlog)的備份,可以基于flush logs方式先切換binlog,然后拷貝&壓縮到到遠程服務器或本地服務器 ......

    uj5u.com 2023-04-20 08:28:06 more
  • day02-短信登錄

    功能實作02 2.功能01-短信登錄 2.1基于Session實作登錄 2.1.1思路分析 2.1.2代碼實作 2.1.2.1發送短信驗證碼 發送短信驗證碼: 發送驗證碼的介面為:http://127.0.0.1:8080/api/user/code?phone=xxxxx<手機號> 請求方式:PO ......

    uj5u.com 2023-04-20 08:27:27 more
  • 快取與資料庫雙寫一致性幾種策略分析

    本文將對幾種快取與資料庫保證資料一致性的使用方式進行分析。為保證高并發性能,以下分析場景不考慮執行的原子性及加鎖等強一致性要求的場景,僅追求最終一致性。 ......

    uj5u.com 2023-04-20 08:26:48 more
  • sql陳述句優化

    問題查找及措施 問題查找 需要找到具體的代碼,對其進行一對一優化,而非一直把關注點放在服務器和sql平臺 降低簡化每個事務中處理的問題,盡量不要讓一個事務拖太長的時間 例如檔案上傳時,應將檔案上傳這一步放在事務外面 微軟建議 4.啟動sql定時執行計劃 怎么啟動sqlserver代理服務-百度經驗 ......

    uj5u.com 2023-04-20 08:26:35 more
  • 云時代,MySQL到ClickHouse資料同步產品對比推薦

    ClickHouse 在執行分析查詢時的速度優勢很好的彌補了MySQL的不足,但是對于很多開發者和DBA來說,如何將MySQL穩定、高效、簡單的同步到 ClickHouse 卻很困難。本文對比了 NineData、MaterializeMySQL(ClickHouse自帶)、Bifrost 三款產品... ......

    uj5u.com 2023-04-20 08:26:29 more
  • sql陳述句優化

    問題查找及措施 問題查找 需要找到具體的代碼,對其進行一對一優化,而非一直把關注點放在服務器和sql平臺 降低簡化每個事務中處理的問題,盡量不要讓一個事務拖太長的時間 例如檔案上傳時,應將檔案上傳這一步放在事務外面 微軟建議 4.啟動sql定時執行計劃 怎么啟動sqlserver代理服務-百度經驗 ......

    uj5u.com 2023-04-20 08:25:13 more
  • Redis 報”OutOfDirectMemoryError“(堆外記憶體溢位)

    Redis 報錯“OutOfDirectMemoryError(堆外記憶體溢位) ”問題如下: 一、報錯資訊: 使用 Redis 的業務介面 ,產生 OutOfDirectMemoryError(堆外記憶體溢位),如圖: 格式化后的報錯資訊: { "timestamp": "2023-04-17 22: ......

    uj5u.com 2023-04-20 08:24:54 more
  • day02-2-商鋪查詢快取

    功能02-商鋪查詢快取 3.商鋪詳情快取查詢 3.1什么是快取? 快取就是資料交換的緩沖區(稱作Cache),是存盤資料的臨時地方,一般讀寫性能較高。 快取的作用: 降低后端負載 提高讀寫效率,降低回應時間 快取的成本: 資料一致性成本 代碼維護成本 運維成本 3.2需求說明 如下,當我們點擊商店詳 ......

    uj5u.com 2023-04-20 08:24:03 more
  • day02-短信登錄

    功能實作02 2.功能01-短信登錄 2.1基于Session實作登錄 2.1.1思路分析 2.1.2代碼實作 2.1.2.1發送短信驗證碼 發送短信驗證碼: 發送驗證碼的介面為:http://127.0.0.1:8080/api/user/code?phone=xxxxx<手機號> 請求方式:PO ......

    uj5u.com 2023-04-20 08:23:11 more