日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql 半同步_mysql 主从同步 与 半同步

發布時間:2024/8/23 数据库 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql 半同步_mysql 主从同步 与 半同步 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

mysql主從同步復制定義

主從同步使得數據可以從一個數據庫服務器復制到其他服務器上,在復制數據時,一個服務器充當主服務器(master),其余的服務器充當從服務器(slave)。通過配置文件,可以指定復制所有的數據庫,某個數據庫,甚至是某個數據庫上的某個表。

使用主從同步的好處:

通過增加從服務器來提高數據庫的性能,在主服務器上執行寫入和更新,在從服務器上向外提供讀功能,可以動態地調整從服務器的數量,從而調整整個數據庫的性能。

提高數據安全-因為數據已復制到從服務器,從服務器可以終止復制進程,所以,可以在從服務器上備份而不破壞主服務器相應數據

在主服務器上生成實時數據,而在從服務器上分析這些數據,從而提高主服務器的性能

半同步復制 ---- 解決數據丟失的問題

并行復制 ---- 解決從庫復制延遲的問題

主從復制--異步復制原理:

半同步復制原理:

配置主從同步

有很多種配置主從同步的方法,可以總結為如下的步驟:

1.主、從服務器都開啟二進制模塊功能,每臺服務器都有獨立的 ID 不可重復

2.修改 從服務器的 UUID不可相同

3.按照該配置文件,在從服務器上建立相關的 目錄

4.同步主服務器的數據內容,分別同步到各個從服務器中(所有服務器的數據保持一致性)

5.查看二進制文件所在的位置和名稱,以便主從同步數據一致

一、配置主服務器

1、添加二進制模塊,并創建對應的目錄

[root@rehl-10 mysql]# vim /etc/my.cnf

......

log-bin=/data/binmysql/mysql-bin

server-id=1

......

[root@rehl-10 ~]# mkdir /data/binmysql

[root@rehl-10 ~]#chown mysql:mysql -R /data/binmysql

2、創建數據庫的用戶,授權可以進行復制、操作的賬戶:

啟動數據庫,進入數據庫。創建用戶 “mary“ 密碼 “123123” ,授權給 192.168.10.% 段的 ip,并刷新時期生效

[root@rehl-10 mysql]# /usr/local/mysql57/support-files/mysql.server start

[root@rehl-10 mysql]# /usr/local/mysql57/bin/mysql -uroot

Mysql> grant all on *.* to 'mary'@'192.168.10.%' identified by “123123”;

Mysql> flush privileges;

查看是否生效:

mysql> select host,user from mysql.user;

+--------------+---------------+

| host | user |

+--------------+---------------+

| 192.168.10.% | mary |

| 192.168.10.% | root |

| localhost | mysql.session |

| localhost | mysql.sys |

| localhost | root |

+--------------+---------------+

5 rows in set (0.25 sec)

mysql>

3、備份數據,復制數據到從服務器中

利用 innobackupex 備份或者 LVM 快照備份

4、查看當前的二進制文件

當前二進制文件名字為 000026 位置已到 797 ;

mysql> show master status;

| File | Position |

| mysql-bin.000026 | 797 |

二、配置從服務器

1、復制配置文件到從服務器,檢查是否開啟二進制文件,修改配置文件中的 ID 和 UUID(UUID不一致可以不用改)

[root@rehl-10 ~]# scp /etc/my.cnf 192.168.10.15:/etc/

[root@rehl-15 ~]# vim /etc/my.cnf

......

log-bin=/data/binmysql/mysql-bin

server-id=2

......

[root@rehl-15 ~]# mkdir /data/binmysql

[root@rehl-15 ~]# chown mysql:mysql /data/binmysql

[root@rehl-15 ~]# vim /mysql/auto.cnf

[auto]

server-uuid=0c45e903-c4c4-11e8-8fa1-000c296bd14d

2、 登錄從服務器的 mysql 客戶端

mysql> stop slave;

mysql> reset slave;

mysql> change master to master_host='192.168.10.10',master_user='mary',master_password='123123',master_log_file='mysql-bin.000026',master_log_pos=797;

mysql> start slave; #開始啟動從服務器功能

3、 查看從服務器信息

mysql> show slave status \G;

4、測試觀察,在主服務器中插入數據,在從服務器上進行察看

注意:從數據庫只能讀,并不能寫。

mysql 半同步復制

1.當Slave主機連接到Master時,能夠查看其是否處于 半同步復制的機制。

2.當Master上開啟半同步復制的功能時,至少應該有一個Slave開啟其功能

同步(社區增強半同步),異步,半同步復制的比較:

同步復制:Master提交事務,直到事務在所有的Slave都已提交,此時才會返回客戶端,事務執行完畢。缺點:完成一個事務可能會有很大的延遲。

異步復制:當Slave準備好才會向Master請求binlog。缺點:不能保證一些事件都能夠被所有的Slave所接收。

半同步復制:半同步復制工作的機制處于同步和異步之間,Master的事務提交阻塞,只要一個Slave已收到該事務的事件且已記錄。它不會等待所有的Slave都告知已收到,且它只是接收,并不用等其完全執行且提交 ... 所以,半同步復制最好在低延時的網絡中使用

開啟半同步復制

在主服務器節點上安裝相關的插件(在配置文件上添加相關的模塊)

[root@rehl-10 mysql]# vim /etc/my.cnf

plugin-load=rpl_semi_sync_master=semisync_master.so

rpl_semi_sync_master_enabled=1

重啟服務,察看

在從服務器節點上安裝相關的插件(在配置文件上添加相關的模塊)

[root@rehl-10 mysql]# vim /etc/my.cnf

plugin-load=rpl_semi_sync_slave=semisync_slave.so

rpl_semi_sync_slave_enabled=1

重啟服務,察看

測試觀察

主服務器在線,所有從服務器離線,

此時向主服務器插入數據,觀察。。。

mysql> stop slave;

Query OK, 0 rows affected (0.31 sec)

插入數據花了 整整 10s

當再次插入數據的時候;或者在從服務器恢復半同步復制。再次觀察,沒有了延時

mysql> start slave;

Query OK, 0 rows affected (0.31 sec)

GTID 的工作原理

1、當一個事務在主庫端執行并提交時,產生GTID,一同記錄到 主 的 binlog日志中。

2、binlog傳輸到slave,并存儲到slave的 relaylog后,讀取這個GTID的這個值設置gtid_next變量,即告訴Slave,下一個要執行的GTID值。

3、從服務器的 sql線程從relay log 中獲取GTID,然后對比 slave 自己的 binlog 是否有該 GTID。

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

5、如果沒有記錄,slave就會執行該 GTID事務,并記錄該 GTID 到自身的 binlog,在讀取執行事務前會先檢查其他session持有該GTID,確保不被重復執行。

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

GTID 的優勢

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

2、更簡單的搭建主從復制。

3、比傳統的復制更加安全。

4、GTID是連續的沒有空洞的,保證數據的一致性,零丟失。

配置 master 節點

[root@rehl-10 mysql]# vim /etc/my.cnf

log-slave-updates=on

gtid-mode=on

enforce-gtid-consistency=ON

配置 slave 節點

[root@rehl-15 mysql]# vim /etc/my.cnf

gtid-mode=ON

enforce-gtid-consistency=ON

log-slave-updates=ON

MASTER_AUTO_POSITION=1

設置指點服務器

在slave從服務器上設置將從服務器指向主服務器,并啟動復制線程:

mysql> CHANGE MASTER TO MASTER_HOST='192.168.10.71', MASTER_USER='mary', MASTER_PASSWORD='123123', MASTER_AUTO_POSITION=1;

mysql> start slave;

mysql> show slave status \G;

支持 GTID 模式

同時支持 半同步復制

總結

以上是生活随笔為你收集整理的mysql 半同步_mysql 主从同步 与 半同步的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。