1. 程式人生 > >MySQL主從備份設定

MySQL主從備份設定

功能需求

外網伺服器,有獨立IP;內網伺服器,無獨立IP;外網伺服器的MYSQL資料庫實時更新,並要求同步到內網伺服器中。
該需求可使用MYSQL的主從備份實現,其中外網伺服器為主伺服器(Master),內網伺服器為從伺服器(Slave)。

實現方式

MYSQL主從同步是在MySQL主從複製(Master-Slave Replication)基礎上實現的,通過設定在Master上的binlog,使其處於開啟狀態;Slave通過一個I/O執行緒從Master上讀取binlog,然後傳輸到Slave的中繼日誌中,然後使用SQL執行緒讀取中繼日誌,並應用到自身資料庫中,從而實現主從資料同步功能。

如下圖所示:

這裡寫圖片描述

具體操作

1、主伺服器(Master)配置

首先應該保證從伺服器對主伺服器資料庫的訪問,即開啟MySQL的遠端訪問,grant和flush以下就行了。

然後需要修改Master的資料庫配置,MySQL預設配置檔案在/etc/my.cnf,開啟後在[mysqld]之後加入如下條目:

log_bin = /var/log/mariadb/mariadb-bin.log
server-id = 1 
binlog_do_db = testmirror

也可以進行更詳細的設定:

max_binlog_size = 500M
binlog_cache_size = 128
K
binlog-ignore-db = mysql expire_logs_day=2 binlog_format="MIXED"

設定完後重啟MYSQL服務。

各引數意義:

引數 意義
server-id 資料庫唯一ID,一組主從中此標識號不能重複。其中1 代表主資料庫(源) 2代表輔資料庫(目的)
log_bin 開啟bin-log,並指定檔案目錄和檔名字首
binlog_do_db 需要同步的資料庫名字,可以是多個,之間用分號分割
binlog_ignore_db 不需要同步的資料庫名字
max_binlog_size 每個bin-log最大大小,當此大小等於500M時會自動生成一個新的日誌檔案。一條記錄不會寫在2個日誌檔案中,所以有時日誌檔案會超過此大小。
binlog_cache_size 日誌快取大小
binlog-do-db 需要同步的資料庫名字,如果是多個,就以此格式在寫一行即可。
binlog-ignore-db 不需要同步的資料庫名字,如果是多個,就以此格式在寫一行即可。
expire_logs_day 設定bin-log日誌檔案儲存的天數,此引數mysql5.0以下版本不支援。
binlog_format bin-log日誌檔案格式,設定為MIXED可以防止主鍵重複。

如果需要有選擇性地進行同步,可以在Master端進行(使用binlog_do_db或binlog_Ignore_DB),也可以在Slave端進行(使用下面會說到的Replicate_Ignore_DB)。

2、從伺服器(Slave)配置

修改slave的配置檔案,同樣在/etc/my.cnf

server-id = 2
read_only = 1
relay_log = /var/log/mariadb/relay.log

當然也可以開啟bin_log使它同時作為其它從伺服器的Master。
設定完後重啟MYSQL服務。

引數 意義
relay_log 配置中繼日誌
log-slave-updates 表示slave將複製事件寫進自己的二進位制日誌,簡單地說,如果從庫同時作為其它庫的主庫,那麼需要新增該引數,否則不需要
read_only 它防止改變資料

針對log-slave-updates引數,如果從庫也開啟了log-bin引數,此時直接往從庫寫資料,是可以記錄log-bin日誌的。但是從庫通過I0執行緒讀取主庫二進位制日誌檔案,然後通過SQL執行緒寫入的資料,則是不會記錄log-bin日誌的,也就是說從庫從主庫上覆制的資料無法記錄到從庫的log-bin日誌上,也無法被從庫的從庫捕捉到更新。所以從庫做為其他從庫的主庫時需要在配置檔案中新增log-slave-updates引數。

前面說了利用Master的binlog_do_dbbinlog_Ignore_DB可以實現過濾,只同步特定的資料庫,該功能也可以在Slave端實現。

引數 意義
replicate_do_db 資料庫白名單列表
replicate_ignore_db 資料庫黑名單列表
replicate_do_table 表白名單列表
replicate_ignore_table 表黑名單列表
replicate_wild_do_table 使用萬用字元定義表白名單列表
replicate_wild_ignore_table 使用萬用字元定義表黑名單列表

3、賬號許可權設定

在Slave上,使用Master上的[email protected]%帳戶登陸Master與其通訊。

GRANT REPLICATION SLAVE ON . TO [email protected]’%’ IDENTIFIED BY ‘password’;

如果使用的是非root賬號,該賬號除了在Master上真實存在外,還應該擁有REPLICATION SLAVE 和 READ屬性。

4、檢視Master狀態

在Master的MySQL命令符下,檢視Master狀態:

MariaDB [(none)]> show master status;
+--------------------+----------+--------------+------------------+
| File               | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+--------------------+----------+--------------+------------------+
| mariadb_bin.000001 |      245 | testmirror         |                  |
+--------------------+----------+--------------+------------------+
1 row in set (0.00 sec)

這裡需要記住兩個引數,一個File,一個Position。

5、在Slave上開啟同步

MySQL從5.1.7以後開始就不支援在my.cnf中對master-host等引數進行配置,而是使用了CHANGE MASTER TO語句。

mysql> CHANGE MASTER TO MASTER_HOST='server1',
    -> MASTER_USER='user_name',
    -> MASTER_PASSWORD='p4ssword',
    -> MASTER_LOG_FILE='mariadb_bin.000001',
    -> MASTER_LOG_POS=245;

這裡最後填的兩個就是第3步看到的File和position。
然後就可以開始同步了:

mysql> START SLAVE;

可以看一看Slave的執行狀態

mysql> SHOW SLAVE STATUS\G

結果很長,主要關注以下幾個:

Slave_IO_Running=Yes
Slave_SQL_Running=Yes

……
Exec_Master_Log_Pos: 537

這幾句表示slave的I/O和SQL執行緒都已經開始執行。每次日誌的位置(Exec_Master_Log_Pos)增加了,意味著一些事件被獲取並執行了。如果你在master上進行修改,可以在slave上看到各種日誌檔案的位置的變化,同樣,也可以看到資料庫中資料的變化。

相關推薦

MySQL主從備份設定

功能需求 外網伺服器,有獨立IP;內網伺服器,無獨立IP;外網伺服器的MYSQL資料庫實時更新,並要求同步到內網伺服器中。 該需求可使用MYSQL的主從備份實現,其中外網伺服器為主伺服器(Master),內網伺服器為從伺服器(Slave)。 實現方式

Mysql單機多例項及主從備份設定

準備Slave資料庫 新建目錄,如:mysql3307,做為Slave資料庫的目錄。 複製Master Mysql目錄下的share目錄到mysql3307下。 在mysql3307目錄下建立data目錄,並複製Master Mysql的data下的mysq

mysql主從備份及常見問題處理

top 存在 是否 table read 應用 and 常見問題 png 1.mysql主從備份基本原理 mysql支持單向、異步復制,復制過程中一個服務器充當主服務器,而一個或多個其它服務器充當從服務器。mysql復制基於主服務器在二進制日誌中跟蹤所有對數據庫的更

企業 - MySQL主從備份

mysql 主從備份一、mysql主從備份原理一、雙機熱備的概念簡單說一下,就是要保持兩個數據庫的狀態自動同步。對任何一個數據庫的操作都自動應用到另外一個數據庫,始終保持兩個數據庫中的數據一致。 這樣做有如下幾點好處:1. 可以做災備,其中一個壞了可以切換到另一個。2. 可以做負載均衡,可以將請求分攤到其中任

MySQL主從備份配置實例

reat 變化 出現問題 二進制日誌 my.cnf配置 counter 文件名 alter 特定 場景: 1、主服務器192.168.0.225、從服務器192.168.0.226。其中,主服務器上已有數據。 2、主從服務器上的mysql版本及安裝配置相同。 一

mysql主從備份切換

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

mysql主從伺服器設定

● 準備多個mysql(5.7.23) ● master設定 [[email protected] ~]# vi /etc/my.cnf #在節點加入如下配置(然後重啟mysql) [mysqld] #id server-id=1 #二進位制日誌檔案(注意是/ 不是\) lo

mysql主從資料庫設定(精簡版)

本文借鑑於其他博文,主要針對於小白做一個精簡版,也算做一個總結吧! 準備:兩個不同的主機資料庫(個人是本地和正式服),同時兩臺機最好先建立好相同的使用者名稱及密碼,保證賬戶能夠連線成功!建議用Navicat檢視化操作建立使用者以及連線,以下附上建立使用者的命令! 授權格式:grant

Mysql 主從備份完整版

MYSQL 主從配置有很多好處,一個是起著實時備份的作用,另外一個也可以讀寫分離,減輕網站的負載,baidu出來的很多配置其實很有問題,在這裡重新梳理一下,首先了解一下原理。   該過程的第一部分就是master記錄二進位制日誌。在每個事務更新資料完成之前,master在

mysql主從備份Slave_IO_Running:No的解決方法

情況一: 在備機的mysql上執行:show slave status \G 發現Slave_SQL_Running: No       Last_Errno: 1146       Last_Error: Error 'Table 'opaq_151.vehicle_new

MySQL 主從備份

1:檢查mysql master 配置;     #先檢視master server-id:           命令:show variables like 'server_id';     #檢視master log_bin 是否開起             命令:sho

linux下 mysql主從備份

帳號 滿足 popu pass ext 地址 ont 建立數據庫 版本號 版權聲明:本文為博主原創文章,未經博主同意不得轉載。 https://blog.csdn.net/czh0423/

mycat資料庫集群系列之mysql主從同步設定

     最近在梳理資料庫叢集的相關操作,現在花點時間整理一下關於mysql資料庫叢集的操作總結,恰好你又在看這一塊,供一份參考。本次系列終結大概包括以下內容:多資料庫安裝、mycat部署安裝、資料庫之讀寫分離主從複製、資料庫之雙主多重、資料庫分庫分表。每一個點,有可能會對應一篇或者多篇文章,由於還要繼續上班

學一點 mysql 雙機異地熱備份----快速理解mysql主從,主主備份原理及實踐

server counter ror 位置 正在 大型 主循環 備份 配置詳解 雙機熱備的概念簡單說一下,就是要保持兩個數據庫的狀態自動同步。對任何一個數據庫的操作都自動應用到另外一個數據庫,始終保持兩個數據庫數據一致。 這樣做的好處多。 1. 可以做災備,其中一個壞了可

05: 實時增量備份 、 XtraBackup 備份 、 總結和答疑 、 MySQL 主從同步

lte per xtra 使用 pos posit 完全備份 一次 信息 day05 增量備份一、啟用binlog日誌 實現 實時增量備份二、使用第3方軟件提供的命令做增量備份 +++++++++++++++++++++++++++++++++一、啟用binlog日誌 實

mysql 主從時時備份

mysql mysql主從時時備份 2.7、Mysql 主從備份1、mysql 主備結構:Master:Mysql主節點,Master接收到來自Slave的 IO進程請求後,通過負責復制的IO進程請求信息讀取制定日誌指定位置之後的日誌信息,返回給Slave的IO進程。返回信息中除了日誌所包含的信息之外

mysql主從同步與防火墻端口的設定

nbsp load 解決 AD bubuko reload pre style 技術 一、背景: 之前做主從同步時,把從庫防火墻關了,現在開啟防火墻後,從庫不同步了 二、解決思路: 1、首先查看了mysql占用的端口,然後開啟,tcp/udp都開了,結果還是不行 fir

mysql主從備份

圖 master master 新增使用者 mysql>grant replication slave on *.* to 'repl'@'%' identified by 'repl'; mysql>flush privileges;

Mysql主從的基本設定

在主伺服器上建立mysql使用者建立使用者(使用root也可以,但是不建議) , 該使用者必須有 REPLICATION SLAVE 許可權 建立使用者:CREATE USER 'test1'@'172.20.10.%' IDENTIFIED WITH mysql_native_passwo

設定更改root密碼、連線mysqlmysql常用命令、mysql使用者管理、常用sql語句、mysql資料庫備份恢復

一、設定更改root密碼 首次直接使用mysql會提示‘該命令不存在’,原因是還沒有將該命令加入環境變數,如果要使用該命令,需要使用其絕對路徑:/usr/local/mysql/bin/mysql,為了方便,先將其加入系統環境變數: [[email p