数据库-Mysql/Mariadb两种集群模式:主从复制及Galera多主集群

嚯嚯嚯www 发表于 2022/05/19 00:04:40 2022/05/19
【摘要】 Mysql/Mariadb是最常见的开源关系型数据库,当我们面对大型的业务架构时,独立的数据库服务器往往无法满足大规模的数据读写,无法保障数据库的可靠性。此时我们便需要考虑以集群架构,来面对不同的业务场景。数据库集群架构的设计往往遵循着三点:即可用性、扩展性、一致性。通常,在构建数据库集群时有着两张模式,主从模式与多主模式。主从模式,是最常见的做法,搭配Mycat等中间件实现数据的读写分离。...

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文件映射
image.png
image.png

Yum 安装mariadb(主从两台相同做法)
image.png

开启mariadb服务及设置开机自启(主从两台相同做法)
image.png

初始化数据库(主从两台相同做法)
第一步回车
image.png

第二步设置密码000000
image.png

其余步骤如图
image.png

2.配置master主节点

主节点服务器配置:
Vim编辑数据库配置文件my.cnf
在[mysqld]处添加以下内容

log_bin=mysql-bin
binlog_ignore_db=mysql
server-id=5  #节点id自定,主从需不同

image.png

其余配置不变,重启服务
image.png

通过账户root密码000000进入mysql
授权root在任意地方登录权限
grant all privileges on *.* to root@'%' identified by "123456";
image.png

创建用户user,从db2连接,并授权
grant replication slave on *.* to 'user'@'db2' identified by '123456';
image.png

3.配置slave子节点

Vim编辑数据库配置文件my.cnf
在[mysqld]处添加以下内容

log_bin=mysql-bin
binlog_ignore_db=mysql
server-id=6  #节点id自定,主从需不同

image.png

通过账户root密码000000进入mysql
更改连接主节点配置,主节点名称为’db1’,用户密码为’user’,‘123456’
change master to master_host='db1',master_user='user',master_password='123456';
image.png

4.启用主从模式

开启从模式
Slave start;
查询状态
show slave status\G;
image.png

IO状态为YES,配置完成

二、Mysql/Mariadb Galera高可用集群

Galera高可用集群是实时多主架构,实现任意节点可读写,无延迟复制,自动化节点关系控制:节点故障自动摘除,节点加入自动协调。是接近原生的MySQL数据库连接。
在Galera集群中当一个事务在当前写入的节点提交后,通过wsrep API将这个事务变成写集广播到同集群的其他节点中,其他节点收到写集事务后,对这个事务进行可行性检查,并返回结果给wsrep API,实现所有节点数据同步,并以主节点身份工作。

实验环境:
采用私有云环境部署
image.png

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组件库文件路径
image.png

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";
image.png

//wsrep_cluster_status为Primary,表示节点为主节点,正常读写。
//wsrep_ready为ON,表示集群正常运行。
//wsrep_cluster_size为3,表示集群有三个节点。
show global status like "ws%";
image.png
至此,多主架构的数据库集群部署完成

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区),文章链接,文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:cloudbbs@huaweicloud.com进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。