未加星标

Centos7+Keepalived实现Mariadb(MYSQL)的高可用(HA)

字体大小 | |
[数据库(mysql) 所属分类 数据库(mysql) | 发布者 店小二05 | 时间 2017 | 作者 红领巾 ] 0人收藏点击收藏

Centos7+Keepalived实现Mariadb(mysql)的高可用(HA)

我们前面几篇文章中有介绍了Keepalived的功能--HA,关于MySQL-HA,目前有多种解决方案,比如heartbeat、drbd、mmm、共享存储,但是它们各有优缺点。heartbeat、drbd配置较为复杂,需要自己写脚本才能实现MySQL自动切换,对于不会脚本语言的人来说,这无疑是一种脑裂问题;对于mmm,生产环境中很少有人用,且mmm 管理端需要单独运行一台服务器上,要是想实现高可用,就得对mmm管理端做HA,这样无疑又增加了硬件开支;对于共享存储,个人觉得MySQL数据还是放在本地较为安全,存储设备毕竟存在单点隐患。使用MySQL双master+keepalived是一种非常好的解决方案,今天我们介绍利用keepalived构建高可用MySQL-HA,保证两台MySQL数据的一致性,然后用keepalived实现虚拟IP,通过keepalived自带的服务监控功能来实现MySQL故障时自动切换。

大概的思路是将两台MYSQL服务器配置双向复制,然后通过配置Keepalived指定realserver指向本地的Mysql服务器,实现高可用的切换。具体见下:


Centos7+Keepalived实现Mariadb(MYSQL)的高可用(HA)

Hostname:DB01

IP:192.168.5.53

Role:Mariadb+Keepalived

Hostname:DB012

IP:192.168.5.54

Role:Mariadb+Keepalived

Virtual IP:192.168.5.88

从Centos7下mysql已经被遗弃了,变为Mariadb了,当然功能及配置是一样的。因为我们是Centos7,所以需要指定安装源,为后面yum安装服务提供支持需要执行以下命令:

cd /etc/yum.repo vim epel.repo 添加以下内容 [epel] name=aliyun epel baseurl=http://mirrors.aliyun.com/epel/7Server/x86_64/ gpgcheck=0
Centos7+Keepalived实现Mariadb(MYSQL)的高可用(HA)

我们查看定义的源


Centos7+Keepalived实现Mariadb(MYSQL)的高可用(HA)

运行yum install MariaDB-server MariaDB-client命令安装 MariaDB

yum install mariadb-server mariadb-client mysql
Centos7+Keepalived实现Mariadb(MYSQL)的高可用(HA)

安装完成后, 我们通过rpm查看安装的相关信息

rpm -qa | grep mariadb
Centos7+Keepalived实现Mariadb(MYSQL)的高可用(HA)

然后启动数据库

systemctl start mariadb systemctl enable mariadb
Centos7+Keepalived实现Mariadb(MYSQL)的高可用(HA)

接着运行 mysql_secure_installation配置MariaDB

mysql_secure_installation
Centos7+Keepalived实现Mariadb(MYSQL)的高可用(HA)
Centos7+Keepalived实现Mariadb(MYSQL)的高可用(HA)

配置完成后,我们进入数据库

mysql Curoot Cp show databases;
Centos7+Keepalived实现Mariadb(MYSQL)的高可用(HA)

接下来我们创建一个数据库及表单信息

create databases DB1; show databases;
Centos7+Keepalived实现Mariadb(MYSQL)的高可用(HA)
use DB1; show tables;
Centos7+Keepalived实现Mariadb(MYSQL)的高可用(HA)
创建一个表 CREATE TABLE info(id int(30)NOT NULL,name varchar(30) NOT NULL,sex varchar(30) NOT NULL,mail VARCHAR(255) NOT NULL,PRIMARY KEY(id)); insert into info (name,sex,mail) values('ls','boy',[email protected]');
Centos7+Keepalived实现Mariadb(MYSQL)的高可用(HA)
show tables;
Centos7+Keepalived实现Mariadb(MYSQL)的高可用(HA)

我们可以根据自己的配置设置运行那些主机及用户进行mysql的连接;

如果我们需要配置任何主机都可以连接的话,可以使用一下命令

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION; flush privileges; 如果任何主机连接不需要密码的话可以下面 GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '' WITH GRANT OPTION; flush privileges;
Centos7+Keepalived实现Mariadb(MYSQL)的高可用(HA)

接下来我们修改默认的mysql配置文件

vim /etc/my.cnf server-id = 1 #backup这台设置2 log-bin = mysql-bin binlog-do-db=DB #需要同步的数据库名,如果有多个数据库,可重复此参数,每个数据库一行 binlog-ignore-db = mysql,information_schema #忽略写入binlog日志的库 auto-increment-increment = 2 #字段变化增量值 auto-increment-offset = 1 #初始字段ID为1 slave-skip-errors = all #忽略所有复制产生的错误
Centos7+Keepalived实现Mariadb(MYSQL)的高可用(HA)

保存退出;先查看下log bin日志和pos值位置

注意:这里记住File的值:mysql-bin.000001和Position的值:245,后面会用到。

show master status;
Centos7+Keepalived实现Mariadb(MYSQL)的高可用(HA)
change master to master_host='主服务器',master_user='mysql用户名',master_password='mysql服务密码',master_log_file='File值' ,master_log_pos=Postion值; 我们需要些对方的服务器IP地址192.168.5.54 change master to master_host='192.168.5.54',master_user='root',master_password='123456',master_log_file='mysql-bin.000001' ,master_log_pos=245; 里面填写的信息是是在主服务器上执行show master status;的信息
Centos7+Keepalived实现Mariadb(MYSQL)的高可用(HA)

添加防火墙端口

firewall-cmd --add-port='3306/tcp' --permanent
Centos7+Keepalived实现Mariadb(MYSQL)的高可用(HA)
启动slave slave start;
Centos7+Keepalived实现Mariadb(MYSQL)的高可用(HA)

主主同步配置完毕,查看同步状态Slave_IO和Slave_SQL是YES说明主主同步成功。

show slave status\G;
Centos7+Keepalived实现Mariadb(MYSQL)的高可用(HA)

我们也需要同时在第二台服务器上执行上面的所有操作。

我们在第二台服务器上也安装完成


Centos7+Keepalived实现Mariadb(MYSQL)的高可用(HA)

我们同样查看版本

rpm -qa | grep mariadb
Centos7+Keepalived实现Mariadb(MYSQL)的高可用(HA)

然后启动数据库

systemctl start mariadb systemctl enable mariadb
Centos7+Keepalived实现Mariadb(MYSQL)的高可用(HA)
接着运行 mysql_secure_installation配置MariaDB mysql_secure_installation
Centos7+Keepalived实现Mariadb(MYSQL)的高可用(HA)
Centos7+Keepalived实现Mariadb(MYSQL)的高可用(HA)

接下来我们同样登陆到mysql服务

mysql -uroot -p123456 show databases;
Centos7+Keepalived实现Mariadb(MYSQL)的高可用(HA)
create databases DB1; show databases;
Centos7+Keepalived实现Mariadb(MYSQL)的高可用(HA)
use DB; show tables;
Centos7+Keepalived实现Mariadb(MYSQL)的高可用(HA)

创建一个表及插入数据

CREATE TABLE info(id int(30)NOT NULL,name varchar(30) NOT NULL,sex varchar(30) NOT NULL,mail VARCHAR(255) NOT NULL,PRIMARY KEY(id)); insert into info (name,sex,mail) values('ls','boy',[email protected]');
Centos7+Keepalived实现Mariadb(MYSQL)的高可用(HA)
show tables; select * from info
Centos7+Keepalived实现Mariadb(MYSQL)的高可用(HA)

我们可以根据自己的配置设置运行那些主机及用户进行mysql的连接;

如果我们需要配置任何主机都可以连接的话,可以使用一下命令

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION; flush privileges;
Centos7+Keepalived实现Mariadb(MYSQL)的高可用(HA)

接下来我们修改默认的mysql配置文件

vim /etc/my.cnf server-id = 2 #backup这台设置2 log-bin = mysql-bin binlog-do-db=DB #需要同步的数据库名,如果有多个数据库,可重复此参数,每个数据库一行 binlog-ignore-db = mysql,information_schema #忽略写入binlog日志的库 auto-increment-increment = 2 #字段变化增量值 auto-increment-offset = 1 #初始字段ID为1 slave-skip-errors = all #忽略所有复制产生的错误
Centos7+Keepalived实现Mariadb(MYSQL)的高可用(HA)

保存退出: 我们需要些对方的ip地址192.168.5.53

change master to master_host='192.168.5.53',master_user='root',master_password='123456',master_log_file='mysql-bin.000001' ,master_log_pos=245;
Centos7+Keepalived实现Mariadb(MYSQL)的高可用(HA)

添加防火墙端口

firewall-cmd --add-port='3306/tcp' --permanent
Centos7+Keepalived实现Mariadb(MYSQL)的高可用(HA)
启动slave slave start;
Centos7+Keepalived实现Mariadb(MYSQL)的高可用(HA)

主主同步配置完毕,查看同步状态Slave_IO和Slave_SQL是YES说明主主同步成功。

show slave status\G; Slave_IO_Running: Yes Slave_SQL_Running: Yes
Centos7+Keepalived实现Mariadb(MYSQL)的高可用(HA)

接下来我们测试一下

本文数据库(mysql)相关术语:navicat for mysql mysql workbench mysql数据库 mysql 存储过程 mysql安装图解 mysql教程 mysql 管理工具

主题: SQL服务器MySQL数据TI数据库OPTRIMRY防火墙
分页:12
转载请注明
本文标题:Centos7+Keepalived实现Mariadb(MYSQL)的高可用(HA)
本站链接:http://www.codesec.net/view/519734.html
分享请点击:


1.凡CodeSecTeam转载的文章,均出自其它媒体或其他官网介绍,目的在于传递更多的信息,并不代表本站赞同其观点和其真实性负责;
2.转载的文章仅代表原创作者观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,本站对该文以及其中全部或者部分内容、文字的真实性、完整性、及时性,不作出任何保证或承若;
3.如本站转载稿涉及版权等问题,请作者及时联系本站,我们会及时处理。
登录后可拥有收藏文章、关注作者等权限...
技术大类 技术大类 | 数据库(mysql) | 评论(0) | 阅读(54)