MySQL雙主複製

来源:http://www.cnblogs.com/netonline/archive/2017/09/28/7606704.html
-Advertisement-
Play Games

原文發表於cu:2017-06-12 本文簡單介紹MySQL雙主複製原理及1個簡單是雙主複製驗證。 一.MySQL雙主複製原理 1. 雙主複製原理 master-master複製的兩台伺服器,既是master,又是另一臺伺服器的slave,本質上互為主從。 二.驗證環境 1. 操作系統 CentOS ...


原文發表於cu2017-06-12

本文簡單介紹MySQL雙主複製原理及1個簡單是雙主複製驗證。

一.MySQL雙主複製原理

1. 雙主複製原理

master-master複製的兩台伺服器,既是master,又是另一臺伺服器的slave本質上互為主從。

二.驗證環境

1. 操作系統

CentOS-6.7-x86_64

2. MySQL版本

MySQL版本是5.6.36:https://cdn.mysql.com//Downloads/MySQL-5.6/mysql-5.6.36.tar.gz

3. 拓撲圖

  1. 採用VMware ESXi虛擬出的2台伺服器master/backup,地址10.11.4.196/197;
  2. MySQL已安裝並配置完成,可參考:http://www.cnblogs.com/netonline/p/7327409.html中的MySQL部分;
  3. 主從配置可參考:http://www.cnblogs.com/netonline/p/7603578.html

三.master配置

1. my.cnf配置

#在主從複製配置文件的基礎上增加3個參數項
[root@master ~]# vim /etc/my.cnf
[mysqld]
server_id = 196
log_bin = /mysql/mysql-bin
max_binlog_size = 1G
sync_binlog = 0
binlog-format = mixed
binlog-ignore-db = information_schema,mysql,performance_schema,test

# 中繼日誌執行之後將變化寫入自己的binlog文件,即從庫從主庫複製的文件預設不會寫入自己的binlog文件,需要開啟後才生效;
# 通常此從庫同時作為主庫時,即鏈式複製時,需要開啟此參數;
# 預設參數為0,表示OFF, 設置為1表示ON,參數可直接帶OFF或ON.
log-slave-updates = 1

# 做雙主時,每台資料庫都可能在同一個表中插入數據,如果表有一個自動增長的主鍵,那麼就會在多伺服器上出現主鍵衝突;解決方案是讓每個資料庫的自增主鍵不連續;
# 參數auto_increment_increment表示自增值,一般有n台主庫,自增值就採用n;
# auto_increment_offset表示起始序號,一般offset不超過自增值,且各主庫的自增值不一樣.
auto_increment_increment = 2
auto_increment_offset = 1

#使用--skip-slave-start啟動,可以不立即啟動從庫的複製線程,方便後續配置操作
[root@master ~]# service mysqld stop
[root@master ~]# mysqld_safe --skip-slave-start & 

2. 創建複製用戶

#在主庫上10.11.4.0網段的主機授權,從庫用戶repl獲得REPLICATION SLAVE許可權      
[root@master ~]# mysql -uroot -p
Enter password:

mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'10.11.4.%' IDENTIFIED  BY 'repl';
mysql> flush privileges;

3. 獲取master binlog文件名與偏移量

[root@master ~]# mysql -uroot -p
Enter password:

mysql> show master status;

  1. 獲取到binlog文件名與偏移量,可為從庫設定同步複製點。

4. iptables

[root@master ~]# vim /etc/sysconfig/iptables
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
[root@master
~]# service iptables restart

四.backup配置

1. my.cnf配置

#將主庫伺服器上的my.cnf文件拷貝到從庫伺服器
[root@master ~]# scp /usr/local/mysql/my.cnf backup:/usr/local/mysql/
root@backup's password:

#修改server id值與主庫伺服器不同;
#auto_increment_offset參數,各伺服器的offset值應不一樣
[root@backup ~]# vim /etc/my.cnf
[mysqld]
server_id = 197

auto_increment_increment = 2
auto_increment_offset = 2

#使用--skip-slave-start啟動,可以不立即啟動從庫的複製線程,方便後續配置操作
[root@backup ~]# service mysqld stop
[root@backup ~]# mysqld_safe --skip-slave-start &

2. 創建複製用戶

#在主庫上10.11.4.0網段的主機授權,從庫用戶repl獲得REPLICATION SLAVE許可權      
[root@backup ~]# mysql -uroot -p
Enter password:

mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'10.11.4.%' IDENTIFIED  BY 'repl';
mysql> flush privileges;

3. 獲取master(backup節點) binlog文件名與偏移量

[root@backup ~]# mysql -uroot -p
Enter password:

mysql> show master status;

  1. 獲取到binlog文件名與偏移量,可為從庫設定同步複製點。

4. iptables

[root@backup ~]# vim /etc/sysconfig/iptables
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT

[root@backup
~]# service iptables restart

五.同步複製

1. master配置同步複製

#配置從庫向主庫提交的參數,如果參數有錯誤,可以重新配置;
# master-host、master-user、master-password、master-port等也可在my.cnf文件中指定;
#”start slave“啟動複製
[root@master ~]# mysql -uroot -p
Enter password:

mysql> change master to 
       master_host = '10.11.4.197', 
       master_user = 'repl', 
       master_password = 'repl', 
       master_log_file = 'mysql-bin.000009',
       master_log_pos = 1306;
mysql> start slave;

2. backup配置同步複製

[root@backup ~]# mysql -uroot -p
Enter password:

mysql> change master to 
       master_host = '10.11.4.196', 
       master_user = 'repl', 
       master_password = 'repl', 
       master_log_file = 'mysql-bin.000003',
       master_log_pos = 2462;
mysql> start slave;

六.驗證

1. 查看線程 

1)master伺服器

[root@master ~]# mysql -uroot -p
Enter password:

mysql> show processlist;

  1. master伺服器做為主庫的binlog dump線程已由backup伺服器從庫的repl用戶啟動;
  2. master伺服器做為從庫的I/0線程與SQL線程由系統用戶啟動。 

2)backup伺服器

[root@backup ~]# mysql -uroot -p
Enter password:

mysql> show processlist;

  1. backup伺服器做為主庫的binlog dump線程已由master伺服器從庫的repl用戶啟動;
  2. backup伺服器做為從庫的I/0線程與SQL線程由系統用戶啟動。

2. 查看從庫狀態 

1)master伺服器

[root@master ~]# mysql -uroot -p
Enter password:

mysql> show slave status\G;

  1. 重點關註Slave_IO_Running與Slave_SQL_Running,狀態均為YES時正常。 

2)backup伺服器

[root@backup ~]# mysql -uroot -p
Enter password:

mysql> show slave status\G;

3. 查看新建數據資料庫同步情況

1)在master伺服器新建資料庫與表

[root@master ~]# mysql -uroot -p
Enter password:

mysql> create database dbtest2;
mysql> use dbtest2;
mysql> create table tabtest2(id int);
mysql> insert into tabtest2() values(1),(2);

2)在backup伺服器查看資料庫與表 

[root@backup ~]# mysql -uroot -p
Enter password:

(1)查看資料庫

mysql> show databases;

(2)查詢表

mysql> select * from dbtest2.tabtest2;

3)在backup伺服器修改數據表 

[root@backup ~]# mysql -uroot -p
Enter password:

mysql> use dbtest2;
mysql> insert into tabtest2() values(3),(4);

4)在master伺服器查看修改後的數據表 

[root@master ~]# mysql -uroot -p
Enter password:

mysql> select * from dbtest2.tabtest2;


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • SparkSQL和DataFrame SparkSQL簡介 Spark SQL是Spark用來處理結構化數據的一個模塊,它提供了一個編程抽象叫做DataFrame並且作為分散式SQL查詢引擎的作用。它是將Spark SQL轉換成RDD,然後提交到集群執行,執行效率非常快! SparkSQL的特性 1 ...
  • 1》創建資料庫: 語法:create database 資料庫名; 語法:show databases 查看已經存在資料庫 舉例: Mysql->create database zytest; 註意每一條要以;號結尾 Mysql->show databases;查詢是否創建成功 >use zytes ...
  • 根據日期查詢範圍 精確到天 select * from table where to_char( time,'yyyy mm dd ' ) <= '2000 01 01' select * from table where to_char( time,'yyyy-mm-dd ' ) <= '2000 ...
  • 環境參數如下: 伺服器操作系統: Red Hat Enterpriser Linux 6.5 三台(IP地址分別為:192.168.5.128,192.168.5.129,192.168.5.130) zookeeper版本: zookeeper-3.4.10 JDK版本: jdk1.8.0_144 ...
  • 問題:客戶進行了PDB的克隆之後,發現啟動時出現:ORA-44777: Pluggable database service cannot be started.分析手段:為了獲得PDB的相關信息,可以在 克隆的源和目的機器上分別查詢: exec dbms_pdb.describe('/home/o ...
  • 註釋方法: 1,單行註釋: // 2, 多行註釋: /* */ 二,數據類型 1,integer(整數型):在三十二位操作系統中它的有效範圍是:-2147483648~+2147483648; 2,string(字元串):字元串變數不同於其他編程語言有字元與字元串之分,在PHP中統一使用字元型變數來 ...
  • 1 概述 1 概述 阻止保存要求重新創建表的更改,場景是這樣的:假設資料庫中有一張員工表EmployeeInfo,如下所示: 其中有個欄位EmployeeBirthday,在設計表時,其類型誤設為VARCHAR類型,此時需要更改其數據類型,即VARCHAR類型更改為DateTime類型,SqlSer ...
  • 簡單的介紹一下,我使用MongoDB的場景。 我們現在的物聯網環境下,有部分數據,採樣頻率為2000條記錄/分鐘,這樣下來一天24*60*2000=2880000約等於300萬條數據,以後必然還會增加。之前資料庫使用的是mssql,對於資料庫的壓力很大,同時又需要保證歷史查詢的響應速度,這種情況下, ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...