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
  • 前言 本文介紹一款使用 C# 與 WPF 開發的音頻播放器,其界面簡潔大方,操作體驗流暢。該播放器支持多種音頻格式(如 MP4、WMA、OGG、FLAC 等),並具備標記、實時歌詞顯示等功能。 另外,還支持換膚及多語言(中英文)切換。核心音頻處理採用 FFmpeg 組件,獲得了廣泛認可,目前 Git ...
  • OAuth2.0授權驗證-gitee授權碼模式 本文主要介紹如何筆者自己是如何使用gitee提供的OAuth2.0協議完成授權驗證並登錄到自己的系統,完整模式如圖 1、創建應用 打開gitee個人中心->第三方應用->創建應用 創建應用後在我的應用界面,查看已創建應用的Client ID和Clien ...
  • 解決了這個問題:《winForm下,fastReport.net 從.net framework 升級到.net5遇到的錯誤“Operation is not supported on this platform.”》 本文內容轉載自:https://www.fcnsoft.com/Home/Sho ...
  • 國內文章 WPF 從裸 Win 32 的 WM_Pointer 消息獲取觸摸點繪製筆跡 https://www.cnblogs.com/lindexi/p/18390983 本文將告訴大家如何在 WPF 裡面,接收裸 Win 32 的 WM_Pointer 消息,從消息裡面獲取觸摸點信息,使用觸摸點 ...
  • 前言 給大家推薦一個專為新零售快消行業打造了一套高效的進銷存管理系統。 系統不僅具備強大的庫存管理功能,還集成了高性能的輕量級 POS 解決方案,確保頁面載入速度極快,提供良好的用戶體驗。 項目介紹 Dorisoy.POS 是一款基於 .NET 7 和 Angular 4 開發的新零售快消進銷存管理 ...
  • ABP CLI常用的代碼分享 一、確保環境配置正確 安裝.NET CLI: ABP CLI是基於.NET Core或.NET 5/6/7等更高版本構建的,因此首先需要在你的開發環境中安裝.NET CLI。這可以通過訪問Microsoft官網下載並安裝相應版本的.NET SDK來實現。 安裝ABP ...
  • 問題 問題是這樣的:第三方的webapi,需要先調用登陸介面獲取Cookie,訪問其它介面時攜帶Cookie信息。 但使用HttpClient類調用登陸介面,返回的Headers中沒有找到Cookie信息。 分析 首先,使用Postman測試該登陸介面,正常返回Cookie信息,說明是HttpCli ...
  • 國內文章 關於.NET在中國為什麼工資低的分析 https://www.cnblogs.com/thinkingmore/p/18406244 .NET在中國開發者的薪資偏低,主要因市場需求、技術棧選擇和企業文化等因素所致。歷史上,.NET曾因微軟的閉源策略發展受限,儘管後來推出了跨平臺的.NET ...
  • 在WPF開發應用中,動畫不僅可以引起用戶的註意與興趣,而且還使軟體更加便於使用。前面幾篇文章講解了畫筆(Brush),形狀(Shape),幾何圖形(Geometry),變換(Transform)等相關內容,今天繼續講解動畫相關內容和知識點,僅供學習分享使用,如有不足之處,還請指正。 ...
  • 什麼是委托? 委托可以說是把一個方法代入另一個方法執行,相當於指向函數的指針;事件就相當於保存委托的數組; 1.實例化委托的方式: 方式1:通過new創建實例: public delegate void ShowDelegate(); 或者 public delegate string ShowDe ...