91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

MySQL主從復制怎樣實現高可用

發布時間:2021-11-24 16:41:26 來源:億速云 閱讀:223 作者:柒染 欄目:云計算

MySQL主從復制怎樣實現高可用,相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。

1. MySQL主從復制實現高可用

1.1. 數據庫永遠是系統最脆弱的環節

  • 80%都是查詢

  • 緩存來保護數據庫:Redis、ElasticSearch

  • 數據庫系統要有一定的容災能力

  • 數據狀態化明顯

1.2. 數據庫的HA實現的方式

1.2.1. 高可以計算方式

  • MTTF:平均無故障時間

  • MTTR:平均維護時間

  • HA=MTTF/(MTTF+MTTR)* 100% (這就是常說的99.95%)

1.2.2. 數據庫高可用的三種方式

  • 主從(非對稱)

    master-slave,熱數據備份,從庫一般是用來實時備份,從機可以快速切換為主庫,讀寫分離(數據的一致性),從庫一般設置為只讀

    前端應用走緩存,后端應用Report走從庫查

  • 對稱方式

    兩個節點,互為主從,雙主模式(兩個數據庫的主鍵如果是自動生成需要初始設置成不一樣的)

    A-1001,1003,1005,B-1002,1004,1006

    雙主下數據同步一定要實時

  • 多機方式

    • MHA

    • MMM

    • MyCat(可以實現雙主機熱切)

1.2.3. 主從實現的邏輯

MySQL主從復制怎樣實現高可用

  • 資源:兩臺數據庫

  • Master會將修改記錄進binlog

  • Slave從主庫binlog讀取數據寫入relaylog

    • relaylog和binlog的格式一樣,可以用mysqlbinlog讀取relaylog

    • mysql> show relaylog events in 'relay-bin.000001';

    • binlog的postition方式

    • GTID方式:MySQL版本>=5.7

1.3. 配置主從復制

# 慢查詢開關
slow_query_log=ON
slow_query_log_file=/usr/local/slowlog/slow.log
slow_launch_time=4
long_query_time=3
# chown -R mysql:mysql /usr/local/slowlog/

binlog設置

server_id=213
log_bin=/usr/local/binlog/mysql-bin  # 只需要給名字前綴
binlog_format=row
expire_logs_days=3
max_binlog_size=200m
  • Slave服務器配置

# 慢查詢開關
slow_query_log=ON
slow_query_log_file=/usr/local/slowlog/slow.log
slow_launch_time=4
long_query_time=3
# chown -R mysql:mysql /usr/local/slowlog/

從庫的主從設置

server_id=214
relay_log=/usr/local/relaylog/relay-bin
relay_log_recovery=1 #確保完整性

read_only=on #從服務器只讀
skip_slave_start=on #slave重啟后不會自己啟動復制鏈路,需要手動啟動,建議手動啟動,好處是檢查無誤后啟動

master_info_repository=TABLE # 將主從服務的信息保存進表
relay_log_info_repository=TABLE # 將主從服務的信息保存進表
  • 主從指明不同步的數據庫

# Master
# 不同步數據庫
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
# 只同步某一些數據庫
binlog-do-db=icoding_admin

# Slave
# 復制哪些數據庫
replicate-do-db=icoding_admin
replicate-do-db=game
# 不復制哪些數據庫
replicate-ignore-db=mysql
replicate-ignore-db=information_schema
  • 先Master上建立授權賬號

# Master授權給slave
mysql> use mysql;
mysql> grant replication slave on *.* to 'synuser'@'192.168.0.214' identified by '123456';
mysql> flush privileges;
  • 初始化Slave數據

# Master和Slave的數據庫版本要一致,Master<=Slave
mysqldump -uroot -p123456 -h227.0.0.1 --flush-logs --master-data=2 --routines --triggers --events --single-transaction --databases icoding_admin > mydb.sql
#CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000004', MASTER_LOG_POS=154; 就用導出的日志pos
  • 啟動復制鏈路

# 在slave上執行
mysql> 
change master to master_host='192.168.0.213',
master_port=3306,
master_user='synuser',
master_password='123456',
master_log_file='mysql-bin.000004',
master_log_pos=154;
  • 注意事項

主從復制的時候主從數據庫的UUID不能一樣,如果是鏡像方式,啟動前將UUID文件刪除,會重新創建
cd /var/lib/mysql
cat auto.cnf  # 將他刪除
server-uuid=890980d9-b072-11ea-8ab8-00163e03668d
  • 啟動主從復制

# show slave status \G 可以查看主從復制的狀態和日志錯誤
# 啟動slave
mysql> start slave;
# 停止slave
mysql> stop slave;

作業1:搭建一個雙主的結構

  • 使用GTID方式進行復制鏈路

# 默認GTID是不開啟的
# 如果開啟以下操作不可用
# create table ..... select * from xxx; 不可用
# 在一個事務里不能創建和刪除表
# 在一個事務里更新innodb引擎和myisam不可用
  • 無意中刪除了一個數據,可以做延時從庫

# 從庫做備份就無法做到數據的及時恢復
# 讓我的從庫做到延時同步
mysql> stop slave;
mysql> change master to master_delay=10; # 延時10秒
mysql> start slave;
mysql> show slave status \G;

master(實時slave,延時slave)

看完上述內容,你們掌握MySQL主從復制怎樣實現高可用的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

当阳市| 波密县| 永城市| 上饶市| 龙游县| 正宁县| 当雄县| 漠河县| 谷城县| 满洲里市| 壶关县| 临泽县| 大洼县| 汉阴县| 保定市| 石渠县| 金湖县| 扎鲁特旗| 平和县| 扬州市| 义乌市| 宜丰县| 陇川县| 新津县| 驻马店市| 天全县| 东方市| 定日县| 永善县| 紫阳县| 会东县| 迭部县| 澄迈县| 灵宝市| 新和县| 菏泽市| 临洮县| 乌兰察布市| 江山市| 东兰县| 阳原县|