视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
利用Keepalived构建双主MySQL
2020-11-09 11:13:32 责编:小采
文档


使用MySQL双master+keepalived是一种非常好的解决方案,在MySQL-HA环境中,MySQL互为主从关系,这样就保证了两台MySQL数据的一致

使用MySQL双master+keepalived是一种非常好的解决方案,在MySQL-HA环境中,MySQL互为主从关系,这样就保证了两台MySQL数据的一致性,然后用keepalived实现虚拟IP,通过keepalived自带的服务监控功能来实现MySQL故障时自动切换。

下面,我把即将上线的一个生产环境中的架构与大家分享一下,看一下这个架构中,MySQL-HA是如何实现的,环境拓扑如下

MySQL-VIP:10.10.10.21

MySQL-master1:10.10.10.17

MySQL-master2:10.10.10.18

OS版本:RedHat6.2

MySQL版本:mysql-5.1.59

Keepalived版本:keepalived-1.1.20

一、MySQL master-master配置

1、修改MySQL配置文件

两台MySQL均如要开启binlog日志功能,开启方法:在MySQL配置文件[MySQLd]段中加上log-bin=MySQL-bin选项

两台MySQL的server-ID不能一样,默认情况下两台MySQL的serverID都是1,需将其中一台修改为2即可

Master1配置:

#vim /etc/my.cnf

log-bin=mysql-bin //开启binlog日志功能

log =/usr/local/mysql/var/mysql.log //会打印mysql的所以sql语句

server-id= 1 //

binlog-do-db =mysql //需要同步的库名称

auto-increment-increment= 2

auto-increment-offset= 2

Master2配置:

#vim /etc/my.cnf

log-bin=mysql-bin //开启binlog日志功能

log =/usr/local/mysql/var/mysql.log //会打印mysql的所以sql语句

server-id= 2

binlog-do-db =mysql //需要同步的库名称

auto-increment-increment= 2

auto-increment-offset= 2

2、建授权用户

在10.10.10.17上新建授权用户

grant replicationslave on *.* to test@’10.10.10.%’ identified by ‘123456’;

在10.10.10.18服务器上建授权用户

grant replicationslave on *.* to test@’10.10.10.%’ identified by ‘123456’;

3、将10.10.10.17设为10.10.10.18的主服务器

在10.10.10.18上将10.10.10.17设为自己的主服务器

mysql> show master status;(17服务器配置)

1+------------------+----------+--------------+------------------+

| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |

+------------------+----------+--------------+------------------+

| mysql-bin.000027| 106|mysql | |

+------------------+----------+--------------+------------------+

1 row in set (0.01 sec)

MySQL> change master to master_host='10.10.10.17',master_user=’test’,master_password='123456',master_log_file='MySQL-bin.000027',master_log_pos=106;

Query OK, 0 rows affected (0.05 sec)

MySQL> start slave;

Query OK, 0 rows affected (0.00 sec)

mysql> show slave status \G

Slave_IO_Running: Yes

Slave_SQL_Running: Yes \\如果此2项都为yes,master-master配置即成功

将10.10.10.18设为10.10.10.17的主服务器 方法与上面设置一致只需将

在10.10.10.17上将10.10.10.18设为自己的主服务器

mysql> show master status;(18服务器配置)

1+------------------+----------+--------------+------------------+

| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |

+------------------+----------+--------------+------------------+

| mysql-bin.000027| 106|mysql | |

+------------------+----------+--------------+------------------+

1 row in set (0.01 sec)

MySQL> change master to master_host='10.10.10.18',master_user=’test’,master_password='123456',master_log_file='MySQL-bin.000027',master_log_pos=106;

Query OK, 0 rows affected (0.05 sec)

MySQL> start slave;

Query OK, 0 rows affected (0.00 sec)

mysql> show slave status \G

Slave_IO_Running: Yes

Slave_SQL_Running: Yes \\如果此2项都为yes,,master-master配置即成功

测试是否成功:

如上述均正确配置,现在在任何一台MySQL上更新数据都会同步到另一台MySQL(仅限mysql库)

下载本文
显示全文
专题