使用一台slave作为中继,分担Master的压力,slave中继需要开启bin-log,并配置log-slave-updates
Slave中继可使用Black-hole存储引擎,不会把数据存储到磁盘,只记录二进制日志。
M-M 双主互备(互为主从)
每个服务器需要做同样的同步更新,破坏了事物的隔离性和数据的一致性。
M-M-M
监控三台机器互相作对方的master
天生的缺陷:复制延迟,slave上同步要慢于master,如果大并发的情况那延迟更严重。
mysql在5.6已经自身可以实现fail over故障切换
One slave Muti master 一从对多主
好处:节省成本,将多个master数据自动化整合
缺陷:对库和表数据的修改较多
=================================================================
本地安装两个mysql,或者使用虚拟机,或者使用docker安装,需要准备两个mysql,本文使用docker安装
在docker中先创建两个mysql服务器
主服务器:3308
从服务器:3309
- master的my.cnf配置文件
#mysql master1 config
[mysqld]
server-id = 1 # 节点ID,确保唯一
log config
log-bin = mysql-bin #开启mysql的binlog日志功能
sync_binlog = 1 #控制数据库的binlog刷到磁盘上去 , 0 不控制,性能最好,1每次事物提交都会刷到日志文件中,性能最差,最安全
binlog_format = mixed #binlog日志格式,mysql默认采用statement,建议使用mixed
expire_logs_days = 7 #binlog过期清理时间
max_binlog_size = 100m #binlog每个日志文件大小
binlog_cache_size = 4m #binlog缓存大小
max_binlog_cache_size= 512m #最大binlog缓存大
binlog-ignore-db=mysql #不生成日志文件的数据库,多个忽略数据库可以用逗号拼接,或者 复制这句话,写多行
auto-increment-offset = 1 # 自增值的偏移量
auto-increment-increment = 1 # 自增值的自增量
slave-skip-errors = all #跳过从库错误
- slave1的my.cnf配置文件
[mysqld]
server-id = 2
log-bin=mysql-bin
relay-log = mysql-relay-bin
replicate-wild-ignore-table=mysql.%
replicate-wild-ignore-table=test.%
replicate-wild-ignore-table=information_schema.%
====================================================================================
依次执行
CREATE USER repl_user IDENTIFIED BY ‘root’;
CREATE USER ‘repl_user’@‘172.17.0.1’ IDENTIFIED BY ‘root’;
CREATE USER ‘repl_user’@‘192.168.1.2’ IDENTIFIED BY ‘root’;
root表示该用户的用户密码
你只需要修改的是将 192.168.1.2改为你自己主机的ip地址即可
查看自己创建用户是否成功
SELECT User, Host FROM mysql.user;
依次执行
grant replication slave on . to ‘repl_user’@‘%’;
grant replication slave on . to ‘repl_user’@‘172.17.0.1’;
grant replication slave on . to ‘repl_user’@‘192.168.1.2’;
FLUSH PRIVILEGES;
注意:我们接下来进行一个很重要的步骤,就是修改主库repl_user的plugin
依次执行以操作:
alter user ‘repl_user’@‘%’ identified with mysql_native_password by ‘root’;
alter user ‘repl_user’@‘172.17.0.1’ identified with mysql_native_password by ‘root’;
alter user ‘repl_user’@‘192.168.1.2’ identified with mysql_native_password by ‘root’;
show master status;
===================================================================
登录进入从库的mysql服务内执行以下命令
CHANGE MASTER TO
MASTER_HOST = ‘localhost’,
MASTER_USER = ‘repl_user’,
MASTER_PASSWORD = ‘root’,
MASTER_PORT = 3308,
MASTER_LOG_FILE=‘binlog.000002’,
MASTER_LOG_POS=1374,
MASTER_RETRY_COUNT = 60,
MASTER_HEARTBEAT_PERIOD = 10000;
注意你要修改以下内容:
start slave;
附:停止从库进程:stop slave;
show slave status\G
当这两个信息 都为yes时说明你配置成功啦。
=====================================================================
最后
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Java工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。
因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,不论你是刚入门Java开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!
如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
mg-Z3fYL8Dn-1715852142328)]
[外链图片转存中…(img-LoE1ALvS-1715852142329)]
[外链图片转存中…(img-iYypyVx9-1715852142329)]
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,不论你是刚入门Java开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!
如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!