MySQL是一款开源且广泛使用的关系型数据库管理系统。在大型系统中,数据库高可用性是至关重要的。而开源MySQL高可用性的实现方式有很多种,下面从以下几个方面讲解。
1、主从复制
修改/etc/mysql/my.conf
#bind-address = 127.0.0.1
server-id = 1 #主要不同点;my.cnf还要修改binlog相关的几个配置
log-bin = /var/lib/mysql/mysql-bin.log #通常不会改
expire-logs-days = 10 #binlog过期时间
max_binlog_size=100M #binlog切割大小
log-slave-updates=1 #从机也记录更新日志
#**在备用机检测主库状态**
主库状态检测带来的问题
从库通过show slave status G
1,
修改/etc/mysql/my.conf
#bind-address = 127.0.0.1
server-id = 2 #主要不同点;my.cnf还要修改binlog相关的几个配置
expire-logs-days = 10 #binlog过期时间
max_binlog_size=100M #binlog切割大小
#复制配置,连哪个库复制哪个库(只复制基础表)
replicate-do-db=mydb
#指定从哪个master复制。多Master,多Slave 真正做到HA
log-slave-updates=1 #从也记录更新日志(转发给其他从)
#指定要从哪个master同步
replicate-ignore-db=mysql
#忽略拥有mysql的数据库
replicate-wild-do-table=mydb.%
#同步mydb下所有的表
2、Galera Cluster
修改 my.cnf
wsrep_on=ON #开启Galera Cluster
binlog_format=ROW #支持并行复制
default-storage-engine=innodb #采用InnoDB存储引擎
innodb_autoinc_lock_mode=2 #使用Percona XtraDB Cluster、Galera Cluster时必须是2
wsrep_provider=/usr/lib/galera3/libgalera_smm.so #驱动文件
wsrep_cluster_name="test_cluster" #命名集群
wsrep_cluster_address="gcomm://192.168.2.21,192.168.2.22,192.168.2.23" #指定集群IP地址
wsrep_node_address="192.168.2.21" #当前节点的IP地址
wsrep_node_name="node1" #当前节点名称
wsrep_sst_method=rsync #指定同步方式
启动:
service mysql start --wsrep-new-cluster #第一次启动集群的时候使用
service mysql start #启动成功
3、MaxScale
修改MaxScale配置文件/etc/maxscale.cnf
#定义服务
[Backend-Server1]
type=server
address=192.168.100.101 // 后端MySQL服务器地址
#定义监听器
[Test-Monitor]
type=monitor
module=mysqlmon
servers=Backend-Server1
user=maxscale // 用户名
passwd=maxpwd // 密码
monitor_interval=10000 // 监控间隔时间
disable_master_failback=1 // 禁止Master恢复
#定义路由
[Test-Router]
type=service
router=readwritesplit
backends=Backend-Server1
user=maxscale // 用户名
passwd=maxpwd // 密码
enable_root_user=1 // 允许root用户连接
max_slave_connections=100 // 每个从服务器的连接个数
master_accept_reads=1 // 允许主服务器接受读取操作
slave_accept_reads=1 // 允许从服务器接受读取操作
filters=match_table // 筛选器
# 筛选器定义
[match_table]
type=filter
module=regexfilter
match=^mydatabasename.mytablename$ // mydatabasename.mytablename为指定过滤的数据库和表名
replace=Test-Monitor->Backend-Server1
启动MaxScale:
service maxscale start
以上就是关于开源MySQL高可用性的三种实现方式。