国产精品色哟哟_男男激情3p互攻_色偷偷影院_和女同学厕所做了四次

當前位置: 首頁 / 技術干貨 / 正文
MySQL主主復制的實現

2023-02-02

   master mysql

  主主復制介紹

  MySQL的主從復制架構下,可以實現讀寫分離、業務分流,來降低單個數據庫的壓力。但是這種模式下會存在單點故障的問題,即如果主庫節點宕機的情況下,對從庫進行的操作并不會同步到主庫中。這個數據庫也就無效了。因此有的時候我們會搭建主主復制的架構,也叫做雙主架構。

  雙主架構的實現,是在主從架構的基礎之上的。將兩臺MySQL之間護衛彼此的主庫,同時又互為對方的從庫。這樣的實施方案下,既能做到分流,也能解決單點故障的問題。因為任何的一臺節點故障,另外的一臺都可以繼續提供服務。

  主庫1配置

  我們需要編輯MySQL配置文件,這個配置文件在不同的操作系統中的位置和名字都不同,需要根據自己的操作系統來查找這個文件:

  Windows: C:\ProgramData\MySQL\MySQL Server 8.0\my.ini

  Linux: /etc/my.cnf

  macOS:

  dmg安裝: /etc/my.cnf

  homebrew安裝:

  Intel CPU: /usr/local/homebrew/etc/my.cnf

  AppleSilicon CPU: /opt/homebrew/etc/my.cnf

  # 在[mysqld]的下方添加或修改如下屬性:

  # 服務節點的唯一標識,需要給集群中的每個服務分配一個單獨的ID

  server-id=101

  # 打開binlog日志,并指定文件名

  log_bin=master-101-bin

  # binlog日志文件

  log_bin-index=master-101-bin.index

  # 打開relaylog日志

  relay_log=master-101-relay-bin

  relay_log-index=master-101-relay-bin.index

  skip-slave-start

  # 防止兩個主庫中同時操作自增的字段導致字段沖突

  auto_increment_increment=2 # 自增步長,一般有幾個MySQL就設置為幾

  auto_increment_offset=1 # 自增起始值

  修改完成之后,需要重啟MySQL服務。

  為root用戶分配replication slave的權限:

  # 登錄到主庫

  mysql -uroot -p

  # 為root用戶分配權限

  # MySQL8中,需要先添加 'root'@'%' 這個用戶

  # create user 'root'@'%' identified by '123456'

  mysql> grant replication slave on *.* to 'root'@'%';

  mysql> flush privileges;

  主庫2配置

  我們需要編輯MySQL配置文件,這個配置文件在不同的操作系統中的位置和名字都不同,需要根據自己的操作系統來查找這個文件:

  Windows: C:\ProgramData\MySQL\MySQL Server 8.0\my.ini

  Linux: /etc/my.cnf

  macOS:

  dmg安裝: /etc/my.cnf

  homebrew安裝:

  Intel CPU: /usr/local/homebrew/etc/my.cnf

  AppleSilicon CPU: /opt/homebrew/etc/my.cnf

  # 在[mysqld]的下方添加或修改如下屬性:

  # 服務節點的唯一標識,需要給集群中的每個服務分配一個單獨的ID

  server-id=102

  # 打開binlog日志,并指定文件名

  log_bin=master-102-bin

  # binlog日志文件

  log_bin-index=master-102-bin.index

  # 打開relaylog日志

  relay_log=master-102-relay-bin

  relay_log-index=master-102-relay-bin.index

  skip-slave-start

  # 防止兩個主庫中同時操作自增的字段導致字段沖突

  auto_increment_increment=2 # 自增步長,一般有幾個MySQL就設置為幾

  auto_increment_offset=2 # 自增起始值

  修改完成之后,需要重啟MySQL服務。

  為root用戶分配replication slave的權限:

  # 登錄到主庫

  mysql -uroot -p

  # 為root用戶分配權限

  # MySQL8中,需要先添加 'root'@'%' 這個用戶

  # create user 'root'@'%' identified by '123456'

  mysql> grant replication slave on *.* to 'root'@'%';

  mysql> flush privileges;

  設置同步

  查看master1的binlog

  +-----------------------+----------+--------------+------------------+-------------------+

  | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |

  +-----------------------+----------+--------------+------------------+-------------------+

  | master-101-bin.000001 | 156 | | | |

  +-----------------------+----------+--------------+------------------+-------------------+

  設置master2同步master1

  # 登錄從庫

  mysql -uroot -p

  # 設置同步主節點

  change master to

  master_host='192.168.10.101',

  master_port=3306,

  master_user='root',

  master_password='123456',

  master_log_file='master-101-bin.000001',

  master_log_pos=156;

  查看master2的binlog

  +-----------------------+----------+--------------+------------------+-------------------+

  | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |

  +-----------------------+----------+--------------+------------------+-------------------+

  | master-102-bin.000001 | 553 | | | |

  +-----------------------+----------+--------------+------------------+-------------------+

  設置master1同步master2

  # 登錄從庫

  mysql -uroot -p

  # 設置同步主節點

  change master to

  master_host='192.168.10.102',

  master_port=3306,

  master_user='root',

  master_password='123456',

  master_log_file='master-102-bin.000001',

  master_log_pos=553;

  開啟同步

  # 分別啟動兩個數據庫的slave

  start slave

  # 如果出現錯誤:Slave failed to initialize relay log info structure from the repository

  # 說明之前存在主從模式下的relay log,使用reset slave命令清除即可

好程序員公眾號

  • · 剖析行業發展趨勢
  • · 匯聚企業項目源碼

好程序員開班動態

More+
  • HTML5大前端 <高端班>

    開班時間:2021-04-12(深圳)

    開班盛況

    開班時間:2021-05-17(北京)

    開班盛況
  • 大數據+人工智能 <高端班>

    開班時間:2021-03-22(杭州)

    開班盛況

    開班時間:2021-04-26(北京)

    開班盛況
  • JavaEE分布式開發 <高端班>

    開班時間:2021-05-10(北京)

    開班盛況

    開班時間:2021-02-22(北京)

    開班盛況
  • Python人工智能+數據分析 <高端班>

    開班時間:2021-07-12(北京)

    預約報名

    開班時間:2020-09-21(上海)

    開班盛況
  • 云計算開發 <高端班>

    開班時間:2021-07-12(北京)

    預約報名

    開班時間:2019-07-22(北京)

    開班盛況
IT培訓IT培訓
在線咨詢
IT培訓IT培訓
試聽
IT培訓IT培訓
入學教程
IT培訓IT培訓
立即報名
IT培訓

Copyright 2011-2023 北京千鋒互聯科技有限公司 .All Right 京ICP備12003911號-5 京公網安備 11010802035720號