mysql master master slave 环境搭建
2024-08-26 07:39:59
master1:192.168.128.47
master2:192.168.128.96
slave:192.168.128.97
master1与master2互备,master2作为slave的master
①,在master1端:
修改my.cnf
server-id = 1
auto_increment_increment = 2
auto_increment_offset = 1
#binlog_do_db = sssjpt,sakila,test --可选,用来指定master端的那些db操作记录binlog
#binlog_ignore_db = mysql --可选,用来指定master端的那些db操作不记录binlog
#replicate_do_db = sssjpt,sakila,test --可选,用来指定slave端的SQL线程应用master端传来的哪些DB binlog
#replicate_ignore_db = mysql
log_slave_updates --同步master端的二进制日志来完成同步时的操作也记录当前库二进制日志,这样可以将该slave作为另一个slave的master
参数解释:
auto_increment_increment = 2
auto_increment_offset = 1
主要用于master-master端,因为两台master节点都有可能同时发生写操作,这样的话就有可能发生auto_increment 键值冲突,现在将auto_increment_increment=2,auto_increment_offset=1,在master1端每次执行自增操作时都会增加比当前数据最大值大2的数据,并且从最大值的后面第1个位置开始,每次增加2个数。如,1,3,5,7 。。。
将auto_increment_increment=2,auto_increment_offset=2,在master2端每次执行自增操作时都会增加比当前数据最大值大2的数据,并且从最大值的后面第2个位置开始,每次增加2个数,如,2,4,6,8 。。。
如果在主从同步中只让一个master执行写的话,则没有比较设置auto_increment_increment,auto_increment_offset参数
不过在新版本的mysql里面,可以通过innodb_autoinc_lock_mode参数来限制
②,
master1:
grant replication slave to *.* on backup@'192.168.128.96' identified by '123456';
show master status;
mysqldump -uroot -p --databases db1 db2 --lock-all-tables > /tmp/dump.sql
scp /tmp/dump.sql root@192.168.128.96:/tmp
master2:
mysql -uroot -p < /tmp/dump.sql
change master to master_host='192.168.128.47',master_user='backup',master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=120;
start slave;
③,在master2端:
修改my.cnf
server-id = 2
auto_increment_increment = 2
auto_increment_offset = 2
#binlog_do_db = sssjpt,sakila,test
#binlog_ignore_db = mysql
#replicate_do_db = sssjpt,sakila,test
#replicate_ignore_db = mysql
log_slave_updates --同步master端的二进制日志来完成同步时的操作也记录当前库二进制日志,这样可以将该slave作为另一个slave的master
④,
master2:
grant replication slave to *.* on backup@'192.168.128.47' identified by '123456';
show master status;
master1:
change master to master_host='192.168.128.96',master_user='backup',master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=120;
start slave;
⑤,
master1:
scp /tmp/dump.sql root@192.168.128.97:/tmp
slave:
修改my.cnf
server-id = 3
#binlog_do_db = sssjpt,sakila,test
#binlog_ignore_db = mysql
#replicate_do_db = sssjpt,sakila,test
#replicate_ignore_db = mysql
mysql -uroot -p < /tmp/dump.sql
change master to master_host='192.168.128.97',master_user='backup',master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=120;
start slave;
最新文章
- 编译安装mysql
- 关于Java中的final关键字
- 数据库中 dbo是什么意思
- Linux创建用户命令
- 【EF】疑难杂症
- 数学类杂志SCI2013-2014影响因子
- 软工+C(9): 助教指南,持续更新...
- ios 本地存储文件夹的使用注意
- bash 脚本。find 命令,xargs
- Eclipse中创建一个新的SpringBoot项目
- WITH RECOMPILE和OPTION(RECOMPILE)区别仅仅是存储过程级重编译和SQL语句级重编译吗
- 【AI】Exponential Stochastic Cellular Automata for Massively Parallel Inference - 大规模并行推理的指数随机元胞自动机
- [Java] Apache Ant 构建基础教程
- sqlserver中对于特定数据字段定义特定的数据类型
- 容器,表格 ,div,元素可左右拖动,滚动 css
- 本地mysql快速迁移到服务器数据库中
- Linux命令(三)远程登录
- phpMyadmin各版本漏洞
- Appium+python自动化10-AVD 模拟器
- Linux时间子系统之八:动态时钟框架(CONFIG_NO_HZ、tickless)【转】