亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

初識MariaDB之10——MariaDB Galera Cluster

發布時間:2020-07-02 03:54:41 來源:網絡 閱讀:24020 作者:qiao645 欄目:MySQL數據庫

一、背景介紹

無論是采用binlog或者GTID的方式,其本質都是通過I/O_thread和sql_thread的形式進行的同步,因為無法避免復制延遲而飽受詬病,基于上述MariaDB引入了Galera Cluster來解決此問題。

二、Galera Cluster介紹

Galera Cluster與傳統的復制方式不同,不通過I/O_thread和sql_thread進行同步,而是在更底層通過wsrep實現文件系統級別的同步,可以做到幾乎實時同步,而其上的MySQL對此一無所知

初識MariaDB之10——MariaDB Galera Cluster初識MariaDB之10——MariaDB Galera Cluster

這就要求MySQL能夠調用wsrep提供的API來完成,在Mariadb10.1之前的版本,支持Galera Cluster的版本是與Mariadb分開發行的,其版本名稱就成為Mariadb-Galera,Mariadb10.1以后的版本中MariaDB Galera Cluste不再單獨發行,而是以galera-25.3.12-2.el7.x86_64包的形式出現

三、實驗目的

本次實驗操作系統為CentOS7.4,數據庫版本為MariaDB10.2.14,驗證3節點下通過Galera Cluster實現數據同步。需要說明的是:

1.Galera Cluster最少要求3個節點以上,建議是大于3的奇數,2節點雖然可以部署,但無法避免腦裂的出現

2.盡管Galera Cluster不再需要binlog的形式進行同步,但建議還是在配置文件中開啟該功能,原因是后期如果要有新節點加入,老節點通過SST全量傳輸的方式向新節點傳輸數據,很可能會拖垮性能,所以讓新節點先通過binlog完成同步后在加入Galera Cluster是一種不錯的選擇

3.在Mariadb10.1之后版本中實現Galera Cluster用到的庫文件libgalera_smm.so通過rpm -ql galera-25.3.12-2.el7.x86_64查找其位置

初識MariaDB之10——MariaDB Galera Cluster初識MariaDB之10——MariaDB Galera Cluster

四、操作步驟

1.node3節點主機操作

(1)安裝MariaDB 10.2.14

(2)編輯配置文件并啟動服務

[root@host3 ~]# vim /etc/my.cnf.d/server.cnf

[mysqld]

datadir=/var/lib/mysql

socket=/var/lib/mysql/mysql.sock

skip_name_resolve=ON

relay_log=mysql-relaylog

relay_log_index=mysql-relaylog

relay_log_purge=OFF

slow_query_log=ON

server-id=10

innodb_file_per_table=ON

binlog_format=ROW

log_bin=mysql-binlog

log_slave_updates=ON

[galera]

# Mandatory settings

wsrep_on=ON

wsrep_cluster_name=ark

wsrep_provider=/lib64/galera/libgalera_smm.so

wsrep_cluster_address=gcomm://172.16.10.30,172.16.10.40,172.16.10.50

binlog_format=row

default_storage_engine=InnoDB

innodb_autoinc_lock_mode=2

innodb_doublewrite=1

[root@host3 ~]# galera_new_cluster  #第一次啟用時在任意節點使用

(3)將配置文件發送給node4和node5

[root@host3 ~]# scp -r /etc/my.cnf.d/server.cnf root@172.16.10.40:/etc/my.cnf.d/

[root@host3 ~]# scp -r /etc/my.cnf.d/server.cnf root@172.16.10.50:/etc/my.cnf.d/

2.node4節點操作

(1)將配置文件中的server_id改為20

(2)啟動MySQL服務

可以在日志中看到Galera Cluster的SST默認使用rsync傳輸

初識MariaDB之10——MariaDB Galera Cluster初識MariaDB之10——MariaDB Galera Cluster

(3)在node4創建一個用于復制的賬戶

[root@host4 ~]# mysql

MariaDB [(none)]> grant replication slave on *.* to 'bak'@'172.16.10.%' identified by 'bakpass';

MariaDB [(none)]> flush privileges;

(4)隨意創建數據,在node3上驗證是否同步

MariaDB [(none)]> CREATE DATABASE `hellodb`;

MariaDB [(none)]> CREATE TABLE `students` (

   ->   `StuID` int(10) unsigned NOT NULL AUTO_INCREMENT,

   ->   `Name` varchar(50) NOT NULL,

   ->   `Age` tinyint(3) unsigned NOT NULL,

   ->   `Gender` enum('F','M') NOT NULL,

   ->   `ClassID` tinyint(3) unsigned DEFAULT NULL,

   ->   `TeacherID` int(10) unsigned DEFAULT NULL,

   ->   PRIMARY KEY (`StuID`)

   -> );

MariaDB [(none)]> insert into hellodb.students (name,age) values ('QiaoFeng',40);

MariaDB [(none)]> insert into hellodb.students (name,age) values ('DuanYu',21);

MariaDB [(none)]> insert into hellodb.students (name,age) values ('XuZhu',24);

(5)備份當前數據庫并發送到node5

[root@host4 ~]# mysqldump -uroot  --databases hellodb --master-data=2 --single-transaction --quick > /tmp/hellodb.sql

[root@host4 ~]# scp -r /tmp/hellodb.sql root@172.16.10.50:/tmp/

(6)再插入數據,模擬備份后又有新增數據

MariaDB [(none)]> insert into hellodb.students (name,age) values ('XuanCi','66');

3.node5操作

(1)將配置文件中的server_id改為30,注銷[galera]段(目的是先通過binlog同步)

(2)啟動MySQL服務

(3)查看備份時node4的binlog及position

初識MariaDB之10——MariaDB Galera Cluster初識MariaDB之10——MariaDB Galera Cluster

(4)恢復數據庫,并驗證

MariaDB [hellodb]> source /tmp/hellodb.sql

MariaDB [hellodb]> change master to master_host='172.16.10.40',master_user='bak',master_password='bakpass',master_port=3306,master_log_file='mysql-binlog.000004',master_log_pos=2061,master_connect_retry=10;

MariaDB [hellodb]> start slave;

MariaDB [hellodb]> select * from students;

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

| StuID | Name     | Age | Gender | ClassID | TeacherID |

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

|     3 | QiaoFeng |  40 | F      |    NULL |      NULL |

|     5 | DuanYu   |  21 | F      |    NULL |      NULL |

|     7 | XuZhu    |  24 | F      |    NULL |      NULL |

|     9 | XuanCi   |  66 | F      |    NULL |      NULL |

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

(5)停止主從復制和MySQL服務

MariaDB [hellodb]> start slave;

[root@host5 ~]# systemctl stop mariadb.service

(6)取消[galera]段注銷并重啟服務

再在任意節點添加數據3個節點間都可以進行同步,至此操作全部完成

補充說明:

1.Galera Cluster節點停止服務后,后期如果數據有更新,只需要重啟MySQL服務,數據會自動同步

2.后期如果有新的節點加入,可以在新節點的配置文件里將自己的IP地址加入wsrep_cluster_address變量中后再啟動數據庫,這樣之前節點配置文件里的wsrep_cluster_address變量中就算沒有新節點的IP地址也能實現同步,建議在老節點wsrep_cluster_address變量中加入新節點IP地址后重啟服務

存在的疑問:

在任意Galera Cluster節點導入一個數據庫,無論是命令行下通過mysql < xxx方式還是使用sql語句source xxx方式,只有當前節點有數據,其他節點僅創建該數據庫和庫中表,但表中無任何數據,重啟MySQL服務后也不會同步,原因不明


向AI問一下細節

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

AI

安阳市| 关岭| 红桥区| 陇南市| 香河县| 大悟县| 肇东市| 栾川县| 朔州市| 安多县| 社旗县| 繁峙县| 水富县| 肇东市| 饶平县| 汾西县| 诸暨市| 兴宁市| 克拉玛依市| 长春市| 柘城县| 修水县| 温宿县| 扎囊县| 陇西县| 工布江达县| 乐东| 高要市| 富顺县| 蕲春县| 深圳市| 新沂市| 乌审旗| 乃东县| 龙井市| 新民市| 岫岩| 北票市| 大方县| 开原市| 蓝山县|