mysql高可用集群配置方法

合集下载

如何设置高可用数据库服务器

如何设置高可用数据库服务器

如何设置高可用数据库服务器互联网的快速发展推动了大量数据的产生和存储,因此数据库服务器的高可用性显得尤为重要。

高可用数据库服务器可以确保数据库系统在面对硬件故障或网络中断等意外情况时仍能提供持续可靠的服务。

本文将介绍一些关键的设置和策略,帮助您搭建高可用的数据库服务器。

一、数据库服务器的冗余设置为了确保数据库系统的高可用性,首先需要进行服务器的冗余设置。

这意味着至少需要两台数据库服务器来提供冗余服务。

一台服务器作为主服务器,负责处理所有的读写请求,而另外一台服务器则作为备用服务器,监控主服务器的状态,并在主服务器发生故障时接管其职责。

为了实现这一设置,您可以考虑使用数据库复制技术。

数据库复制可以将主服务器上的数据同步到备用服务器上,确保备用服务器上的数据与主服务器上的数据保持一致。

当主服务器发生故障时,备用服务器可以立即切换为主服务器,继续提供服务。

二、实现高可用的网络架构除了服务器的冗余设置,高可用的数据库服务器还需要支持高可用的网络架构。

为了确保网络的可靠性,您可以考虑使用双机房部署。

将主服务器和备用服务器分别部署在不同的机房,通过跨机房的网络连接实现数据的同步和故障切换。

这样即使一台机房发生故障,另一台机房仍然可以继续提供服务。

此外,还可以考虑使用虚拟IP地址(VIP)技术来实现故障切换。

虚拟IP地址可以自动漂移到备用服务器上,确保在主服务器故障时,备用服务器可以立即接管主服务器的职责。

通过这种方式,可以实现数据库服务的无缝切换,减少业务中断的时间。

三、监控和故障转移要确保高可用数据库服务器的可靠性,监控和故障转移是必不可少的。

监控系统可以实时监测主服务器和备用服务器的状态,一旦发现主服务器出现故障,可以立即触发故障切换。

在故障发生时,需要及时进行故障转移,确保备用服务器可以立即接管主服务器的职责。

可以通过一些自动化的脚本或工具来实现故障转移的自动化,减少人工干预的时间和成本。

同时,为了保证数据库的数据完整性和一致性,还需要设置定期的数据备份和恢复策略。

mysql+mycat搭建稳定高可用集群,负载均衡,主备复制,读写分离

mysql+mycat搭建稳定高可用集群,负载均衡,主备复制,读写分离

mysql+mycat搭建稳定⾼可⽤集群,负载均衡,主备复制,读写分离数据库性能优化普遍采⽤集群⽅式,oracle集群软硬件投⼊昂贵,今天花了⼀天时间搭建基于mysql的集群环境。

主要思路简单说,实现mysql主备复制-->利⽤mycat实现负载均衡。

⽐较了常⽤的读写分离⽅式,推荐mycat,社区活跃,性能稳定。

测试环境MYSQL版本:Server version: 5.5.53,到官⽹可以下载WINDWOS安装包。

注意:确保mysql版本为5.5以后,以前版本主备同步配置⽅式不同。

linux实现思路类似,修改f即可。

A主mysql。

192.168.110.1:3306, ⽤户root,密码root。

操作系统:win7 x64,内存:4g安装路径:C:\Program Files\MySQL\MySQL Server 5.5\binB备mysql。

192.168.110.2:3306, ⽤户root,密码root。

操作系统:win2003 x64,内存:1g安装路径:C:\Program Files\MySQL\MySQL Server 5.5\binA主、B备的mysql中创建sync_test数据库实现mysql主备复制主要思路:A主mysql开启⽇志,B备mysql读取操作⽇志,同步执⾏。

⼀般为主备同步,主主同步不推荐使⽤。

配置A主mysql1)修改my.ini。

需要在log-bin="C:/Program Files/MySQL/MySQL Server 5.5/log/mysql-bin.log"的相关位置创建log⽬录,以及mysql-bin.log⽂件。

[mysqld]server-id=1 #主机标⽰,整数port=3306log-bin="C:/Program Files/MySQL/MySQL Server 5.5/log/mysql-bin.log" #确保此⽂件可写read-only=0 #主机,读写都可以binlog-do-db=sync_test #需要备份数据库,多个写多⾏binlog-ignore-db=mysql #不需要备份的数据库,多个写多⾏2)允许MYSQL远程访问#登录mysql console进⼊%home%/bin,执⾏mysql -uroot -proot#授权。

MySQL中的参数配置及调优方法

MySQL中的参数配置及调优方法

MySQL中的参数配置及调优方法MySQL是当前最流行的开源关系型数据库管理系统之一。

它的广泛应用和可灵活配置的特点使得它成为许多企业和个人的首选。

然而,未经优化的MySQL可能会面临性能下降、资源浪费等问题,因此正确配置和调优MySQL参数是至关重要的。

本文将介绍MySQL中的参数配置及调优方法,帮助读者解决数据库性能问题。

一、参数配置在MySQL中,有许多参数可以配置,以满足不同应用的需求。

以下是一些重要参数的简要介绍:1. 缓冲区参数- innodb_buffer_pool_size:InnoDB存储引擎使用的缓冲池大小。

增大该值可以提高读写性能,但会占用更多内存。

- key_buffer_size:MyISAM存储引擎使用的键缓冲区大小。

同样,增大该值可以提高性能,但会占用更多内存。

2. 连接参数- max_connections:允许的最大连接数。

该值应根据应用的并发连接数进行适当调整,以避免资源浪费和连接超时问题。

- wait_timeout:连接空闲后等待关闭的时间。

默认值为28800秒,可以根据具体需求进行调整。

3. 查询缓存参数- query_cache_type:查询缓存类型。

0表示禁用查询缓存,1表示启用,2表示只缓存SQL_NO_CACHE标记的查询结果。

- query_cache_size:查询缓存大小。

指定用于存储查询缓存的内存大小。

二、调优方法在配置参数之前,我们需要先了解数据库当前的性能瓶颈。

可以通过以下几种方式进行分析:1. 使用MySQL自带的性能监控工具MySQL提供了一系列的性能监控工具,如:MySQL Performance Schema、MySQL Enterprise Monitor等。

通过这些工具,可以实时监控MySQL的运行状态,获得性能数据。

2. 使用开源的性能监控工具除了MySQL自带的工具,还有一些开源的性能监控工具可以用于MySQL性能分析。

MYSQL高可用方案大全

MYSQL高可用方案大全

MYSQL高可用方案大全MySQL是一个开源的关系型数据库管理系统,广泛应用于各种Web应用程序中。

为了确保业务的连续性和高可用性,需要采取一些措施来预防和解决数据库故障。

下面是一些MySQL高可用方案的介绍。

1. 数据库复制(Replication)数据库复制是MySQL提供的一种基本的高可用方案。

它使用了主从模式,将主数据库的更新操作异步地复制到一台或多台从数据库中。

主数据库负责处理写操作,而从数据库负责读操作。

当主数据库发生故障时,从数据库可以接管业务并提供读写服务。

2. 数据库镜像(Mirroring)数据库镜像是一种同步复制的方式,可以确保数据的完整性和一致性。

它通常使用两台或多台服务器,在主库上进行写操作,然后将写操作同步到所有从库上。

这样,当主库发生故障时,可以快速切换到从库并继续提供服务。

3. 数据库分片(Sharding)数据库分片是一种水平切分数据库的方式,可以将大型数据库分成多个较小的部分,分布在不同的服务器上。

每个分片都有自己的主从数据库,可以独立地处理读写请求。

这种方案可以提高数据库的可用性和性能。

4. 数据库集群(Cluster)数据库集群是一种多节点共享存储的方式,可以提供高可用性和高性能。

集群中的每个节点都是一个完整的数据库服务器,它们共享存储,可以同时处理读写请求。

如果一个节点发生故障,其他节点可以接管工作并继续提供服务。

5. 数据库备份与恢复(Backup and Recovery)数据库备份是一种常见的高可用方案,可以在数据库发生故障时恢复数据。

通过定期备份数据库,可以保留历史数据,并在需要时进行恢复。

备份可以分为物理备份和逻辑备份两种方式,具体选择哪种方式取决于业务需求和复杂度。

6. 数据库热备份(Hot Backup)数据库热备份是一种可以在数据库运行时进行备份的方式。

不需要停止数据库服务,可以实时备份数据库的数据和日志。

这样可以减少备份对业务的影响,并提高备份的可用性。

mysql 集群的方法

mysql 集群的方法

mysql 集群的方法MySQL 集群是为了提高数据库的可用性、性能和数据一致性而采用的一种技术。

以下是几种常见的 MySQL 集群方法:1.主从复制 (Master-Slave Replication):o一个主服务器(Master)负责写操作,并将数据变更复制到一个或多个从服务器(Slave)。

o从服务器处理读请求,确保数据保持同步。

o主要用途是读写分离、备份和故障恢复。

2.MySQL Group Replication:o这是 MySQL 5.7 之后引入的一个插件,允许 MySQL 实例形成一个互操作的组,并自动处理故障转移。

o它提供了数据冗余、自动故障转移和读写负载均衡。

3.MySQL Cluster:o基于 NDB(或 NDB Cluster)存储引擎,允许多个节点协同工作。

o提供高可用性、自动分片和并行处理。

o对于非常大的数据集和高并发的场景特别有用。

4.Galera Cluster for MySQL:o通过同步复制实现真正的多主复制。

o保证了数据一致性,提供了自动故障恢复和高可用性。

o Percona XtraDB Cluster 和 MariaDB Cluster 都使用了这种技术。

5.Proxy Solutions:o使用如 ProxySQL、HAProxy 或 MaxScale 等代理,可以基于路由规则将请求转发到不同的 MySQL 实例。

o可以实现负载均衡、读写分离、故障转移等功能。

6.分片 (Sharding):o将数据分布到多个数据库或服务器上,以实现水平扩展。

o使用如MySQL Sharding这样的中间件或工具,可以将请求路由到正确的分片。

7.使用云服务:o如 Amazon RDS 的 Multi-AZ (一个主数据库和一个或多个副数据库) 和 Read Replicas。

o这些解决方案通常提供了高可用性和自动故障转移。

8.其他第三方解决方案:如 Patroni、Codership、Vitess 等,都是为了解决特定问题的解决方案。

MySQLPXC高可用集群搭建

MySQLPXC高可用集群搭建

MySQLPXC⾼可⽤集群搭建⼀些名词介绍:WS:write set 写数据集IST: Incremental State Transfer 增量同步SST:State Snapshot Transfer 全量同步pxc环境所涉及的端⼝:#mysql实例端⼝1. Regular MySQL port, default 3306.#pxc cluster相互通讯的端⼝2. Port for group communication, default 4567. It can be changed by the option:wsrep_provider_options ="gmcast.listen_addr=tcp://0.0.0.0:4010; "#⽤于SST传送的端⼝3. Port for State Transfer, default 4444. It can be changed by the option:wsrep_sst_receive_address=10.11.12.205:5555#⽤于IST传送的端⼝4. Port for Incremental State Transfer, default port for group communication + 1 (4568). It can be changed by the option:wsrep_provider_options = "ist.recv_addr=10.11.12.206:7777; "搭建步骤:⼀、环境情况:node1:192.168.1.81:6000node2:192.168.1.240:6000node3:192.168.1.241:6000⼆、防⽕墙设置:-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT #本实验需要改为6000-A INPUT -m state --state NEW -m tcp -p tcp --dport 4444 -j ACCEPT #本实验需要改为6020-A INPUT -m state --state NEW -m tcp -p tcp --dport 4567 -j ACCEPT #本实验需要改为6030-A INPUT -m state --state NEW -m tcp -p tcp --dport 4568 -j ACCEPT #本实验需要改为6031setenforce 0⼆、下载安装,在node1,node2,node3分别进⾏如下安装yum install -y /downloads/percona-release/redhat/0.1-3/percona-release-0.1-3.noarch.rpmyum install -y perl-DBD-MySQL.x86_64 perl-IO-Socket-SSL.noarch socat.x86_64 ncyum install -y openssl openssl-devel#step 1 prepare :5.6.26 needs libssl.so.6 libcrypto.so.6 ()cd /usr/lib64ln -s libssl.so.1.0.1e libssl.so.6ln -s libcrypto.so.1.0.1e libcrypto.so.6#step2:download pxccd /usr/local/srcwget https:///downloads/Percona-XtraDB-Cluster-56/Percona-XtraDB-Cluster-5.6.26-25.12/binary/tarball/Percona-XtraDB-Cluster-5.6.26-rel74.0-25.12.1.Linux.x86_64.tar.gz cd /usr/localmv Percona-XtraDB-Cluster-5.6.26-rel74.0-25.12.1.Linux.x86_64.tar.gz pxc_56#step3:install pxccd /usr/local/pxc_56./scripts/mysql_install_db --defaults-file=/home/mysql/f --basedir=/usr/local/pxc_56chown -R mysql. /home/mysqlchown -R mysql. /usr/local/pxc_56配置⽂件:f[client]port = 6000socket = /home/mysql/I6000/mysql.sockdefault-character-set=utf8[mysqld]basedir = /usr/local/pxc_56datadir = /home/mysql/I6000pid-file = /home/mysql/I6000/mysql.pidcharacter-set-server=utf8init_connect = 'SET NAMES utf8'log-bin=/home/mysql/I6000/log_binserver-id = 9816000innodb_buffer_pool_size = 100Minnodb_data_file_path = ibdata1:10M:autoextendinnodb_data_home_dir = /home/mysql/I6000innodb_file_per_table=1skip-name-resolveport = 6000socket = /home/mysql/I6000/mysql.sockuser=mysqllog_error=/home/mysql/I6000/mysql_error.log#pxcuser=mysqllog_error=error.logbinlog_format=ROW#6000 for mysqld port, 6020 for sst port, 6031 for ist port, 6030 for cluster communication port 端⼝作⽤及说明见上⾯wsrep_cluster_address='gcomm://192.168.1.81:6030,192.168.1.238:6030,192.168.1.240:6030' #三个节点都保持⼀样wsrep_provider=/usr/local/pxc_56/lib/libgalera_smm.sowsrep_sst_receive_address=192.168.1.238:6020 #根据不同的node ip进⾏修改wsrep_node_incoming_address=192.168.1.238:6000 #根据不同的node ip进⾏修改wsrep_node_address=192.168.1.238:6000 #根据不同的node ip进⾏修改wsrep_provider_options = "gmcast.listen_addr=tcp://192.168.1.238:6030;ist.recv_addr=192.168.1.238:6031;" #根据不同的node ip进⾏修改wsrep_slave_threads=2wsrep_cluster_name=pxc_zejin #同⼀个cluster此值需要⼀致wsrep_sst_method=xtrabackup-v2wsrep_node_name=node6000_238 #不同节点修改为不同的名字innodb_autoinc_lock_mode=2wsrep_sst_auth="sstuser:123"log-slave-updates[mysql]no-auto-rehashdefault-character-set=utf8三、实例启动:#安装实例/usr/local/pxc_56/scripts/mysql_install_db --defaults-file=/home/mysql/f --basedir=/usr/local/pxc_56#启动第⼀个实例/usr/local/pxc_56/bin/mysqld_safe --defaults-file=/home/mysql/f --ledir=/usr/local/pxc_56/bin/ --wsrep-new-cluster &#修改密码/usr/local/pxc_56/bin/mysqladmin -u root -P6000 password '000000' -S /home/mysql/I6000/mysql.sock#登陆并增加⽤户/usr/local/pxc_56/bin/mysql -uroot -p -P6000 -S /home/mysql/I6000/mysql.sockgrant all on *.* to 'sstuser'@'localhost' identified by '123';flush privielges;mysql> show global status like 'wsrep_cluster_size';+--------------------+-------+| Variable_name | Value |+--------------------+-------+| wsrep_cluster_size | 1 |+--------------------+-------+1 row in set (0.00 sec)四、启动第⼆、三个node#不需要加--wsrep-new-cluster/usr/local/pxc_56/bin/mysqld_safe --defaults-file=/home/mysql/I6000/f --ledir=/usr/local/pxc_56/bin/ &整个过程⼤约如下:1.决断是否可以IST2.不可以的话Requesting state transfer3.Cleaning the existing datadir and innodb-data/log directories 会将之前实例的内容全部删除。

mysql8集群搭建

mysql8集群搭建

mysql8集群搭建1.下载必要的rpm包我系统是centos 7 的所以选择红帽的操作系统2.安装mysql 先⽤sudo root运⾏,我这是直接su root切换了root⽤户yum remove mariadb-libsrpm -ivh mysql-community-common-8.0.20-1.el7.x86_64.rpmrpm -ivh mysql-community-libs-8.0.20-1.el7.x86_64.rpmrpm -ivh mysql-community-client-8.0.20-1.el7.x86_64.rpmrpm -ivh mysql-community-server-8.0.20-1.el7.x86_64.rpm3.启动mysqlservice mysqld start4.查看密码grep 'temporary password' /var/log/mysqld.log5.修改密码mysql -uroot -p 输⼊密码#Root_123456 是新密码,如果出现ERROR 1819 (HY000): Your password does not satisfy the current policy requirements 是因为密码太简单,要改成带特殊字符的复杂密码alter user 'root'@'localhost' IDENTIFIED BY '#Root_123456';修改成功6:设置允许远程登录use mysql;update user set host='%' where user = 'root';然后重启mysqlservice mysqld restart7.搭建集群  准备三台集群修改hosts⽂件vi /etc/hosts192.168.10.11 linux1192.168.10.12 linux2192.168.10.13 linux3 设置免密ssh-keygen -t rsassh-copy-id linux1ssh-copy-id linux2ssh-copy-id linux3 设置远程登录并且刷新grant all privileges on *.* to 'root'@'%' with grant option;flush privileges;安装 mysqlshrpm -ivh mysql-shell-8.0.20-1.el7.x86_64.rpm登录linux2安装mysql8在linux2/linu3从linux1 拷贝所有rpm包到本地scp -r linux1:/opt/software/ /opt/software/然后安装然后⽤mysqlsh搭建shell.connect('root@linux1:3306')dba.configureLocalInstance()shell.connect('root@linux2:3306')dba.configureLocalInstance()shell.connect('root@linux3:3306')dba.configureLocalInstance()shell.connect('root@linux1:3306')var cluster=dba.createCluster("MySQL_Cluster")如果不想⽤root⽤户,建议⽤root⽤户set sql_log_bin=0;create user rpl_user@'%' identified by '#Root_123456';grant replication slave,replication client on *.* to rpl_user@'%'; create user rpl_user@'127.0.0.1' identified by '#Root_123456';grant replication slave,replication client on *.* to rpl_user@'127.0.0.1'; create user rpl_user@'localhost' identified by '#Root_123456';grant replication slave,replication client on *.* to rpl_user@'localhost'; set sql_log_bin=1;change master tomaster_user='rpl_user',master_password='#Root_123456'for channel 'group_replication_recovery';install plugin group_replication soname 'group_replication.so';set global group_replication_bootstrap_group=on;start group_replication;set global group_replication_bootstrap_group=off; 关闭防⽕墙# 关闭防⽕墙systemctl stop firewalld.service# 禁⽤防⽕墙systemctl disable firewalld.servicevi /etc/selinux/configSELINUX=disabled安装mysql-routerrpm -ivh mysql-router-community-8.0.20-1.el7.x86_64.rpmvim /etc/mysqlrouter/mysqlrouter.conf[DEFAULT]logging_folder = /var/log/mysqlrouterruntime_folder = /var/run/mysqlrouterconfig_folder = /etc/mysqlrouter[logger]level = INFO[routing:read_write]bind_address = 192.168.10.11bind_port = 7001mode = read-writedestinations = linux1:3306,linux2:3306protocol=classicmax_connections=1024[routing:read_only]bind_address = 192.168.10.11bind_port = 7002mode = read-onlydestinations = linux1:3306,linux2:3306protocol=classicmax_connections=1024# If no plugin is configured which starts a service, keepalive# will make sure MySQL Router will not immediately exit. It is# safe to remove once Router is configured.[keepalive]interval = 60 重启mysqlroutersystemctl restart mysqlrouter。

MySQL的高可用解决方案比较与选型指南

MySQL的高可用解决方案比较与选型指南

MySQL的高可用解决方案比较与选型指南引言:在当今互联网应用需求日益多样化和复杂化的环境下,数据库的可用性和稳定性显得尤为重要。

MySQL作为一款开源的关系型数据库管理系统,得到了广泛的应用和发展。

为了提高MySQL的高可用性,不同的解决方案应运而生。

本文将介绍几种常见的MySQL高可用解决方案,并给出相应的选型指南,以供读者参考。

一、MySQL主从复制方案主从复制是MySQL最常见也最简单的高可用解决方案之一。

它通过将一台MySQL服务器(主服务器)的数据实时地复制到其他多台MySQL服务器(从服务器)上,实现数据的备份和冗余存储。

主从复制的好处是简单易用、实现成本低,适用于大部分中小型应用场景。

然而,主从复制也存在一些限制,如主服务器故障时会有较长时间的切换和数据一致性的问题。

二、MySQL主从复制+Keepalived的方案为了解决主从复制方案的切换延迟和数据一致性问题,一种常见的改进方案是在主从复制的基础上加入Keepalived。

Keepalived是一个IP故障切换工具,它能够在主服务器出现故障时,快速将一个虚拟IP切换到备份服务器上,实现高可用性。

该方案简单易用,对应用程序透明,但配置和管理相对复杂。

三、MySQL主从复制+Heartbeat的方案Heartbeat是一个开源的高可用性软件,通过监控网络和主服务器的状态,实现服务器故障切换和自动切换。

与Keepalived相比,Heartbeat功能更为强大,可以实现更复杂的故障处理策略。

但同时也带来了更复杂的配置和管理。

四、MySQL主从复制+MHA的方案MHA(MySQL Master High Availability)是由MySQL官方推出的一款高可用性解决方案。

相较于前面提到的Keepalived和Heartbeat,MHA提供了更完整的解决方案,包括自动监控、故障检测、自动切换等功能。

MHA具有较高的稳定性和数据一致性,并支持在线切换和平滑的主从切换。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

mysql + replication
概述:
Mysql的复制(Replication)是一 个异步的复制,首先必须打开 Master端的binary log(bin-log) 功能,否则无法实现。因为整个 复制过程实际上就是Slave从 Master端获取该日志然后再在自 己身上完全顺序的执行日志中所 记录的各种操作。
此时在测试机上面执行这个脚本,如下所示开始往数据库的log表里面插入数据了
[root@tl1 ~]# ./test.sh add 1 to table log add 2 to table log add 3 to table log add 4 to table log add 5 to table log add 6 to table log …… add 5000 to table log
[root@tl1 ~]# more test.sh #!/bin/bash i=0 while [ $i -lt 1000000 ] do mysql -h192.168.218.140 -uroot -pklcadmin -e "insert into share.log val ues ("$i")"; let i=i+1 echo "add $i to table log" done
此方案除了一般常用的双机工具 heartbeat外,主要用了DRBD这 个工具,DRBD是一种块设备,可 以被用于高可用(HA)之中.它类似 于一个网络RAID-1功能.当你将 数据写入本地文件系统时,数据还 将会被发送到网络中另一台主机 上.以相同的形式记录在一个文件 系统中. 本地(主节点)与远程主机(备节点) 的数据可以保证实时同步.当本地 系统出现故障时,远程主机上还会 保留有一份相同的数据,可以继续 使用.
Mysql数据库高可用方案
演讲人:陈明
2010.10
实现功能
通过技术手段将因软件、硬件或者是人为 造成的故障对业务的影响降低到最小程度, 从而使数据库对外不间断的提供服务。
实现方式
mysql + replication mysql cluster mysql + heartbeat + drbd mysql + heartbeat + 共享存储
此时测试主机资源回切,将主机的网卡起来,等待约30秒的检测,主机开始取 回资源,以下是主机mysql起来的日志记录
100727 16:21:12 mysqld started 100727 16:21:12 InnoDB: Started; log sequence number 0 43655 100727 16:21:12 [Note] /usr/libexec/mysqld: ready for connections. Version: '5.0.45' socket: '/var/lib/mysql/mysql.sock' port: 3306 Source distribution
mysql+heartbeat+共享存储
优点:
安全性、稳定性高,出现故障系统将自动切换,从而保证服务的连续 性。
缺点:
相对mysql replication成本提高,需要有共享存储设备。
mysql+heartbeat+共享存储
环境说明: 实验服务器:IBM 3850 实验san存储: IBM DS3400 主机-tl2:192.168.218.137 操作系统:CentOS release 5.3 (x86_64) 备机-tl3:192.168.218.138 操作系统:CentOS release 5.3 (x86_64) 浮动ip:192.168.218.140 共享磁盘:/dev/sdb1 (指定到挂载目录/dbdata) 对mysql设定: 将mysql数据目录指定到/dbdata/mysql datadir=/dbdata/mysql 在heartbeat对资源的设定 [root@tl2 ha.d]# vi haresources
mysql+heartbeat+共享存储
概述:
本方案采用高可靠性的HA双机热备 软件来保证服务的高稳定性及连续 性。默认情况下两台mysql机器只 有一台机器在工作,当工作机 mysql主机出现问题后,系统将自 动切换到mysql备机上继续提供服 务,而整个过程只需要30秒的时间, 当mysql主机故障维修完毕后,服 务将自动切换回mysql主机上继续 提供服务。
tl2.klccl.local IPaddr::192.168.218.140/24/eth0 Filesystem::/dev/sdb1::/dbdata::ext3 mysqld
mysql+heartbeat+共享存储
测试 通过导入klccl.0721.sql这个文件,利用脚本将数据库的数据增长到6.0G,并且在 测试机tl上面添加测试脚本,脚本意思通过建立log表,不断往里面的插数据,数 据的顺序依次是0、1、2……100000。
到了插入到第5000的时候,断开主机的网卡。
查看备机mysql的log日志,看到备机的mysql的会有一个inndb检查修复的操作, 虽然数据量增长到6G,但备机也很快的把mysql服务就起来了。
[root@tl3 ha.d]#tail –f /var/log/mysql.log 100727 16:17:24 mysqld started 100727 16:17:24 InnoDB: Database was not shut down normally! InnoDB: Starting crash recovery. InnoDB: Reading tablespace information from the .ibd files... InnoDB: Restoring possible half-written data pages from the doublewrite InnoDB: buffer... 100727 16:17:24 InnoDB: Starting log scan based on checkpoint at InnoDB: log sequence number 0 732590454. InnoDB: Doing recovery: scanned up to log sequence number 0 732590454 100727 16:17:24 InnoDB: Started; log sequence number 0 732590454 100727 16:17:24 [Note] /usr/libexec/mysqld: ready for connections. Version: '5.0.45' socket: '/var/lib/mysql/mysql.sock' port: 3306 Source distribution
mysql + replication
优点:
易实施、成本低、经济实惠、后期维护方便,且由于整套系统架构简 单,不涉及到存储及双机软件,方便做到读写分离。
缺点:
在主机出现问题后不能自动切换到备份机,需要人工干涉更改IP地址。
Mysql cluster
概述:
MySQL集群是一种分布式设计,目标是要达到没有任何单点故障点。因此,任何 组成部分都应该拥有自己的内存和磁盘。任何共享存储方案如网络共享,网络文 件系统和SAN设备是不推荐或不支持的。通过这种冗余设计,MySQL声称数据的 可用度可以达到99。999%。
Mysql cluster
优点:
安全性、稳定性高,可以在线加节点,官方声称可用度可达到 99.999%。
缺点:
至少三个节点,对主机的数量有要求,无形增加方案成本、对于数据 节点要求内存一致、对于引擎只能使用ndb、不支持外键功能、管理 复杂 。
mysql+heartbeat+drbd
概述:
mysql+heartbeat+drbd
优点:
安全性、稳定性高,出现故障系统将自动切换,从而保证服务的连续 性,相对mysql+heartbeat+存储来说对大优点是节约了存储这个硬件 设备。
缺点:
mysql主机宕机,切换到备机,备机接管服务,待主机修复完配置 failback机制的话会发生脑裂情况,需要手工执行命令进行主机接管。
在进入到备机的mysql,查看log表里面的数据一共有5001条,正截止到我们在 断开主机执行到的数字5000。
[root@tl3 ha.d]# mysql --socket=/tmp/mysql.sock -e "select count(*) from cm.log"; +----------+ | count(*) | +----------+ | 5000 | +----------+
相关文档
最新文档