中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

企業 - MySQL主從備份

發布時間:2020-07-09 02:34:57 來源:網絡 閱讀:543 作者:huanzi2017 欄目:MySQL數據庫

一、mysql主從備份原理

一、雙機熱備的概念簡單說一下,就是要保持兩個數據庫的狀態自動同步。對任何一個數據庫的操作都自動應用到另外一個數據庫,始終保持兩個數據庫中的數據一致。 這樣做有如下幾點好處:

1. 可以做災備,其中一個壞了可以切換到另一個。

2. 可以做負載均衡,可以將請求分攤到其中任何一臺上,提高網站吞吐量。  對于異地熱備,尤其適合災備。

二、mysql 主從備份工作原理

簡單的說就是把 一個服務器上執行過的sql語句在別的服務器上也重復執行一遍, 這樣只要兩個數據庫的初態是一樣的,那么它們就能一直同步。

二、實現方式

MYSQL主從同步是在MySQL主從復制(Master-Slave Replication)基礎上實現的,通過設置在Master上的binlog,使其處于打開狀態;Slave通過一個I/O線程從Master上讀取binlog,然后傳輸到Slave的中繼日志中,然后使用SQL線程讀取中繼日志,并應用到自身數據庫中,從而實現主從數據同步功能。


有兩個服務器,演示了從一個主服務器(master)把數據同步到從服務器(slave)的過程。

對于一個mysql服務器,一般有兩個線程來負責復制和被復制。當開啟復制這個開關之后(start slave)

1. 作為主服務器Master,會把自己的每一次改動都記錄到 二進制日志 Binarylog 中。 (從服務器會負責來讀取這個log,然后在自己那里再執行一遍。)

 

2. 作為從服務器Slave,會用master上的賬號登陸到master上,去讀取master的Binarylog,  然后寫入到自己的中繼日志Relaylog,然后自己的sql線程會負責讀取這個中繼日志,并執行一遍。到這里主服務器上的更改就同步到從服務器上了。

 

在mysql上可以查看當前服務器的主,從狀態。 其實就是當前服務器的 Binary(作為主服務器角色)狀態和位置。以及其RelayLog(作為從服務器)的復制進度。


三、復制的過程

企業 - MySQL主從備份



該過程的第一部分就是master記錄二進制日志。在每個事務更新數據完成之前,master在二日志記錄這些改變。MySQL將事務串行的 寫入二進制日志,即使事務中的語句都是交叉執行的。在事件寫入二進制日志完成后,master通知存儲引擎提交事務。        下一步就是slave將master的binary log拷貝到它自己的中繼日志。首先,slave開始一個工作線程——I/O線程。I/O線程在master上打開一個普通的連接,然后開始binlog dump process。Binlog dump process從master的二進制日志中讀取事件,如果已經跟上master,它會睡眠并等待master產生新的事件。I/O線程將這些事件寫入中 繼日志。        SQL slave thread(SQL從線程)處理該過程的最后一步。SQL線程從中繼日志讀取事件,并重放其中的事件而更新slave的數據,使其與master中的數 據一致。只要該線程與I/O線程保持一致,中繼日志通常會位于OS的緩存中,所以中繼日志的開銷很小。         此外,在master中也有一個工作線程:和其它MySQL的連接一樣,slave在master中打開一個連接也會使得master開始一個線程。復制 過程有一個很重要的限制——復制在slave上是串行化的,也就是說master上的并行更新操作不能在slave上并行操作。


實驗

實驗環境

server2   master

server3   slave


master上下載包

mysql-5.7.17-1.el6.x86_64.rpm-bundle.tar

安裝數據庫

[root@server2~]# yum install -y mysql-community-client-5.7.17-1.el6.x86_64.rpm mysql-community-common-5.7.17-1.el6.x86_64.rpm mysql-community-libs-5.7.17-1.el6.x86_64.rpm mysql-community-libs-compat-5.7.17-1.el6.x86_64.rpm mysql-community-server-5.7.17-1.el6.x86_64.rpm 


企業 - MySQL主從備份

[root@server3 ~]# yum install -y *



修改mysql的配置文件

[root@server2 ~]# vim /etc/my.cnf

server-id = n

給服務器分配一個唯一的ID編號


log-bin [= filename]

把對數據進行修改的所有SQL命令(也就是INSERT、UPDATE和DELETE命令)以二進制格式記入日志(二進制變更日志,binary update log)。這種日志的文件名是filename.n或默認的hostname.n,其中n是一個6位數字的整數(日志文件按順序編號)。


企業 - MySQL主從備份

開啟服務


企業 - MySQL主從備份

企業 - MySQL主從備份


修改slave配置文件

server-id = n

給服務器分配一個唯一的ID編號

[root@server3 ~]# vim /etc/my.cnf

企業 - MySQL主從備份

開啟服務

企業 - MySQL主從備份



查看密碼

企業 - MySQL主從備份


安全配置向導

企業 - MySQL主從備份



企業 - MySQL主從備份


企業 - MySQL主從備份


如下方法修改slave密碼

mysql> alter user root@localhost identified by 'LH=redhat123';

企業 - MySQL主從備份

master上進行授權

mysql> grant replication slave on *.* to cara@'192.168.122.13' identified by 'LH@redhat123' ;      用戶授權

mysql> flush privileges;  刷新

企業 - MySQL主從備份

master授權后,slave可以遠程登錄


企業 - MySQL主從備份


master端查看

企業 - MySQL主從備份



使 slave 與 master 建立連接,從而同步:
mysql> change master to master_host='192.168.122.12',master_user='cara',master_password='LH=redhat123',master_log_file='mysql-bin.000003',master_log_pos=1706;

slave端  mysql -p 登錄

企業 - MySQL主從備份


查看

[root@server3 mysql]# pwd
/var/lib/mysql
[root@server3 mysql]# cat master.info

企業 - MySQL主從備份

[root@server3 mysql]# cat server3-relay-bin.index

企業 - MySQL主從備份


mysql> show slave status\G;  查看slave狀態

企業 - MySQL主從備份




mysql> start slave;  開啟slave

企業 - MySQL主從備份


創建庫westos,創建表usertb

企業 - MySQL主從備份


在表中插入數據

企業 - MySQL主從備份


更改密碼

企業 - MySQL主從備份


刪除表中數據

企業 - MySQL主從備份



[root@server2 mysql]# mysqlbinlog mysql-bin.000003   可查看master所做的操作


企業 - MySQL主從備份



在slave上也可查看master上數據

企業 - MySQL主從備份


企業 - MySQL主從備份


深入了解復制-全局事務標識符(GTID)

1)什么是GTID

GTID(Global Transaction ID)是對于一個已提交事務的編號,并且是一個全局唯一的編號。GTID實際上是由UUID+TID組成的。其中UUID是一個MySQL實例的唯一標 識,保存在mysql數據目錄下的auto.cnf文件里。TID代表了該實例上已經提交的事務數量,并且隨著事務提交單調遞增。下面是一個GTID的具 體形式:3E11FA47-71CA-11E1-9E33-C80AA9429562:23。

2)GTID的作用

根據GTID可以知道事務最初是在哪個實例上提交的

GTID的存在方便了Replication的Failover

3)GTID比傳統復制的優勢

更簡單的實現failover,不用以前那樣在需要找log_file和log_Pos。

更簡單的搭建主從復制。

比傳統復制更加安全。

GTID是連續沒有空洞的,因此主從庫出現數據沖突時,可以用添加空事物的方式進行跳過。

4)GTID的工作原理:

master更新數據時,會在事務前產生GTID,一同記錄到binlog日志中。

slave端的i/o線程將變更的binlog,寫入到本地的relay log中。

sql線程從relay log中獲取GTID,然后對比slave端的binlog是否有記錄。

如果有記錄,說明該GTID的事務已經執行,slave會忽略。

如果沒有記錄,slave就會從relay log中執行該GTID的事務,并記錄到binlog。

在解析過程中會判斷是否有主鍵,如果沒有就用二級索引,如果沒有就用全部掃描。


先關掉slave

企業 - MySQL主從備份

修改配置文件/etc/my.cof

master

企業 - MySQL主從備份

slave

企業 - MySQL主從備份

重啟服務

企業 - MySQL主從備份

企業 - MySQL主從備份

更錄數據庫,查看


master

企業 - MySQL主從備份


企業 - MySQL主從備份

企業 - MySQL主從備份


slave

企業 - MySQL主從備份

企業 - MySQL主從備份



企業 - MySQL主從備份

change master to master_host='192.168.122.12',master_user='cara',master_password='LH=redhat123',master_auto_position=1;

企業 - MySQL主從備份

企業 - MySQL主從備份


     --------------------------------------------------------------------master端--------------------------------------------------------------------

企業 - MySQL主從備份

企業 - MySQL主從備份

--------------------------------------------------------------------slave端--------------------------------------------------------------------

企業 - MySQL主從備份

企業 - MySQL主從備份


企業 - MySQL主從備份


企業 - MySQL主從備份




向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

汤原县| 南城县| 个旧市| 西青区| 顺平县| 连州市| 图木舒克市| 徐汇区| 麟游县| 武夷山市| 且末县| 社会| 克东县| 甘南县| 延寿县| 任丘市| 东城区| 玛曲县| 云浮市| 阿拉善右旗| 昭平县| 松江区| 乳源| 怀化市| 卢湾区| 汉阴县| 定陶县| 金昌市| 吴堡县| 铁岭县| 清水县| 平定县| 咸丰县| 改则县| 黎城县| 开平市| 海原县| 阜新市| 扶沟县| 赫章县| 武宣县|