“ 时间就是我们当下的呼吸,每一刻都应该全心全意的生活。”
公司需求:提高服务高可用性进行业务稳定性演练,开发人员进行数据结构改造,配合调整业务架构,实现异地容灾异地多活保证高可用,以下结构后续可进行扩展。
01
—
思路

02
—
应用场景
双主互备就是要保持两个数据库的状态自动同步,对任何一个数据库的操作都自动应用到另外一个数据库,始终保持两个数据库数据一致,这样做的意义是既提高了数据库的容灾性,又可以做负载均衡,可以将请求分摊到其中任何一台上,提高网站吞吐量
优点:主写从读,实现异地容灾多活。当A节点挂了,直接将数据写入B节点,无需变更配置文件即可具有写入权限
缺点:网络延迟
03
—
数据库服务器配置
机房A主 master-1
server-id = 1log_slave_updates #把从库的写操作记录到binlog中auto_increment_increment= 2 #设定为主服务器的数量,防止auto_increment字段重复auto_increment_offset = 1 #自增长字段的初始值,在多台master环境下,不会出现自增长ID重复
机房A从 slave-1
server-id = 3log_slave_updates #把从库的写操作记录到binlog中
机房B主 master-2
server-id = 2log_slave_updates #把从库的写操作记录到binlog中auto_increment_increment= 2 #设定为主服务器的数量,防止auto_increment字段重复auto_increment_offset = 2 #自增长字段的初始值,在多台master环境下,不会出现自增长ID重复
机房B从 slave-2
server-id = 4log_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?Galera?PXC?
文章转载自运维技术经验分享,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




