MySQL-MMM高可用
阿新 • • 發佈:2018-07-12
可用性 時間 刪除 -m 0.11 自動 mar set lease MMM介紹
MMM(Master-Master replication manager for MySQL)是一套支持雙主故障切換和雙主日常管理的腳本程序。MMM使用Perl語言開發,主要用來監控和管理MySQL Master-Master(雙主)復制,可以說是mysql主主復制管理器。雖然叫做雙主復制,但是業務上同一時刻只允許對一個主進行寫入,另一臺備選主上提供部分讀服務,以加速在主主切換時刻備選主的預熱,可以說MMM這套腳本程序一方面實現了故障切換的功能,另一方面其內部附加的工具腳本也可以實現多個slave的read負載均衡。關於mysql主主復制配置的監控、故障轉移和管理的一套可伸縮的腳本套件(在任何時候只有一個節點可以被寫入),這個套件也能對居於標準的主從配置的任意數量的從服務器進行讀負載均衡,所以你可以用它來在一組居於復制的服務器啟動虛擬ip,除此之外,它還有實現數據備份、節點之間重新同步功能的腳本。
MMM提供了自動和手動兩種方式移除一組服務器中復制延遲較高的服務器的虛擬ip,同時它還可以備份數據,實現兩節點之間的數據同步等。由於MMM無法完全的保證數據一致性,所以MMM適用於對數據的一致性要求不是很高,但是又想最大程度的保證業務可用性的場景。MySQL本身沒有提供replication failover的解決方案,通過MMM方案能實現服務器的故障轉移,從而實現mysql的高可用。對於那些對數據的一致性要求很高的業務,非常不建議采用MMM這種高可用架構。
安裝更新源
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo //可5臺同時安裝 更換源 yum -y install epel-release //進行eOpel更新 yum clean all && yum makecache 四臺MySQL 清空原有的 安裝新的 yum -y install mariadb-server mariadb //安裝MySQL systemctl stop firewalld.service //關閉服務器 setenforce 0 //安全×××
修改MySQL主配置文件4臺都一樣的配置 除了service——id 的序號
#vi /etc/my.cnf (9dd 刪除原有的配置 添加下面的) [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 //開啟binlog日誌用於主從復制 server_id=1 //4臺id設置不同 log_slave_updates=true sync_binlog=1 auto_increment_increment=2 //字段一次遞增多少 auto_increment_offset=1 //自增字段的起始值:1,3,5,7...等 奇數ID # systemctl start mariadb //開啟服務
安裝yum -y install mysql-mmm* 並且進行配置
# yum -y install mysql-mmm*
# cd /etc/mysql-mmm/
# vi /etc/mysql-mmm/mmm_common.conf //所有主機上都要配置
……
<host default>
cluster_interface ens33
……
replication_user replication ? ? ? ? //復制用戶密碼
replication_password 123456 ? ? ? ? //復制用戶
agent_user mmm_agent ? ? ? ? //代理用戶
agent_password 123456 ? ? ? ? //代理用戶密碼
<host db1> ? ? ? ? ? //master-db1的host名稱
ip 192.168.100.10
mode master ? ? ? //主
peer db2 ? ? ? //與master-db1對等的服務器的host名,也就是master-db2的服務器host名
</host>
<host db2>
ip 192.168.100.24
mode master
peer db1
</host>
<host db3>
ip 192.168.100.25
mode slave ? ? ? ? // 從
</host>
<host db4>
ip 192.168.100.26
mode slave
</host>
<role writer>
hosts db1, db2
ips 192.168.100.100 ? ? ? ? //對外提供的寫操作的虛擬IP
mode exclusive ? ? ? ? //exclusive代表只允許存在一個主,也就是只能提供一個寫的IP
</role>
<role reader>
hosts db3, db4
ips 192.168.100.210, 192.168.100.220 ? ? ? ?//對外提供讀操作的虛擬ip
mode balanced ? ? ? ?//balanced代表負載均衡
</role>
復制給其他服務器
# scp mmm_common.conf [email protected]:/etc/mysql-mmm/
# scp mmm_common.conf [email protected]:/etc/mysql-mmm/
# scp mmm_common.conf [email protected]:/etc/mysql-mmm/
- Monitor服務器配置
# cd /etc/mysql-mmm/ # vi mmm_mon.conf ping_ips 192.168.100.10,192.168.100.11,192.168.100.12,192.168.100.13 //數據庫服務器地址 auto_set_online 10 //自動上線時間 10秒 ..... <host default> monitor_user mmm_monitor monitor_password 123456 </host>
- 在所有數據庫上為mmm_agent 和 mmm_moniter 授權
mysql> grant super, replication client, process on *.* to ‘mmm_agent‘@‘192.168.100.%‘ identified by ‘123456‘; mysql> grant replication client on *.* to ‘mmm_monitor‘@‘192.168.100.%‘ identified by ‘123456‘; mysql> flush privileges; //刷新權限
- 修改所有數據庫的mmm_agent.conf
# vi /etc/mysql-mmm/mmm_agent.conf .... this db1 //主1為db1、 主2為db2、 從1為db3 、 從2為db4
MySQL-MMM高可用