Mysql数据库在单机工作时候存在单点故障,并且数据也存在损坏的可能,此时就需要做双机实时冗余,那就会用到常用的架构主从和主主。本次实践使用mariadb来实现冗余。
yum install -y mariadb-server
当前仓库中的版本是mariadb 10.3.28。
systemctl enable --now mariadb.service
查看当前日志位置
grant replication slave on *.* to ‘repuser‘@‘192.168.22.%‘ identified by ‘test‘;
#查看主从复制的帮助内容
help change master to;
****
CHANGE MASTER TO
MASTER_HOST=‘master2.mycompany.com‘,
MASTER_USER=‘replication‘,
MASTER_PASSWORD=‘bigs3cret‘,
MASTER_PORT=3306,
MASTER_LOG_FILE=‘master2-bin.001‘,
MASTER_LOG_POS=4,
MASTER_CONNECT_RETRY=10;
****
将日志信息填写的change master to模板中
CHANGE MASTER TO
MASTER_HOST=‘192.168.22.28‘,
MASTER_USER=‘repuser‘,
MASTER_PASSWORD=‘test‘,
MASTER_PORT=3306,
MASTER_LOG_FILE=‘testbin.000002‘,
MASTER_LOG_POS=540,
启动服务
配置主从模板到从服务器上
启动slave线程
主:
从
到此主从已经可以正常同步和使用。
主服务器:
第二主服务器:
CHANGE MASTER TO
MASTER_HOST=‘192.168.22.28‘,
MASTER_USER=‘repuser‘,
MASTER_PASSWORD=‘test‘,
MASTER_PORT=3306,
MASTER_LOG_FILE=‘testbin.000002‘,
MASTER_LOG_POS=540,
CHANGE MASTER TO
MASTER_HOST=‘192.168.22.38‘,
MASTER_USER=‘repuser‘,
MASTER_PASSWORD=‘test‘,
MASTER_PORT=3306,
MASTER_LOG_FILE=‘mariadb-bin.000003‘,
MASTER_LOG_POS=344
在主节点创建表插入3行数据
create table test(id int auto_increment primary key,user char(10));
insert test(user) values(‘user11‘),(‘user12‘),(‘user13‘);
在第二主节点向表中插入数据
insert test (user) values(‘user21‘),(‘user22‘),(‘user23‘);
可以看出已经避开了冲突的键值
主主复制是通过互为从节点来实现同步,通过增值的规避解决主键冲突,但是如果两个节点同时写入时,仍然会有两个节点同时修改数据的情况,所以此种主主模式一般仅用于快速切换主备,不用来直接同时提供双写入。
原文:https://blog.51cto.com/u_15131458/3251596