MYSQL主主配置
主主复制:两个节点都可以更新数据,并且互为主从
容易产生的问题:数据不一致;慎用
优势:相对于一主一从,如果主节点出现故障,无需对从做修改配置,另一个主从直接顶替(需要搭配代理)
主1配置:
1.修改mysql配置文件
[root@centos8 mysql]vim /etc/my.cnf.d/mariadb-server.cnf [mysqld] server-id=211 #设置唯一标识的server-id log-bin #开启二进制日志 auto_increment_offset=1 #设置自动增长起始点 auto_increment_increment=2 #设置自动增长步长 systemctl restart mariadb-server
2.查看二进制日志文件及位置,用此位置的二进制文件可以不用在从上创建账号
MariaDB [(none)]> show master logs; +--------------------+-----------+ | Log_name | File_size | +--------------------+-----------+ | mariadb-bin.000001 | 360 | +--------------------+-----------+ 1 row in set (0.000 sec)
3.创建复制账号
MariaDB [(none)]> grant replication slave on *.* to repluser@'10.0.0.%' identified by '123456'; #创建一个用于主从复制的账号
主2配置:
1.修改mysql配置文件
[root@centos8 mysql]vim /etc/my.cnf.d/mariadb-server.cnf [mysqld] server-id=212 #设置唯一标识的server-id log-bin #开启二进制日志 auto_increment_offset=2 #设置自动增长起始点 auto_increment_increment=2 #设置自动增长步长 systemctl restart mariadb-server
2.查看二进制日志文件及位置
MariaDB [(none)]> show master logs; +--------------------+-----------+ | Log_name | File_size | +--------------------+-----------+ | mariadb-bin.000001 | 555 | | mariadb-bin.000002 | 367 | | mariadb-bin.000003 | 344 | +--------------------+-----------+ 3 rows in set (0.000 sec)
3.配置关于主1复制的相关信息
MariaDB [(none)]> CHANGE MASTER TO MASTER_HOST='10.0.0.211', MASTER_USER='repluser', MASTER_PASSWORD='123456', MASTER_PORT=3306, MASTER_LOG_FILE='mariadb-bin.000001', MASTER_LOG_POS=360;
主1配置:
配置关于主1复制的相关信息,实现互相复制
MariaDB [(none)]> CHANGE MASTER TO MASTER_HOST='10.0.0.212', MASTER_USER='repluser', MASTER_PASSWORD='123456', MASTER_PORT=3306, MASTER_LOG_FILE='mariadb-bin.000004', MASTER_LOG_POS=344;
此处配置slave时发现了一个问题:start slave 后查看show slave status\G;会一直报错
Last_IO_Error: Got fatal error 1236 from master when reading data from binary log: 'Could not find first log file name in binary log index file'
敲入一下命令即可解决
stop slave;
reset slave;
start slave;
该模式在早期的时候同时创建数据库时会出现报错,新的mysql已经避免了此问题
该模式因为设置了自动增长,所以在表钟新增记录时也不会出现问题,但如果两侧同时指定主键一样时就不行了

浙公网安备 33010602011771号