暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

maridb主主模式

运维技术经验分享 2020-07-16
443

 时间就是我们当下的呼吸,每一刻都应该全心全意的生活。



公司需求:提高服务高可用性进行业务稳定性演练,开发人员进行数据结构改造,配合调整业务架构,实现异地容灾异地多活保证高可用,以下结构后续可进行扩展。




01



思路






02




应用场景


双主互备就是要保持两个数据库的状态自动同步,对任何一个数据库的操作都自动应用到另外一个数据库,始终保持两个数据库数据一致,这样做的意义是既提高了数据库的容灾性,又可以做负载均衡,可以将请求分摊到其中任何一台上,提高网站吞吐量

 

优点:主写从读,实现异地容灾多活。当A节点挂了,直接将数据写入B节点,无需变更配置文件即可具有写入权限

缺点:网络延迟



03



数据库服务器配置


机房Amaster-1

server-id = 1   
log_slave_updates #把从库的写操作记录到binlog中
auto_increment_increment= 2 #设定为主服务器的数量,防止auto_increment字段重复
auto_increment_offset = 1 #自增长字段的初始值,在多台master环境下,不会出现自增长ID重复


 

机房Aslave-1

 

server-id = 3
log_slave_updates #把从库的写操作记录到binlog中


 

机房Bmaster-2

server-id = 2   
log_slave_updates #把从库的写操作记录到binlog中
auto_increment_increment= 2 #设定为主服务器的数量,防止auto_increment字段重复
auto_increment_offset = 2 #自增长字段的初始值,在多台master环境下,不会出现自增长ID重复


 

机房Bslave-2

 

server-id = 4
log_slave_updates #把从库的写操作记录到binlog中




04



创建同步账户(四台机器都执行)



//授权A主
GRANT REPLICATION SLAVE ON *.* TO 'slave'@'master-1' IDENTIFIED BY 'slave';
//授权A从
GRANT REPLICATION SLAVE ON *.* TO 'slave'@'slave-1' IDENTIFIED BY 'slave';
//授权B主
GRANT REPLICATION SLAVE ON *.* TO 'slave'@'master-2' IDENTIFIED BY 'slave';
//授权B从
GRANT REPLICATION SLAVE ON *.* TO 'slave'@'slave-2' IDENTIFIED BY 'slave';
FLUSH PRIVILEGES;



05



查看master状态


机房A

root@localhost : (none) 17:16:25> show master status;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000035 | 342 | | |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)


 

机房B

root@localhost : (none) 17:16:05> show master status;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000035 | 342 | | |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)


 

 

06



设置同步


//A

root@localhost : (none) 17:16:05>CHANGE MASTER TO MASTER_HOST='master-2',MASTER_PORT=3306,MASTER_USER='slave',MASTER_PASSWORD='slave',MASTER_LOG_FILE='mariadb-bin.000035',MASTER_LOG_POS=342;

root@localhost : (none) 17:16:05>START SLAVE;


//A

root@localhost : (none) 17:16:05>CHANGE MASTER TO MASTER_HOST='master-1',MASTER_PORT=3306,MASTER_USER='slave',MASTER_PASSWORD='slave',MASTER_LOG_FILE='mariadb-bin.000035',MASTER_LOG_POS=342;

root@localhost : (none) 17:16:05>START SLAVE;


//B

root@localhost : (none) 17:16:05>CHANGE MASTER TO MASTER_HOST='master-1',MASTER_PORT=3306,MASTER_USER='slave',MASTER_PASSWORD='slave',MASTER_LOG_FILE='mariadb-bin.000035',MASTER_LOG_POS=342;

root@localhost : (none) 17:16:05>START SLAVE;


//B

root@localhost : (none) 17:16:05>CHANGE MASTER TO MASTER_HOST='master-2',MASTER_PORT=3306,MASTER_USER='slave',MASTER_PASSWORD='slave',MASTER_LOG_FILE='mariadb-bin.000035',MASTER_LOG_POS=342;

root@localhost : (none) 17:16:05>START SLAVE;


// 完毕之后,分别执行

root@localhost : (none) 17:16:05> SHOW SLAVE STATUS\G;


如出现以下两项,则说明配置成功!

Slave_IO_Running: Yes

Slave_SQL_Running: Yes


07



架构扩展


keepalive?GaleraPXC


文章转载自运维技术经验分享,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论