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

溫馨提示×

溫馨提示×

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

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

MySQL基操---高可用架構MMM搭建與容災測試

發布時間:2020-07-17 07:46:46 來源:網絡 閱讀:984 作者:一介余民 欄目:MySQL數據庫

MMM介紹

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

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

MySQL-MMM優缺點

優點:高可用性,擴展性好,出現故障自動切換,對于主主同步,在同一時間只提供一臺數據庫寫操作,保證的數據的一致性。

缺點:Monitor節點是單點,可以結合Keepalived實現高可用。

MySQL-MMM工作原理

MMM(Master-Master replication managerfor Mysql,Mysql主主復制管理器)是一套靈活的腳本程序,基于perl實現,用來對mysql replication進行監控和故障遷移,

并能管理mysql Master-Master復制的配置(同一時間只有一個節點是可寫的)。

mmm_mond:監控進程,負責所有的監控工作,決定和處理所有節點角色活動。此腳本需要在監管機上運行。

mmm_agentd:運行在每個mysql服務器上(Master和Slave)的代理進程,完成監控的探針工作和執行簡單的遠端服務設置。此腳本需要在被監管機上運行。

mmm_control:一個簡單的腳本,提供管理mmm_mond進程的命令。

mysql-mmm的監管端會提供多個虛擬IP(VIP),包括一個可寫VIP,多個可讀VIP,通過監管的管理,這些IP會綁定在可用mysql之上,當某一臺mysql宕機時,監管會將VIP遷移

至其他mysql。在整個監管過程中,需要在mysql中添加相關授權用戶,以便讓mysql可以支持監理機的維護。授權的用戶包括一個mmm_monitor用戶和一個mmm_agent用戶,如果

想使用mmm的備份工具則還要添加一個mmm_tools用戶。

 

實驗基本環境

實驗系統:CentOS 7_x86_64

實驗前提:防火墻和selinux都關閉!

實驗說明:本實驗共有5臺主機,IP分配如表

實驗軟件:mariadb     mysql-mmm mysql-mmm-monitor mysql-mmm-agent

功能,IP地址與別名分配表

功能IPid
主服務器一192.168.137.10M1
主服務器二192.168.137.11M2
從服務器一192.168.137.12s1
從服務器二192.168.137.13s2
mmm監控192.168.137.14mo

 

實驗描述拓撲圖

MySQL基操---高可用架構MMM搭建與容災測試

操作!

所有機器中!

關閉所有機器的防火墻和安全策略
systemctl stop firewalld.service 

setenforce 0獲取阿里云的yum基礎配置

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

安裝epel源

yum -y install epel-release

清空yum緩存,重新建立元數據

yum clean all && yum makecache

安裝mariadb,MMM的客戶端和服務端

yum install mariadb-server mariadb –y
yum install mysql-mmm* -y


 

M1中

修改m1配置文件,配置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
character_set_server=utf8
log_bin=mysql_bin
server_id=1log_slave_updates=true              //允許slave更新日志
sync_binlog=1auto_increment_increment=2
auto_increment_offset=1
啟動服務
systemctl start mariadb.service



使用scp命令把my.cnf這個配置文件同步復制到其他的三臺mysql主機上,除了監控機器MO。
scp /etc/my.cnf root@192.168.137.11:/etc/
scp /etc/my.cnf root@192.168.137.12:/etc/
scp /etc/my.cnf root@192.168.137.13:/etc/

務必單獨修改每臺機器/etc/my.cnf中
server_id=1這里M2改成了
server_id=2以此類推

 

逐個驗證時候成功安裝

[root@cent ~]# mysql
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 2Server version: 5.5.60-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]>

 

主從復制,主主復制

M1,M2中

查看日志以及位置參數

MariaDB [(none)]> show master status;

兩臺得出的結果是相同的
MariaDB [(none)]> show master status;
+------------------+----------+--------------+--------------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB         |
+------------------+----------+--------------+--------------------------+
| mysql_bin.000003 |      245 |              | mysql,information_schema |
+------------------+----------+--------------+--------------------------+
1 row in set (0.00 sec)

M1,M2互相授權

M1,M2:
MariaDB [(none)]> grant replication slave on *.* to 'replication'@'192.168.137.%' identified by '123456';

同步
M1:
change master to master_host='192.168.137.11',master_user='replication',master_password='123456',master_log_file='mysql_bin.000003',master_log_pos=245;


M2:
change master to master_host='192.168.137.10',master_user='replication',master_password='123456',master_log_file='mysql_bin.000003',master_log_pos=245;


 

S1,S2中的同步,這里都以M1為同步對象。

change master to master_host='192.168.137.10',master_user='replication',master_password='123456',master_log_file='mysql_bin.000003',master_log_pos=245;
flush privileges;   //刷新

 

驗證salve

啟動salve
MariaDB [(none)]> start slave;
Query OK, 0 rows affected (0.00 sec)
查看slave狀態
MariaDB [(none)]> show slave status\G
看到這兩項為yes即成功
Slave_IO_Running: Yes
Slave_SQL_Running: Yes

 

配置MMM

隨便一臺機器

修改如下

vim /etc/mysql-mmm/mmm_common.conf 
<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 db1>
    ip      192.168.137.10                     //M1地址
    mode    master
    peer    db2                                //指向M2
    </host>
    
    <host db2>
    ip      192.168.137.11                     //M2地址
    mode    master
    peer    db1                                //指向M1
    </host>
    
    <host db3>
    ip      192.168.137.12                     //S1地址
    mode    slave
    </host>
    
    <host db4>
    ip      192.168.137.13                    //S2地址
    mode    slave
    </host>
    
    <role writer>
    hosts   db1, db2                         //M1與M2
    ips     192.168.137.100                  //M1與M2共同虛擬一個IP
    mode    exclusive
    </role>
    
    <role reader>
    hosts   db3, db4                                //S1與S2
    ips     192.168.137.200, 192.168.137.150   //S1,S2的虛擬IP
    mode    balanced</role>
    
復制到其他四臺主機,包括MO監控機   
scp /etc/mysql-mmm/mmm_common.conf root@192.168.137.11:/etc/mysql-mmm/

 

MO監控機操作

vim /etc/mysql-mmm/mmm_mon.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            192.168.137.10,192.168.137.11,192.168.137.12,192.168.137.13,192.168.137.14//列出所有數據庫IP
    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


 

再MySQL中給MMM授權,每臺機器都要

grant super, replication client,process on *.* to 'mmm_agent'@'192.168.137.%' identified by '123456';
grant replication client on *.* to 'mmm_monitor'@'192.168.137.%' identified by '123456';
flush privileges;         //刷新


 

更新每臺機器的server名,不能相同,我設置了12345。

vim /etc/mysql-mmm/mmm_agent.conf
修改如下
this db1

設置五臺!


 

啟動服務

M1,M2,S1,S2啟動agent
systemctl start mysql-mmm-agent.service

systemctl enable mysql-mmm-agent.service

監控機啟動監控服務

systemctl start mysql-mmm-monitor.service

 

監控服務的查驗,如下一切正常!

查看被監控的主機
[root@zcent4 mysql-mmm]# mmm_control show
  db1(192.168.137.10) master/ONLINE. Roles: writer(192.168.137.100)
  db2(192.168.137.11) master/ONLINE. Roles: 
  db3(192.168.137.12) slave/ONLINE. Roles: reader(192.168.137.200)
  db4(192.168.137.13) slave/ONLINE. Roles: reader(192.168.137.150)

切換虛擬ip綁定的主機
[root@zcent4 mysql-mmm]# mmm_control move_role writer db2
OK: Role 'writer' has been moved from 'db1' to 'db2'. Now you can wait some time and check new roles info![root@zcent4 mysql-mmm]# mmm_control show
  db1(192.168.137.10) master/ONLINE. Roles: 
  db2(192.168.137.11) master/ONLINE. Roles: writer(192.168.137.100)
  db3(192.168.137.12) slave/ONLINE. Roles: reader(192.168.137.200)
  db4(192.168.137.13) slave/ONLINE. Roles: reader(192.168.137.150)

檢測監控功能完善性
[root@zcent4 mysql-mmm]# mmm_control checks alldb4  ping         [last change: 2018/09/07 23:02:12]  OK
db4  mysql        [last change: 2018/09/07 23:03:06]  OK
db4  rep_threads  [last change: 2018/09/07 23:11:57]  OK
db4  rep_backlog  [last change: 2018/09/07 23:11:52]  OK: Backlog is nulldb2  ping         [last change: 2018/09/07 22:57:09]  OK
db2  mysql        [last change: 2018/09/07 22:57:09]  OK
db2  rep_threads  [last change: 2018/09/07 22:57:09]  OK
db2  rep_backlog  [last change: 2018/09/07 22:57:09]  OK: Backlog is nulldb3  ping         [last change: 2018/09/07 23:02:09]  OK
db3  mysql        [last change: 2018/09/07 23:02:50]  OK
db3  rep_threads  [last change: 2018/09/07 23:11:42]  OK
db3  rep_backlog  [last change: 2018/09/07 23:11:36]  OK: Backlog is nulldb1  ping         [last change: 2018/09/07 22:57:09]  OK
db1  mysql        [last change: 2018/09/07 22:57:09]  OK
db1  rep_threads  [last change: 2018/09/07 22:57:09]  OK
db1  rep_backlog  [last change: 2018/09/07 22:57:09]  OK: Backlog is null

 



故障測試!


首先M1,M2授權給測試機器

MariaDB [(none)]> grant all on *.* to 'testdb'@'192.168.137.14' identified by '123456';
Query OK, 0 rows affected (0.01 sec)

MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.00 sec)


用監控機當客戶機測試,成功登陸

[root@zcent4 mysql-mmm]# mysql -utestdb -p123456 -h 192.168.137.100
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 2430Server version: 5.5.60-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]>


客戶機創建數據庫,使用主服務器查看

客戶機:
MariaDB [(none)]> create database teest;
Query OK, 1 row affected (0.00 sec)

M1:
MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mood               |
| mysql              |
| performance_schema |
| teest              |
| test               |
+--------------------+
6 rows in set (0.00 sec)

 

模擬M2掉線,查看是否自動切換主服務器的虛擬IP

M2:
[root@cent ~]# systemctl stop mariadb.service 

監控機:
[root@zcent4 mysql-mmm]# mmm_control show
  db1(192.168.137.10) master/ONLINE. Roles: writer(192.168.137.100)
  db2(192.168.137.11) master/HARD_OFFLINE. Roles: 
  db3(192.168.137.12) slave/ONLINE. Roles: reader(192.168.137.200)
  db4(192.168.137.13) slave/ONLINE. Roles: reader(192.168.137.150)

顯然是可以的!讀寫復制正常

 

上線M2,但是注意!M2并不會搶占,不帶這個功能!

模擬S2掉線,觀察情況

S2:[root@cent ~]# systemctl stop mariadb.service

監控機:[root@zcent4 mysql-mmm]# mmm_control show
  db1(192.168.137.10) master/ONLINE. Roles: writer(192.168.137.100)
  db2(192.168.137.11) master/ONLINE. Roles: 
  db3(192.168.137.12) slave/ONLINE. Roles: reader(192.168.137.150), reader(192.168.137.200)
  db4(192.168.137.13) slave/HARD_OFFLINE. Roles:
  實行了頂替,期間讀寫復制正常


總結


1.monitor程序負責監控db服務器的狀態,包括Mysql數據庫、服務器是否運行、復制線程是否正常、主從延時等;它還用于控制agent程序處理故障。
2.如果master-db1主庫宕機,master-db2復制應用又落后于master-db1時就變成了主可寫狀態,這時的數據主無法保證一致性。
3.monitor會每隔幾秒鐘監控db服務器的狀態,如果db服務器已經從故障變成了正常,那么monitor會自動在60s之后將其設置為online狀態
(默認是60s可以設為其它的值),我上面改成了10.
4.實驗過程中遇到從服務器無法啟動agent,重啟解決了,原因不詳。



向AI問一下細節

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

AI

深水埗区| 延寿县| 宕昌县| 呼玛县| 乐亭县| 临江市| 合作市| 舞阳县| 法库县| 班戈县| 宁德市| 伊吾县| 长沙市| 安西县| 南和县| 霞浦县| 绍兴市| 长兴县| 永新县| 灌阳县| 康平县| 长乐市| 阳山县| 卢龙县| 彭州市| 乌鲁木齐市| 昌江| 洞头县| 镇赉县| 德州市| 江津市| 益阳市| 济宁市| 原平市| 麻栗坡县| 武定县| 通许县| 永登县| 荥阳市| 灵石县| 祁阳县|