数据库-Mysql/Mariadb两种集群模式:主从复制及Galera多主集群
Mysql/Mariadb是最常见的开源关系型数据库,当我们面对大型的业务架构时,独立的数据库服务器往往无法满足大规模的数据读写,无法保障数据库的可靠性。此时我们便需要考虑以集群架构,来面对不同的业务场景。
数据库集群架构的设计往往遵循着三点:即可用性、扩展性、一致性。通常,在构建数据库集群时有着两张模式,主从模式与多主模式。
主从模式,是最常见的做法,搭配Mycat等中间件实现数据的读写分离。
多主模式,基于行复制的并行同步复制。可以做到多主的任意节点读写。
这里,我们将分别实现主从模式及多主模式的数据库集群架构。
一、Mysql/Mariadb主从复制
MySQL 主从复制模式。MySQL增删改操作会全部记录在bin-log二进制日志中,当slave节点连接master时,会主动从master处获取最新的bin-log文件。并把bin-log存储到本地的relay-log中,然后去执行relay-log的更新内容,也就是slave节点主动去执行在master中执行的SQL命令,实现数据的备份。在这个模式下,我们可以将业务配置数据库写,连接至master节点;而读取数据,连接至slave节点。实现数据库整体压力的减轻。
实验环境:
Master主节点 CentOS7/Mariadb 192.168.215.5
Slave从节点 CentOS7/Mariadb 192.168.215.6
1.基础配置
将设置主机名分别设为db1,db2,编辑hosts文件映射
Yum 安装mariadb(主从两台相同做法)
开启mariadb服务及设置开机自启(主从两台相同做法)
初始化数据库(主从两台相同做法)
第一步回车
第二步设置密码000000
其余步骤如图
2.配置master主节点
主节点服务器配置:
Vim编辑数据库配置文件my.cnf
在[mysqld]处添加以下内容
log_bin=mysql-bin
binlog_ignore_db=mysql
server-id=5 #节点id自定,主从需不同
其余配置不变,重启服务
通过账户root密码000000进入mysql
授权root在任意地方登录权限
grant all privileges on *.* to root@'%' identified by "123456";
创建用户user,从db2连接,并授权
grant replication slave on *.* to 'user'@'db2' identified by '123456';
3.配置slave子节点
Vim编辑数据库配置文件my.cnf
在[mysqld]处添加以下内容
log_bin=mysql-bin
binlog_ignore_db=mysql
server-id=6 #节点id自定,主从需不同
通过账户root密码000000进入mysql
更改连接主节点配置,主节点名称为’db1’,用户密码为’user’,‘123456’
change master to master_host='db1',master_user='user',master_password='123456';
4.启用主从模式
开启从模式
Slave start;
查询状态
show slave status\G;
IO状态为YES,配置完成
二、Mysql/Mariadb Galera高可用集群
Galera高可用集群是实时多主架构,实现任意节点可读写,无延迟复制,自动化节点关系控制:节点故障自动摘除,节点加入自动协调。是接近原生的MySQL数据库连接。
在Galera集群中当一个事务在当前写入的节点提交后,通过wsrep API将这个事务变成写集广播到同集群的其他节点中,其他节点收到写集事务后,对这个事务进行可行性检查,并返回结果给wsrep API,实现所有节点数据同步,并以主节点身份工作。
实验环境:
采用私有云环境部署
1.安装数据库服务及galera
[root@mariadb-1 yum.repos.d]# yum -y install mariadb mariadb-server galera
2.修改服务配置
//编辑配置文件/etc/my.cnf.d/mariadb-server.cnf,解开注释
[root@mariadb-2 my.cnf.d]# vim mariadb-server.cnf
[galera]
# Mandatory settings
wsrep_on=ON
wsrep_provider=/usr/lib64/galera/libgalera_smm.so
wsrep_cluster_address=gcomm://172.129.1.56,172.129.1.57,172.129.1.58
binlog_format=row
default_storage_engine=InnoDB
innodb_autoinc_lock_mode=2
#rpm -ql命令可以查询galera组件库文件路径
3.初始化运行
//在任意一台上进行初始化(若有galera_new_cluster命令优先使用)
//节点初始化安装
[root@mariadb-3 my.cnf.d]# mysql_install_db --defaults-file=/etc/my.cnf.d/mariadb-server.cnf --user=mysql
//启动数据库
[root@mariadb-3 my.cnf.d]# mysqld_safe --defaults-file=/etc/my.cnf.d/mariadb-server.cnf --user=mysql --wsrep-new-cluster &
//进行安全设置,主要是配置root密码
[root@mariadb-3 my.cnf.d]# mysql_secure_installation
4.在其余节点启数据库服务
[root@mariadb-2 my.cnf.d]# mysqld_safe --defaults-file=/etc/my.cnf.d/mariadb-server.cnf --user=mysql &
//ROOT密码是同步的,在初始化节点已经配置
5.服务验证
进入数据库(任意一台)
//集群内节点数量
show status like "wsrep_cluster_size";
//wsrep_cluster_status为Primary,表示节点为主节点,正常读写。
//wsrep_ready为ON,表示集群正常运行。
//wsrep_cluster_size为3,表示集群有三个节点。
show global status like "ws%";
至此,多主架构的数据库集群部署完成
- 点赞
- 收藏
- 关注作者
评论(0)