溫馨提示×

溫馨提示×

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

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

MariaDB-MMM高可用群集

發布時間:2020-07-08 11:15:44 來源:網絡 閱讀:29544 作者:cchenyz 欄目:MySQL數據庫

什么是MMM?

MMM(MySQL主主復制管理器)是一套支持雙主故障切換和雙主日常管理的腳本程序。MMM使用Perl語言開發,主要用來監控和管理MySQL Master-Master(雙主)復制,雖然叫做雙主復制,但是業務上同一時刻只允許對一個主進行寫入,另一臺備選主上提供部分讀服務,以加速在主主切換時備選主的預熱,可以說MMM這套腳本程序一方面實現了故障切換的功能,另一方面其內部附加的工具腳本也可以實現多個Slave的read負載均衡。

MMM提供了自動和手動兩種方式移除一組服務器中復制延遲較高的服務器的虛擬IP,同時它還可以備份數據,實現兩節點之間的數據同步等。由于MMM無法完全保證數據的一致性,所以MMM適用于對數據的一致性要求不是很高,但是又想最大程度地保證業務可用性的場景。對于那些數據一致性要求很高的業務,非常不建議采用MMM這種高可用架構。

MMM是一套靈活的腳本程序,基于perl實現,用來對mysql replication進行監控和故障遷移,并能管理MySQL Master-Master復制的配置。

關于MMM高可用架構的說明如下

  • mmm_mon:監控進程,負責所有的監控工作,決定和處理所有節點角色活動。此腳本需要在監管機上面運行
  • mmm_agent:運行在每個MySQL服務器上的代理進程,完成監控的探針工作和執行簡單的遠端服務設置。此腳本需要在監管機上面運行
  • mmm_control:一個簡單的腳本,提供mmm_mond進程的命令
  • mysql_mmm的監管端會提供多個虛擬IP(VIP),包括一個可寫VIP,多個可讀VIP,通過監管的管理。這些IP會綁定在可用MySQL之上,當某一臺MySQL宕機時,監管會將VIP遷移至其他MySQL。
    在整個監管過程中,需要在MySQL中添加相關授權用戶,以便讓MySQL可以支持監理機的維護。授權的用戶包括一個mmm_monitor用戶和一個mmm_agent用戶,如果想使用MMM的備份工具則還要添加一個mmm_tools用戶。

什么是MariaDB數據庫?

MariaDB數據庫管理系統是MySQL的一個分支,主要由開源社區在維護,采用GPL授權許可 MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能輕松成為MySQL的代替品。在存儲引擎方面,使用XtraDB來代替MySQL的InnoDB。MariaDB基于事務的Maria存儲引擎,替換了MySQL的MyISAM存儲引擎,它使用了Percona的 XtraDB,InnoDB的變體,分支的開發者希望提供訪問即將到來的MySQL 5.4 InnoDB性能。這個版本還包括了 PrimeBase XT (PBXT) 和 FederatedX存儲引擎。

項目環境

本次項目使用五臺centos7服務器模擬搭建

主機 操作系統 IP地址 VIP 主要軟件
MariaDB-m1 主服務器 CentOS-7-x86_64 172.16.10.23 172.16.10.100 MariaDB、MMM
MariaDB-m2 主服務器 CentOS-7-x86_64 172.16.10.20 172.16.10.100 MariaDB、MMM
MariaDB-m3 從服務器 CentOS-7-x86_64 172.16.10.24 172.16.10.110 MariaDB、MMM
MariaDB-m4 從服務器 CentOS-7-x86_64 172.16.10.22 172.16.10.120 MariaDB、MMM
MariaDB-monitor CentOS-7-x86_64 172.16.10.21 MMM

MariaDB-MMM高可用群集

搭建MariaDB多主多從模式

安裝MariaDB

配置ALI云源,安裝epel-release源
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
yum -y install epel-release
yum clean all && yum makecache   //清空所有,重新更新元數據緩存

配置epel源須在五臺服務器上都操作

安裝mariadb
yum -y install mariadb-server mariadb
關閉防火墻及selinux防火墻
systemctl disable firewalld.service
systemctl stop firewalld.service
setenforce 0

以上三個步驟在另外三臺數據庫服務器上一摸一樣,重復三遍

配置mariadb配置文件

vim /etc/my.cnf
[mysqld]
log_error=/var/lib/mysql/mysql.err               //錯誤日志文件位置
log=/var/lib/mysql/mysql_log.log                 //訪問日志文件位置
log_slow_queries=/var/lib/mysql_slow_queris.log  //慢日志文件位置
binlog-ignore-db=mysql,information_schema        //mysql,information_schema這兩個數據庫不生成二進制日志文件
character_set_server=utf8
log_bin=mysql_bin                                //二進制日志文件功能開啟
server_id=10                                     //id每臺都不相同
log_slave_updates=true                           //開啟同步
sync_binlog=1                                    //1為安全值
auto_increment_increment=2
auto_increment_offset=1
開啟服務
systemctl start mariadb    //開啟服務
netstat -anpt | grep 3306  //查看服務狀態

配置文件修改時,只需將原有的[mysqld]直接刪除,大約九行。替換為以上內容,四臺服務器(MariaDB-m1、MariaDB-m2、MariaDB-m3、MariaDB-m4)的修改方法基本一致,唯一的不同是server_id不可相同,只要不同即可。
MariaDB-MMM高可用群集

配置MariaDB-m1、MariaDB-m2主主模式

  • 先查看log bin日志和pos值的位置
    在MariaDB-m1、MariaDB-m2中分別進行操作
    mysql   //登陸數據庫
    show master status;

    MariaDB-MMM高可用群集
    MariaDB-MMM高可用群集

  • MariaDB-m1、MariaDB-m2互相提升訪問權限
    在兩臺主服務器上分別執行
    #MariaDB-m1
    grant replication slave on *.* to 'replication'@'172.16.10.%' identified by '123456';
    //使用賬戶為replication 密碼為123456
    change master to master_host='172.16.10.20',master_user='replication',master_password='123456',master_log_file='mysql_bin.000003',master_log_pos=245;
    //當在MariaDB-m1上執行時,master_host地址為MariaDB-m2地址
    ···
    #MariaDB-m2
    grant replication slave on *.* to 'replication'@'172.16.10.%' identified by '123456';
    //在兩臺master上分別執行,slave不需要執行
    change master to master_host='172.16.10.23',master_user='replication',master_password='123456',master_log_file='mysql_bin.000003',master_log_pos=245;
    //當在MariaDB-m2上執行時,master_host地址為MariaDB-m1地址
  • 開啟同步,同時查看服務器的主從狀態
    Slave_IO_Running: Yes、Slave_SQL_Running: Yes這兩個條目的結果,必須為yes
    start slave;
    show slave status\G;

    MariaDB-MMM高可用群集
    MariaDB-MMM高可用群集

    測試主主同步是否成功

    在主服務器上創建一個庫,然后查看從服務器上是否有新創建的庫,若新創建庫存在;則再嘗試在從服務器上刪除新創建的庫,若是此時主服務器上的庫被成功刪除,則表示主主復制創建成功。

    配置MariaDB-m3、MariaDB-m4作為MariaDB-m1的從服務器

    在MariaDB-m3、MariaDB-m4上進行操作

  • 查看MariaDB-m1上log bin日志和pos值的位置
    mysql
    show master status;

    注意日志文件和位置參數的改變
    MariaDB-MMM高可用群集

  • 在MariaDB-m3、MariaDB-m4上分別執行
    change master to master_host='172.16.10.23',master_user='replication',master_password='123456',master_log_file='mysql_bin.000004',master_log_pos=245;
  • 分別查看MariaDB-m3、MariaDB-m4上主從狀態
    start slave;
    show slave status\G;

    MariaDB-MMM高可用群集
    MariaDB-MMM高可用群集

    安裝配置MMM

    安裝MMM

    我們在最開始的操作中已經對所有的五臺服務器都安裝了epel源,所以這里只需要使用yum安裝即可,所有的服務器都需安裝mysql-mmm*

    yum -y install mysql-mmm*
    配置MMM

    五臺服務器中的該配置文件都是相同的

    vim /etc/mysql-mmm/mmm_common.conf
    active_master_role      writer
    <host default>
    cluster_interface       ens33
    pid_path                /run/mysql-mmm-agent.pid
    bin_path                /usr/libexec/mysql-mmm/
    replication_user        replication
    replication_password    123456
    agent_user              mmm_agent
    agent_password          123456
    </host>
    <host db1>
    ip      172.16.10.23
    mode    master
    peer    db2
    </host>
    <host db2>
    ip      172.16.10.20
    mode    master
    peer    db1
    </host>
    <host db3>
    ip      172.16.10.24
    mode    slave
    </host>
    <host db4>
    ip      172.16.10.22
    mode    slave
    </host>
    <role writer>
    hosts   db1, db2
    ips     172.16.10.100
    mode    exclusive
    </role>
    <role reader>
    hosts   db3, db4
    ips     172.16.10.110, 172.16.10.120
    mode    balanced
    </role>
    </host>
    <host db4>
    ip      172.16.10.22
    mode    slave
    </host>
    <role writer>
    hosts   db1, db2
    ips     172.16.10.100
    mode    exclusive
    </role>
    <role reader>
    hosts   db3, db4
    ips     172.16.10.110, 172.16.10.120
    mode    balanced
    </role>

    MariaDB-MMM高可用群集

快速為其他服務器修改配置文件
scp /etc/mysql-mmm/mmm_common.conf root@172.16.10.20:/etc/mysql-mmm/
scp /etc/mysql-mmm/mmm_common.conf root@172.16.10.24:/etc/mysql-mmm/
scp /etc/mysql-mmm/mmm_common.conf root@172.16.10.22:/etc/mysql-mmm/
scp /etc/mysql-mmm/mmm_common.conf root@172.16.10.21:/etc/mysql-mmm/

MariaDB-MMM高可用群集

在數據庫主機上修改/etc/mysql-mmm/mmm_agent.conf文件,根據不同主機,修改不同的名稱
vim /etc/mysql-mmm/mmm_agent.conf
this db1  //按著順序分別修改為db1、db2、db3、db4

MariaDB-MMM高可用群集

對所有數據庫服務器進行一波安排
  • 在所有數據庫上為mmm_agent授權
    grant super, replication client, process on *.* to 'mmm_agent'@'172.16.10.%' identified by '123456';
  • 在所有數據庫上為mmm_moniter授權
    grant replication client on *.* to 'mmm_monitor'@'172.16.10.%' identified by '123456';
  • 重新加載權限表
    flush privileges;
  • 在所有數據庫服務器上啟動mysql-mmm-agent
    systemctl start mysql-mmm-agent.service    //開啟服務
    systemctl enable mysql-mmm-agent.service   //加入開機自啟動

    配置監控主機

    在監控主機(MariaDB-monitor)上修改/etc/mysql-mmm/mmm_mon.conf文件
    vim /etc/mysql-mmm/mmm_mon.conf
    include mmm_common.conf
    <monitor>
    ip                  127.0.0.1
    pid_path            /run/mysql-mmm-monitor.pid
    bin_path            /usr/libexec/mysql-mmm
    status_path         /var/lib/mysql-mmm/mmm_mond.status
    ping_ips            172.16.10.23,172.16.10.20,172.16.10.24,172.16.10.22
    auto_set_online     10
    # The kill_host_bin does not exist by default, though the monitor will
    # throw a warning about it missing.  See the section 5.10 "Kill Host
    # Functionality" in the PDF documentation.
    #
    # kill_host_bin     /usr/libexec/mysql-mmm/monitor/kill_host
    #
    </monitor>
    <host default>
    monitor_user        mmm_monitor
    monitor_password    123456
    </host>
    debug 0

    MariaDB-MMM高可用群集

關閉防火墻及selinux防火墻
systemctl disable firewalld.service
systemctl stop firewalld.service
setenforce 0
啟動服務,查看各節點狀態
systemctl start mysql-mmm-monitor.service

MariaDB-MMM高可用群集
ERROR: Can't connect to monitor daemon!,如若出現報錯,可嘗試重啟服務解決

查看監控服務器對所有數據庫的監控是否完善
mmm_control checks all  //檢查結果需為全部ok

MariaDB-MMM高可用群集

故障測試

停止m1,查看VIP是否為漂移到m2上
systemctl stop mariadb.service   //關閉m1

MariaDB-MMM高可用群集

systemctl start mariadb.service  //開啟m1 主不會搶占

MariaDB-MMM高可用群集

停止m3,查看VIP漂移狀態
systemctl stop mariadb.service   //關閉m3

MariaDB-MMM高可用群集

systemctl start mariadb.service   //開啟m3,VIP會重新回到各自服務器上

MariaDB-MMM高可用群集

向AI問一下細節

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

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女