MariaDB+Keepalived 搭建双主HA数据库服务

本文介绍了如何使用MariaDB和Keepalived搭建双主HA(高可用)数据库服务,详细阐述了从安装MariaDB、配置主备服务器、创建同步账户、查看bin-log到配置主主模式的全过程,以及Keepalived的配置和VIP漂移策略,确保在数据库故障时能自动切换并保持服务连续性。同时强调了防火墙设置的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、安装mysql

  在linux版本下,mysql称为mariadb,可以选择在线安装,或编译安装。MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可。开发这个分支的原因之一是:甲骨文公司收购了MySQL后,有将MySQL闭源的潜在风险,因此社区采用分支的方式来避开这个风险。MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。

  用国内镜像源替换官方的MariaDB镜像源,目前MariaDB最新版本10.4,这里选10.3作为稳定版安装,本人项目或者测试环境,都是以MariaDB为主。

vi /etc/yum.repos.d/MariaDB.repo
[mariadb]
name = MariaDB
baseurl = http://mirrors.ustc.edu.cn/mariadb/yum/10.3/centos7-amd64/
gpgkey=http://mirrors.ustc.edu.cn/mariadb/yum/RPM-GPG-KEY-MariaDB
gpgcheck=1
yum install mariadb mariadb-server -y
systemctl restart mariadb
systemctl enable mariadb
mysql_secure_installation
# 该命令为重置root密码,并做一些安全配置,若不做配置,后续将无法使用sell进入mysql

2、配置主备server的my.cnf

  通过my.cnf可以优化或者定制更高级的mysql使用,具体参考另外一篇文章todo,这里只写简单主主同步配置

主服务器

[mysqld]
# 数据目录可以使用默认也可以自行定义,所有的binlog以及db物理文件都在datadir里面后期可以通过挂载存储扩容
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
server-id=1
# 开启日志模式
log-bin=mysql-bin
relay-log=mysql-relay-bin

# 双主模式下,防止两边插入插入时,自增键冲突,主服务器自增规则:1,3,5奇数自增
auto_increment_offset=1
auto_increment_increment=2
log_slave_updates =1
# 忽略一些测试表
replicate-wild-ignore-table=test.%
replicate-wild-ignore-table=mysql.%
replicate-wild-ignore-table=performance_schema.%

#出现错误后忽略,若不跳过,出现任何同步错误,slave-IO进程会终止
slave-skip-errors=all

备服务器

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock

server-id=2

log-bin=mysql-bin
relay-log=mysql-relay-bin

# 双主模式下,防止两边插入插入时,自增键冲突,备服务器自增规则:2,4,6奇数自增
auto_increment_offset=2
auto_increment_increment=2
log_slave_updates =1

replicate-wild-ignore-table=test.%
replicate-wild-ignore-table=mysql.%
replicate-wild-ignore-table=performance_schema.%

#出现错误后忽略,若不跳过,出现任何同步错误,slave-IO进程会终止
slave-skip-errors=all
3、创建新账户

  在主服务器,备服务器分别创建用于管理主备的msyql帐号,请勿用root账户,以免出现安全问题!

mysql -u root -psd123321sd
create user 'sync_acct'@'192.168.100.%' identified by '*&@jall190';
grant replication slave on *.* to 'sync_acct'@'192.168.100.%';

# 以下两条配置可以实现在shell中mysql -usync_acct -p*&@jall190 直接登录,否则会提示如下:
# ERROR 1045 (28000): Access denied for user 'sync_acct'@'localhost' (using password: YES),登录失败
# grant select,insert,update,delete on 
GRANT ALL PRIVILEGES ON *.* TO sync_acc@"127.0.0.1" IDENTIFIED BY "*&@jall190" WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON *.* TO sync_acc@"localhost" IDENTIFIED BY "*&@jall190" WITH GRANT OPTION;

flush privileges;
exit

# 查看可本地登录的记录
MariaDB [(none)]> select HOST,User from mysql.user;
+-----------------------+-----------+
| HOST                  | User      |
+-----------------------+-----------+
| 127.0.0.1             | root      |
| 127.0.0.1             | sync_acc  |
| 192.168.100.%         | sync_acct |
| ::1                   | root      |
| localhost             | root      |
| localhost             | sync_acc  |
| localhost.localdomain | root      |
+-----------------------+-----------+
4、查看主服务器bin-log信息
#对数据库进行只读锁定(防止查看二进制日志同时有人对数据库修改操作)
MariaDB [(none)]> flush tables with read lock;
MariaDB [(none)]> show master status;
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值