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_db
和binlog_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密碼、連線mysql、mysql常用命令、mysql使用者管理、常用sql語句、mysql資料庫備份恢復
一、設定更改root密碼 首次直接使用mysql會提示‘該命令不存在’,原因是還沒有將該命令加入環境變數,如果要使用該命令,需要使用其絕對路徑:/usr/local/mysql/bin/mysql,為了方便,先將其加入系統環境變數: [[email p