且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

MySQL数据库主主复制

更新时间:2022-10-04 09:38:40

结合上篇文章‘MySQL数据库主从复制’,本文在此基础上进行MySQL的主主复制


所谓双主复制,即双方互为对方的主从,每台主设备既要配置二进制日志也要配置中继日志;

二进制日志是记录数据库实时操作的,出现故障的话能够根据二进制日志进行重现操作,通常结合全量备份来使用;

中继日志是从服务器从主服务器的二进制日志读取的信息,此读取操作由从的IO线程完成,然后由从的SQL线程操作中继日志的内容;


主服务器(原来的主服务器)

1
2
3
4
5
6
7
8
9
10
vim /etc/my.cnf.d/server.cnf 
[server]
  skip_name_resolve=ON
  innodb_file_per_table=ON
  server_id = 1
  log_bin = master-log
  relay_log=relay-log        #作为对方的从节点,此处需要配置中继日志
  auto_increment_offset=1    #定义此节点使用奇数id
  auto_increment_increment=2 #步长为2
  #注意,本机既是主又是从,即可读可写,所以不能像配置从一样配置只读功能

开启mariadb.service服务

1
2
3
4
5
6
CHANGE MASTER TO MASTER_HOST='192.168.1.106',MASTER_USER='repluser',MASTER_PASSWORD='centos',MASTER_LOG_FILE='master-log.000001',MASTER_LOG_POS=505;
START SLAVE IO_THREAD,SQL_THREAD; 
SHOW  SLAVE STATUS\G;  
#主服务器的主功能已经在上篇文章配置好了,这里只需配置为从即可          
#MASTER_LOG_FILE是要复制的主节点的二进制日志   
#MASTER_LOG_POS是要从主节点二进制日志的哪个位置开始复制,上篇文章未作说明,这里补上

另一台主服务器(原从服务器)

1
2
3
4
5
6
7
8
9
vim /etc/my.cnf.d/server.cnf  
[server] 
  skip_name_resolve = ON 
  innodb_file_per_table = ON  
  server_id = 2  
  relay_log = relay-log 
  log_bin=master-log 
  auto_increment_offset=2 
  auto_increment_increment=2

开启mariadb.service服务

1
2
3
GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO 'repluser'@'192.168.1.%' IDENTIFIED BY 'centos';
FLUSH PRIVILEGES;
SHOW MASTER STATUS;

测试:

测试双主是否生效,即双方都创建一些库、表或者插入一些字段,然后在对方数据库中检查是否产生新的内容,具体操作不再赘述


双主复制完成



本文转自  a_pan  51CTO博客,原文链接:http://blog.51cto.com/panpangao/1981426