zl程序教程

您现在的位置是:首页 >  数据库

当前栏目

mysql-mmm高可用架构

mysql架构 可用
2023-09-14 09:01:03 时间
1、本文将介绍如何使用mysql-mmm搭建数据库的高可用架构,MMM即Master-Master Replication Manager for MySQL(mysql主主复制管理器)关于mysql主主复制配置的监控、故障转移和管理的一套可伸缩的脚本套件(在任何时候只有一个节点可以被写入),这个套件也能对居于标准的主从配置的任意数量的从服务器进行读负载均衡,所以你可以用它来在一组居于复制的服务器启动虚拟ip,除此之外,它还有实现数据备份、节点之间重新同步功能的脚本。MySQL本身没有提供replication failover的解决方案,通过MMM方案能实现服务器的故障转移,从而实现mysql的高可用。MMM不仅能提供浮动IP的功能,更可贵的是如果当前的主服务器挂掉后,会将你后端的从服务器自动转向新的主服务器进行同步复制,不用手工更改同步配置。这个方案是目前比较成熟的解决方案(上面这段话从网上载录)。至于mmm的具体介绍我这里就不多讲了,详情请看官网:http://mysql-mmm.org。 2、该方案的优缺点: 优点:稳定性高,可扩展性好,高可用,当主服务器挂掉以后,另一个主立即接管,其他的从服务器能自动切换,不用人工干预。 缺点:monitor节点是单点,不过这个你也可以结合keepalived或者haertbeat做成高可用
cmake -DCMAKE_INSTALL_PREFIX:PATH=/data/mysql/navy1 -DMYSQL_DATADIR=/data/mysql/navy1/db -DMYSQL_TCP_PORT=3306 -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DENABLED_LOCAL_INFILE=1 make install
/data/mysql/navy1/scripts/mysql_install_db --user=mysql --basedir=/data/mysql/navy1 --datadir=/data/mysql/navy1/db/
cd /data/mysql/navy1; /data/mysql/navy1/bin/mysqld_safe --defaults-extra-file=/data/mysql/navy1/my.cnf --user=mysql
2、其他三天机器的mysql的安装仅需四步: A、把已经安装好的master上的mysql停掉,rsync到master2、和两台slave的对应目录下(/data/mysql/navy1) B、建用户、改权限
cd /data/mysql/navy1; /data/mysql/navy1/bin/mysqld_safe --defaults-extra-file=/data/mysql/navy1/my.cnf --user=mysql
四、主从配置(master1和master2配置成主主,slave1和slave2配置成master1的从): 1、在master1上授权:
3、把master2、slave1和slave2配置成master1的从库: A、在master1上执行show master status \G 获取binlog文件和Position点
Current database: *** NONE *** *************************** 1. row *************************** File: mysql-bin.000024 Position: 107 Binlog_Do_DB: Binlog_Ignore_DB: mysql,information_schema,performance_schema,test,mysql,information_schema,performance_schema,test
change master to master_host=172.28.26.101, master_Port=3306, master_user=slave, master_password=123456, master_log_file=mysql-bin.000024, master_log_pos=107; slave start;
4、把master1配置成master2的从库: A、在master2上执行show master status \G 获取binlog文件和Position点
mysql   show master status \G *************************** 1. row *************************** File: mysql-bin.000025 Position: 107 Binlog_Do_DB: navy Binlog_Ignore_DB: mysql,mysql,information_schema,performance_schema,test,mysql,information_schema,performance_schema,test
change master to master_host=172.28.26.101, master_Port=3306, master_user=slave, master_password=123456, master_log_file=mysql-bin.000025, master_log_pos=107; slave start;
mysql show slave status \G *************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: 172.28.26.102 Master_User: slave Master_Port: 3306 Connect_Retry: 60 Master_Log_File: mysql-bin.000025 Read_Master_Log_Pos: 107 Relay_Log_File: mysqld-relay-bin.000015 Relay_Log_Pos: 253 Relay_Master_Log_File: mysql-bin.000025 Slave_IO_Running: Yes Slave_SQL_Running: Yes
GRANT SUPER, REPLICATION CLIENT, PROCESS ON *.* TO mmm_agent@172.28.26.%   IDENTIFIED BY 123456;

ips指定VIP

mode exclusive 只有两种模式:exclusive是排他,在这种模式下任何时候只能一个host拥有该角色

balanced模式下可以多个host同时拥有此角色。一般writer是exclusive,reader是balanced


vi /etc/mysql-mmm/mmm_agent.conf (master1、master2、slave1和slave2分别修改为:this db1、db2、db3、db4) vi /etc/mysql-mmm/mmm_mon.conf(仅monitor节点有)
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
Current database: *** NONE *** *************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: 172.28.26.102 Master_User: slave Master_Port: 3306 Connect_Retry: 60 Master_Log_File: mysql-bin.000025 Read_Master_Log_Pos: 107 Relay_Log_File: mysqld-relay-bin.000002 Relay_Log_Pos: 253 Relay_Master_Log_File: mysql-bin.000025 Slave_IO_Running: Yes Slave_SQL_Running: Yes Replicate_Do_DB:
使用 MySQL-MMM 实现(MySQL双主双从)高可用群集 MMM(Master-Master replication manager for MySQL)是一套支持双主故障切换和双主日常管理的脚本程序。 MMM 使用 Perl 语言开发,主要用来监控和管理 MySQL Master-Master(双主)复制,可以说是 MySQL 主主复制管理器。