搭建MySQL主从模式和双主模式

背景

已经搭建好了多台服务器的mysql环境,详情见https://blog.csdn.net/qq_41488523/article/details/112723759

 

搭建MySQL主从

 

主库

编辑my.cnf文件,windows下是my.ini 

vi /etc/my.cnf

 添加以下内容

#logbin
log_bin=mysql-bin #开启binlog
server-id=1 #设置ID全局唯一
sync-binlog=1 #写入操作就与磁盘同步
binlog-ignore-db=information_schema #设置不同步的库
binlog-ignore-db=performance_schema 
binlog-ignore-db=sys
#binlog-do-db=test #设置同步的库

重启mysql服务

systemctl restart mysqld

登录mysql并授权(Admin123!是MySQL的密码)

grant replication slave on *.* to 'root'@'%' identified by 'Admin123!';
grant all privileges on *.* to 'root'@'%' identified by 'Admin123!';
flush privileges;

查看并记住中继日志的名字和当前位置(File和Position)

show master status;

 

从库

vi /etc/my.cnf
#logbin
server-id=2 #设置ID全局唯一
relay_log=mysql-relay-bin#设置中继日志名字
read_only=1#只读
systemctl restart mysqld

查看从库状态(第一次应该是Empty set,如果不是,可以调用stop slave停止之前的主从信息)
 

show slave status;

制定主库信息(上面看到File和Position会在这里用到)

change master to master_host='192.168.1.101',master_port=3306,master_user='root',master_password='Admin123!',master_log_file='mysql-bin.000001',master_log_pos=869;

开启

start slave;

查看信息 

show slave status \G;

如果查看到一下信息,则说明配置正常

Slave_IO_Running:Connection
Slave_SQL_Running:Yes

异常

但我第一次配的时候出现了:Slave_IO_Running:No。调查之后才发现是mysql 有个uuid , 而uuid 是唯一标识的。

因为我之前是直接服务器克隆过来了,所以mysql的的uuid的值是一样的,只要删除那个文件就行了:

如果是使用yum安装的话,记录uuid的文件应该在这个路径

vi /var/lib/mysql/auto.cnf

这里不删除了给他留个备份

systemctl stop mysqld
mv /var/lib/mysql/auto.cnf /var/lib/mysql/auto.cnf.bak
systemctl start mysqld

双主模式

备份主库所有数据到当前目录下(这一步没有什么用,就是以后主库数据量大的时候要添加从库的话从库可以先和这个文件同步再和主库同步,节省一点主库主机的资源)

mysqldump --all-databases > mysql_backup_all.sql -uroot -p

这里是根据原先配的主从添加一个新的主库

主库1

vi /etc/my.cnf

追加以下信息 

relay_log=mysql-relay-bin
log_slave_updates=1#更新操作要不要写到bin里面去
auto_increment_offset=1#主键递增基本值,双主双写要错开1,3,5,7,...
auto_increment_increment=2#主键递增跳跃偏移量

登录,记住File和Position 

show master status;

主库2

#logbin
log_bin=mysql-bin #开启binlog
server-id=4 #设置ID全局唯一
sync-binlog=1 #写入操作就与磁盘同步
binlog-ignore-db=information_schema #设置不同步的库
binlog-ignore-db=performance_schema 
binlog-ignore-db=sys
#binlog-do-db=test #设置同步的库
#双主模式
relay_log=mysql-relay-bin
log_slave_updates=1#更新操作要不要写到bin里面去
auto_increment_offset=2#主键递增基本值,双主双写要错开2,4,6,8,.....
auto_increment_increment=2#主键递增跳跃偏移量
systemctl restart mysqld

登录后授权

grant replication slave on *.* to 'root'@'%' identified by 'Admin123!';
grant all privileges on *.* to 'root'@'%' identified by 'Admin123!';
flush privileges;

查看主库2的中继日志的Position和File信息

show master status;

把主库2作为主库1的从库 

change master to master_host='192.168.1.101',master_port=3306,master_user='root',master_password='Admin123!',master_log_file='mysql-bin.000002',master_log_pos=154;
start slave;
show slave status \G;

主库1

把主库1作为主库2的从库

change master to master_host='192.168.1.104',master_port=3306,master_user='root',master_password='Admin123!',master_log_file='mysql-bin.000001',master_log_pos=884;
start slave;
show slave status \G;

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值