MySQL高可用性保障您业务的安全和稳定性(mysql_ha)
MySQL高可用性:保障您业务的安全和稳定性
MySQL是一款广泛应用于web开发领域的开源关系型数据库管理系统,因其稳定、易用、免费开源等优势,被广泛使用。在网站、电商等业务中,数据安全性和稳定性是基本要求,一旦数据库发生故障,将会给业务带来巨大影响。因此,数据库的高可用性成为了业务安全、稳定运行的重要保证。
MySQL的高可用性是指在系统的运行中,若主数据库出现宕机、瘫痪等意外情况时,必须有其他备用数据库顶替主数据库,确保业务操作不受影响。下面,将介绍若干种MySQL高可用性的实现方案。
1. 主从复制
主从复制是MySQL的一种高可用性的方案,由一个主数据库和多个从数据库组成,主数据库向从数据库传输数据。当主数据库宕机时,从数据库可自动升级为主数据库,保证了业务的连续性。主从复制机制步骤如下:
1) 主数据库记录二进制日志(master_log);
2) 从数据库连接到主数据库,取得二进制日志(master_log);
3) 从数据库“relay”二进制日志;
4) 从数据库重放二进制日志到自己的数据文件;
5) 从数据库能与主数据库保持同步,如果主数据库发生宕机等故障,从数据库将既可以继续提供服务,也可以升级为新的主数据库。
代码:
主数据库配置:
# 运行日志
log-bin=/var/lib/mysql/log/binlog/mysql-bin
# 主服务器ID,每个服务器必须有一个唯一的ID
server-id=1
# 同步校验码
binlog-do-db=db_demo
从数据库配置:
# 数据库主机ip,即主服务器的ip
master-host=127.0.0.1
# master服务器ssh的端口号
master-port=3306
# 主服务器replicatiion用户密码
master-user=replication
master-password=123456
# 运行日志
log-bin=/var/lib/mysql/log/binlog/mysql-bin
# 从服务器ID,必须唯一的
server-id=2
# 从服务器同步的数据库名
replicate-do-db=db_demo
2. 主主复制
主主复制是指环状复制,即使用多个MySQL主数据库互相完成同步,从任何一台主数据库读写操作均可。主主复制机制步骤如下:
1) 主数据库1和主数据库2完成数据同步;
2) 客户端会随机读写任何一台主数据库,实现了读写分离的高可用性;
3) 当主数据库1或主数据库2宕机时,系统仍能正常运行。
代码:
主数据库1配置:
# 运行日志
log-bin=/var/lib/mysql/log/binlog/mysql-bin
# 主服务器ID,每个服务器必须有一个唯一的ID
server-id=1
# 同步校验码
binlog-do-db=db_demo
# B的主机名
master-host=192.168.100.101
master-port=3306
master-user=replication
master-password=123456
主数据库2配置:
# 运行日志
log-bin=/var/lib/mysql/log/binlog/mysql-bin
# 主服务器ID,每个服务器必须有一个唯一的ID
server-id=2
# 同步校验码
binlog-do-db=db_demo
# A的主机ip
master-host=192.168.100.100
master-port=3306
master-user=replication
master-password=123456
3. MySQL集群
MySQL集群是指多台MySQL服务器组成整体,形成类似于一个数据库服务器的形象,实现了多台服务器的负载均衡和高可用性。MySQL集群主要方案包括PXC、Galera。MySQL集群机制步骤如下:
1) 提供统一的IP地址和端口号,让客户端通过这个地址和端口号来访问MySQL集群;
2) 对MySQL集群进行监控,当MySQL集群中一台或多台服务器宕机或出现故障时,可自动检查并关闭出故障的MySQL服务节点,并自动转移服务到正常的MySQL节点上;
3) 在MySQL集群中,每个MySQL节点都安装了MySQL服务,且服务器之间有较高的网络延迟。
MySQL集群方案需要实现如下几个步骤:
1) 安装和配置MySQL集群软件,如PXC、Galera等;
2) 创建MySQL节点;
3) 设置各个MySQL节点的角色或权重,如负载均衡、读写分离、故障转移等;
4) 对整个MySQL集群进行监控。
代码:
配置集群环境
[root@node1 ~]# yum -y install http://repo.percona.com/release/
yum/percona-release-0.0-1.x86_64.rpm
[root@node1 ~]# yum -y install Percona-XtraDB-Cluster-57
启动集群
启动PXC服务有如下注意事项:
1. PXC支持多节点一起启动,只需要指定gcomm://节点IP:port/等信息即可。例如:
[root@node1 ~]# service mysql bootstrap-pxc
[root@node2 ~]# service mysql join-pxc
[root@node3 ~]# service mysql join-pxc
2. 第一次启动完成后,还需要通过地址授权等操作,使得新建用户的数据可以在其他节点同步;
3. 对于第一个节点,可能会出现日志无法复制的情况,需要将log_slave_updates参数设置为ON来强制复制;
4. 可以使用pxc_maget工具对集群进行管理,包括添加节点、删除节点、修改权重等。