久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

Mysql中如何實現半同步復制

150次閱讀
沒有評論

共計 5519 個字符,預計需要花費 14 分鐘才能閱讀完成。

本篇文章為大家展示了 Mysql 中如何實現半同步復制,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

一、環境準備:

centos 系統服務器 2 臺、一臺用戶做 Mysql 主服務器,一臺用于做 Mysql 從服務器,配置好 yum 源、防火墻關閉、各節點時鐘服務同步、各節點之間可以通過主機名互相通信

192.168.41.145   master

192.168.41.137  slave

二、準備步驟:

1、iptables -F setenforce 清空防火墻策略,關閉 selinux

2、①vim /etc/hosts

192.168.41.145   master     #各節點之間可以通過主機名互相通信

192.168.41.137  slave

② ntpdate 172.17.0.1  # 各節點時鐘服務同步

3、拿兩臺服務器都使用 yum 方式安裝 Mysql 服務,要求版本一致

4、分別啟動兩臺服務器 mysql 服務,確保服務正常.

三、實現步驟:

1、配置 master 主服務器

對 master 進行配置,包括打開二進制日志,指定唯一的 servr ID。例如,在配置文件加入如下值。

vim /etc/my.cnf

server-id=1 #配置 server-id,讓主服務器有唯一 ID 號

log-bin=mysql-bin #打開 Mysql 日志,日志格式為二進制

skip-name-resolve# 關閉名稱解析,(非必須)

2.創建復制帳號

在 Master 的數據庫中建立一個備份帳戶:每個 slave 使用標準的 MySQL 用戶名和密碼連 master。進行復制操作的用戶會授予 REPLICATION SLAVE 權限。

GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO slave@ 192.168.%.% IDENTIFIED BY ke

3.查看主服務器狀態

在 Master 的數據庫執行 show master status,查看主服務器二進制日志狀態

4、配置 slave 從服務器

對 slave 進行配置,打開中繼日志,指定唯一的 servr ID,設置只讀權限。在配置文件加入如下值

server-id=2 #配置 server-id,讓從服務器有唯一 ID 號

relay_log = mysql-relay-bin #打開 Mysql 日志,日志格式為二進制

read_only = 1 #設置只讀權限

log_bin = mysql-bin #開啟從服務器二進制日志

log_slave_updates = 1 #使得更新的數據寫進二進制日志中

5.啟動從服務器復制線程

①stop  slave;

②reset slave;

③讓 slave 連接 master,并開始重做 master 二進制日志中的事件。

CHANGE MASTER TO

MASTER_HOST= 192.168.41.145 ,

MASTER_USER= slave ,

MASTER_PASSWORD= ke ,【主從密碼要一致】

MASTER_LOG_FILE= mysql-bin.000001 ,

MASTER_LOG_POS=278;

※注意

IP 為 master 的 IP;

密碼和 master 設置一致;

POS 設置查看 master 得到:show master status

④start slave;# 啟動復制線程。

6、查看從服務器狀態

可使用 SHOW SLAVE STATUS\G 查看從服務器狀態,如下所示,也可用 show processlist \G 查看當前復制狀態:

Slave_IO_Running: Yes #IO 線程正常運行

Slave_SQL_Running: Yes #SQL 線程正常運行

【兩者必須同時 YES,才算啟動成功】

附:主從同步出現一下錯誤:

Slave_IO_Running: Connecting

Slave_SQL_Running: Yes

解決方法:

導致 lave_IO_Running 為 connecting 的原因主要有以下 3 個方面:

  1、網絡不通

2、密碼不對

3、pos 不對

四、驗證

在 master 上插入數據,查看 slave 上是否可以同步

create database liuke;# 建數據庫

use liuke;

create table mini_tb(id int(3),name char(10));  # 建表

insert into mini_tb values(001, candy #插入數據

select*from mini_tb;     #查看表內容

在 slave 上查看,可以同步則成功。

五、添加新 slave 服務器

假如 master 已經運行很久了,想對新安裝的 slave 進行數據同步,甚至它沒有 master 的數據。

此時,有幾種方法可以使 slave 從另一個服務開始,例如,從 master 拷貝數據,從另一個 slave 克隆,從最近的備份開始一個 slave。為了加快 Slave 與 master 同步,可

用以下方式先進行數據同步:

(1)master 的某個時刻的數據快照;

(2) 數據庫的備份數據

(3)master 的二進制日志文件。

————–mysql 實現數據庫主主復制 —————-

一、原理

主主復制即在兩臺 MySQL 主機內都可以變更數據,而且另外一臺主機也會做出相應的變更。

如何實現:就是將兩個主從復制有機合并起來。

配置的時候需要注意的問題:主鍵重復,server-id 不能重復。

二、實驗步驟

master:192.168.41.145   slave:192.168.41.137

1、配置文件

定義 master 使用奇數 id

vim   /etc/my.cnf

auto_increment_offset=1    # 起始值。一般填第 n 臺主 MySQL。此時為第一臺主 MySQL

auto_increment_increment=2    # 步進值 auto_imcrement。一般有 n 臺主 MySQL 就填 n

slave 使用偶數 id

auto_increment_offset=2

auto_increment_increment=2

2、  因為主主復制是兩個主從復制組合一起,所以就接著上面主從復制接著配置。

(1)

①在 slave 上創建一個 192.168.41.145 主機可以登錄的 MySQL 用戶。

用戶:bubu   密碼:123

②創建:create user bubu @ 192.168.41.145 IDENTIFIED BY 123

授權:grant replication slave on *.* to bubu @ 192.168.41.145 IDENTIFIED BY 123

mysql FLUSH PRIVILEGES;

③在 192.168.41.137 上查看二進制名和位置:show master status;

(3)告知二進制文件名與位置

在 192.168.41.145 中執行:

change master to  master_host= 192.168.41.137 ,

master_user= bubu ,

master_password= 123 ,

master_log_file= mysql-bin.000004 ,

master_log_pos=601;

主主復制配置完成。

三、測試

(1)

兩個主機分別啟動 slave:start slave;

分別查看 slave 狀態:

192.168.41.145    【replicate-do-db=aa #要同步的數據庫,默認所有庫】

192.168.41.137

Mysql 中如何實現半同步復制

當看到 Slave_IO_Running: YES、Slave_SQL_Running: YES 才表明狀態正常

(2)

①192.168.41.145

MariaDB [mysql] use jesper;

create table tab1(id int);

insert into tab1  values(66

select*from tab1;

②192.168.41.145

MariaDB [mysql] use jesper;

insert into tab1  values(99

select*from tab1;

查看數據:兩個主機數據結果一樣!

Mysql 中如何實現半同步復制Mysql 中如何實現半同步復制

※注意:

1、主主復制配置文件中 auto_increment_increment 和 auto_increment_offset 只能保證主鍵不重復,卻不能保證主鍵有序。

2、當配置完成 Slave_IO_Running、Slave_SQL_Running 不全為 YES 時,show slave status\G 信息中有錯誤提示,可根據錯誤提示進行更正。

常見出錯點:

1、兩臺數據庫都存在 db 數據庫,而第一臺 MySQL db 中有 tab1,第二臺 MySQL db 中沒有 tab1,那肯定不能成功。

2、已經獲取了數據的二進制日志名和位置,又進行了數據操作,導致 POS 發生變更。在配置 CHANGE MASTER 時還是用到之前的 POS。

3、stop slave 后,數據變更,再 start slave。出錯。

終極更正法:重新執行一遍 CHANGE MASTER 就好了

————–MySQL 實現數據庫半同步復制 ————-

半同步復制模式必須在主服務器和從服務器同時中開啟,否則將會默認為異步復制模式。

一、環境準備

①需要安裝方可使用:

mysql INSTALL PLUGIN plugin_name SONAME shared_library_name

半同步復制:

semisync_master.so

semisync_slave.so

②檢查是否有自動加載功能

MariaDB [(none)] show variables like have_dynamic_loading

Mysql 中如何實現半同步復制Mysql 中如何實現半同步復制

③主從復制已經配置好,并且已經工作。

二、實驗步驟

1、主節點設置:

①安裝:INSTALL PLUGIN rpl_semi_sync_master SONAME semisync_master.so

②查看:MariaDB [mydb] SHOW GLOBAL VARIABLES LIKE rpl_semi% #查看半同步復制文件

+————————————+——-+

| Variable_name | Value |

+————————————+——-+

| rpl_semi_sync_master_enabled | OFF |

| rpl_semi_sync_master_timeout | 10000 |

| rpl_semi_sync_master_trace_level | 32 |

| rpl_semi_sync_master_wait_no_slave | ON |

+————————————+——-+

③MariaDB [mydb] SET GLOBAL rpl_semi_sync_master_enabled=ON;【0:關閉;1:開啟】

# 開啟半同步復制,默認是關閉的。

2、從節點設置:

①INSTALL PLUGIN rpl_semi_sync_slave SONAME semisync_slave.so

②MariaDB [mydb] SHOW GLOBAL VARIABLES LIKE rpl_semi% #查看是否加載成功

+———————————+——-+

| Variable_name | Value |

+———————————+——-+

| rpl_semi_sync_slave_enabled | OFF |

| rpl_semi_sync_slave_trace_level | 32 |

+———————————+——-+

③重啟從服務器 IO 線程,手動將異步模式換成半同步模式

MariaDB [mydb] STOP SLAVE IO_THREAD;

MariaDB [mydb] SET GLOBAL  rpl_semi_sync_slave_enabled = ON ;

MariaDB [mydb] SHOW GLOBAL VARIABLES LIKE rpl_semi%

MariaDB [mydb] START SLAVE IO_THREAD;

※可查看從庫錯誤日志觀察是否生效

3、配置文件修改

主從配置文件都添加:

vim /etc/my.cnf

rpl_semi_sync_master_enabled=1 #表示以后啟動 MySQL 將會自動開啟半同步復制

三、測試

摸擬 slave 掛掉,master 等待 10s 仍沒接收到反饋信號,則轉為異步復制模式,繼續執行。

首先同步創建數據庫 aa

1、slave 執行 stop slave; 關閉主從復制

2、master 在 aa 數據庫中創建表 aihao,沒接收到反饋信號,等待十秒后(Rpl_semi_sync_master_timeout=1000 等待超時),繼續執行

master:

Mysql 中如何實現半同步復制Mysql 中如何實現半同步復制

slave:

Mysql 中如何實現半同步復制Mysql 中如何實現半同步復制

3、master 在數據庫中再創建 tab2,不需要等待反饋,直接執行

【當反饋超時時,master 將切換到異步復制模式。此時是異步模式,不需要等待】

Mysql 中如何實現半同步復制Mysql 中如何實現半同步復制

4、slave 執行 start slave,數據開始同步,建立 aihao、tab2,反饋給 master,并切換為半同步復制

Mysql 中如何實現半同步復制Mysql 中如何實現半同步復制

5、slave 執行 stop slave; 關閉主從復制

6、master 在數據庫中創建表 tab3,此時需要等待 10s,接收 slave 反饋信號;等待超時,切換為異步復制模式,繼續執行【步驟 4 時,數據同步已經反饋給 master,此時 master 已經是半同步復制模式】

Mysql 中如何實現半同步復制Mysql 中如何實現半同步復制

上述內容就是 Mysql 中如何實現半同步復制,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注丸趣 TV 行業資訊頻道。

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-08-03發表,共計5519字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 封开县| 云南省| 萍乡市| 齐河县| 湄潭县| 南昌市| 即墨市| 绥滨县| 宁阳县| 涞水县| 富顺县| 潢川县| 娱乐| 祁阳县| 泗阳县| 从江县| 邵阳市| 宣武区| 平潭县| 平武县| 康保县| 汾阳市| 铜鼓县| 清镇市| 城固县| 延边| 阜南县| 启东市| 盖州市| 长丰县| 延吉市| 芮城县| 丹寨县| 霍山县| 昌图县| 仁化县| 宁海县| 韩城市| 鄢陵县| 疏勒县| 彭山县|