MySQL復制: Galera

MySQL復制: Galera

mysql 主從復制

前言

之前介紹了MySQL復制的各種解決方案, 但是我個人還是感覺Galera最好用也最實用, 什么是Galera, 它強大在哪里, 這篇文章就帶你認識這個強大的工具

Galera Replication簡介

Galera Repplication

  • Galera復制發生在事務提交時, 通過廣播事務寫集群應用

  • 客戶端直接連接到 Galera Cluster DMBS就和連接到原生的DBMS一樣

  • wsrep API, 定義了Galera和DBMS之間的接口

Galera Cluster的特點

Galera是為MySQL提供的一個真正意義上的多主(M/M)集群, Galera Cluster是一個易于使用的高可用解決方案, 可提高系統的平均無故障時間, 并且提供數據的可靠性和集群的可擴展性

Galera Cluster的強大功能

  • 同步復制

  • 多主模型

  • 可以在任意節點讀寫

  • 自動控制各個節點的升級和降級

  • 行級的并行控制

  • 規模較小的客戶端延遲

Galera-Cluster在網絡拓撲所處的位置 

下載 (2).png

MariaDB-Galera-Server

好吧、這里和標題不符合, 因為我目前只有MariaDB-Galera的包, 所以有使用MariaDB-5.5來做實驗了, 其實配置過程和MySQL-5.5并無區別

還有要注意的一點: Galera集群不需要提前配置MySQL復制, 并且也不需要基于MySQL復制

安裝MariaDB-Galear-Server前, 不能安裝MariaDB, 其實MariaDB-Gelera算是MariaDB的一個分支

下載地址

環境部署

實驗環境

node1.anyisalin.com IP_addr=172.16.1.2 
node2.anyisalin.com IP_addr=172.16.1.3 
node3.anyisalin.com IP_addr=172.16.1.4

安裝Galera-Cluster

我這里通過官方下載下來的rpm包做成了一個yum源來安裝, 大家安裝也可以指向官方的yum源

[root@node1 ~]# yum install MariaDB-Galera-server MariaDB-client --nogpgcheck -y
[root@node2 ~]# yum install MariaDB-Galera-server MariaDB-client --nogpgcheck -y
[root@node3 ~]# yum install MariaDB-Galera-server MariaDB-client --nogpgcheck -y

配置步驟

首先配置node1

[root@node1 ~]# vim /etc/my.cnf.d/server.cnf  #修改配置文件mysqld段為如下

   [mysqld]
   wsrep_provider = /usr/lib64/galera/libgalera_smm.so
   wsrep_cluster_address = "gcomm://172.16.1.2,172.16.1.3,172.16.1.4"
   wsrep_cluster_name = 'mycluster'
   wsrep_node_name = 'node1'
   wsrep_node_address = '172.16.1.2'
   binlog_format=row
   default_storage_engine=InnoDB
   innodb_autoinc_lock_mode=2
   bind-address=0.0.0.0
   server_id=1

配置node2

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

   [mysqld]
   wsrep_provider = /usr/lib64/galera/libgalera_smm.so
   wsrep_cluster_address = "gcomm://172.16.1.2,172.16.1.3,172.16.1.4"
   wsrep_cluster_name = 'mycluster'
   wsrep_node_name = 'node2'         #注意修改
   wsrep_node_address = '172.16.1.3'  #這里改為自己的IP
   binlog_format=row
   default_storage_engine=InnoDB
   innodb_autoinc_lock_mode=2
   bind-address=0.0.0.0
   server_id=2      #server_id一定要改

配置node3

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

   [mysqld]
   wsrep_provider = /usr/lib64/galera/libgalera_smm.so
   wsrep_cluster_address = "gcomm://172.16.1.2,172.16.1.3,172.16.1.4"
   wsrep_cluster_name = 'mycluster'
   wsrep_node_name = 'node3'         #注意修改
   wsrep_node_address = '172.16.1.4'  #這里改為自己的IP
   binlog_format=row
   default_storage_engine=InnoDB
   innodb_autoinc_lock_mode=2
   bind-address=0.0.0.0
   server_id=3     #server_id一定要改

啟動服務

首先我們要在一個節點初始化集群

[root@node1 ~]# service mysql start --wsrep-new-cluster   #注意:這里是mysql不是mysqld
Starting MySQL....                                         [  OK  ]

依次在其他節點啟動

[root@node2 ~]# service mysql start    #可能有點慢, 耐心等待
Starting MySQL............................SST in progress, setting sleep higher.

[root@node3 ~]# service mysql start    #可能有點慢, 耐心等待
Starting MySQL......SST in progress, setting sleep higher.

測試同步

[root@node1 ~]# mysql  #這里是node1

MariaDB [(none)]> CREATE DATABASE galeradb;  #在node1上創建數據庫
Query OK, 1 row affected (0.00 sec)


[root@node2 ~]# mysql  #這里是node1

MariaDB [(none)]> SHOW DATABASES;  #在node2上能夠看到node1創建的數據庫
+--------------------+
| Database           |
+--------------------+
| information_schema |
| galeradb           |
| mysql              |
| performance_schema |
| test               |
+--------------------+
5 rows in set (0.00 sec)

MariaDB [(none)]> use galeradb;   #在node2上創建表
Database changed

MariaDB [galeradb]> CREATE TABLE t1 (id int  auto_increment primary key, name char(4));
Query OK, 0 rows affected (0.02 sec)

[root@node3 ~]# mysql  #這里是node1

MariaDB [(none)]> USE galeradb;
Database changed

MariaDB [galeradb]> DESC t1;  #在node3能夠看到node2創建的表
+-------+---------+------+-----+---------+----------------+
| Field | Type    | Null | Key | Default | Extra          |
+-------+---------+------+-----+---------+----------------+
| id    | int(11) | NO   | PRI | NULL    | auto_increment |
| name  | char(4) | YES  |     | NULL    |                |
+-------+---------+------+-----+---------+----------------+
2 rows in set (0.00 sec)



MariaDB [galeradb]> SHOW STATUS LIKE 'wsrep%';  #通過這個命令可以看到galera集群的相關信息
+----------------------------+-------------------------------------------------+
| Variable_name              | Value                                           |
+----------------------------+-------------------------------------------------+
| wsrep_local_state_uuid     | 57ba6356-0d44-11e6-8ed8-2fa7f726428a            |
| wsrep_protocol_version     | 4                                               |
| wsrep_last_committed       | 2                                               |
| wsrep_replicated           | 0                                               |
| wsrep_replicated_bytes     | 0                                               |
| wsrep_received             | 5                                               |
| wsrep_received_bytes       | 630                                             |
| wsrep_local_commits        | 0                                               |
| wsrep_local_cert_failures  | 0                                               |
| wsrep_local_bf_aborts      | 0                                               |
| wsrep_local_replays        | 0                                               |
| wsrep_local_send_queue     | 0                                               |
| wsrep_local_send_queue_avg | 0.000000                                        |
| wsrep_local_recv_queue     | 0                                               |
| wsrep_local_recv_queue_avg | 0.000000                                        |
| wsrep_flow_control_paused  | 0.000000                                        |
| wsrep_flow_control_sent    | 0                                               |
| wsrep_flow_control_recv    | 0                                               |
| wsrep_cert_deps_distance   | 1.000000                                        |
| wsrep_apply_oooe           | 0.000000                                        |
| wsrep_apply_oool           | 0.000000                                        |
| wsrep_apply_window         | 0.000000                                        |
| wsrep_commit_oooe          | 0.000000                                        |
| wsrep_commit_oool          | 0.000000                                        |
| wsrep_commit_window        | 0.000000                                        |
| wsrep_local_state          | 4                                               |
| wsrep_local_state_comment  | Synced                                          |
| wsrep_cert_index_size      | 3                                               |
| wsrep_causal_reads         | 0                                               |
| wsrep_incoming_addresses   | 172.16.1.2:3306,172.16.1.3:3306,172.16.1.4:3306 |
| wsrep_cluster_conf_id      | 3                                               |
| wsrep_cluster_size         | 3                                               |
| wsrep_cluster_state_uuid   | 57ba6356-0d44-11e6-8ed8-2fa7f726428a            |
| wsrep_cluster_status       | Primary                                         |
| wsrep_connected            | ON                                              |
| wsrep_local_index          | 2                                               |
| wsrep_provider_name        | Galera                                          |
| wsrep_provider_vendor      | Codership Oy <info@codership.com>               |
| wsrep_provider_version     | 23.2.6(r152)                                    |
| wsrep_ready                | ON                                              |
+----------------------------+-------------------------------------------------+
40 rows in set (0.00 sec)



#完成

總結

怎么樣,是不是很簡單的就配置了一個高可用的MySQL復制集群, 我們在前端加上一個負載均衡器就可以負載均衡MySQL

作者水平很低, 如果有錯誤及時指出, 如果你覺得本文寫的好請點一波贊~(≧▽≦)/~ 
作者: AnyISaIln QQ: 1449472454 
感謝: MageEdu

原創文章,作者:Net18-AnyISalIn,如若轉載,請注明出處:http://www.www58058.com/15709

(0)
Net18-AnyISalInNet18-AnyISalIn
上一篇 2016-04-28 19:51
下一篇 2016-04-29 13:50

相關推薦

  • 第三周作業

    1、列出1、列出當前系統上所有已經登錄的用戶的用戶名,注意:同一個用戶登錄多次,則只顯示一次即可。[root@localhost ~]# who | cut -d ‘ ‘ -f1 | sort -u 2、取出最后登錄到當前系統的用戶的相關信息。[root@localhost ~]# who | tail -1 | export &am…

    Linux干貨 2017-12-16
  • 基于BIND實現的DNS正反解析及主從DNS的配置

    基于BIND實現的DNS正反解析及主從DNS的配置 標簽: DNS正反解析 DNS主從復制 測試環境 準備2臺虛擬機,一臺為主DNS,IP地址為:192.168.103.161。另一臺為從DNS,IP地址為:192.168.103.162兩臺都裝好bind,所需包有:bind,bind-utils,bind-libs 主DNS的配置文件 配置主文件/etc/…

    Linux干貨 2016-04-11
  • 【盤點】2017年9-11月運維大會(時間+地點)

    到底未來的運維模式是什么?如今運維人員面臨著怎樣的轉變? 活動家為您精心挑選整理了9-11月七場運維大會希望本文能幫您! CNUTCon 全球運維技術大會2017 大會簡介: CNUTCon全球運維技術大會是由InfoQ主辦的運維&容器技術盛會。大會為期2天,主要面向各行業對運維&容器技術感興趣的中高端技術人員。秉承著“同步前沿技術、共享實戰…

    2017-08-31
  • 0811linux基礎小記(shell編程基礎)

    1.編寫腳本/root/bin/systeminfo.sh,顯示當前主機系統信息,包括主機名,IPv4地址,操作系統版本,內核版本,CPU型號,內存大小,硬盤大小。 #!/bin/bash echo "hostname: `hostname`" echo "OS VERSION: `cat /etc/issue`" e…

    Linux干貨 2016-08-15
  • 文本及文件查找練習

    1、顯示當前系統上root、fedora或user1用戶的默認shell;     ~]# cat /etc/passwd | grep "^\(root\|fedora\|user1\)\>" | cut -d: -f1,7    root:/bin/…

    Linux干貨 2016-10-24
  • N22-第三周博客作業

    1、列出當前系統上所有已經登錄的用戶的用戶名,注意:同一個用戶登錄多次,則只顯示一次即可。 sort -u 在輸出結果中去除重復行 2、取出最后登錄到當前系統的用戶的相關信息。 3、取出當前系統上被用戶當作其默認shell的最多的那個shell。 uniq -c 在輸出行前面加上每行在輸入文件中出現的次數。 sort -rn : -n  …

    Linux干貨 2016-08-29
欧美性久久久久