mysql主从复制,主主同步-传统方法

三台mysql,一主二从

主从同步

第一步:修改每个mysql的配置文件

  • 主mysql配置
[mysqld]
# 主库配置
# 设置server_id,一般设置为IP,保证唯一就好
server_id=1

# 开启binlog,名字可以随意取
log-bin=mysql-bin

## binlog日志格式,(mixed,statement,row,默认格式是statement)
##
binlog_format=mixed

## 日志自动删除日期,默认值为0,表示不自动删除。
expire_logs_days=7

#要同步的数据库
binlog-do-db=ride_share

## 复制过滤:也就是指定哪个数据库不用同步(mysql库一般不同步)
binlog-ignore-db=mysql,information_schema,sys,performance_schema

#控制binlog的写入频率。每执行多少次事务写入一次(这个参数性能消耗很大,但可减小MySQL崩溃造成的损失)
sync_binlog = 1
  • 从数据库配置
[mysqld]
# 从库配置
# 设置server_id,一般设置为IP,保证唯一就好
server_id=2

# 开启binlog,名字可以随意取
#log-bin=mysql-bin

## binlog日志格式,(mixed,statement,row,默认格式是statement)
#binlog_format=mixed

## 日志自动删除日期,默认值为0,表示不自动删除。
#expire_logs_days=7

# 跳过主从复制中遇到的所有错误或指定类型的错误,避免slave端复制中断。
# 如:1062错误是指一些主键重复,1032错误是因为主从数据库数据不一致,全部填写all
slave_skip_errors=all

#需要同步的数据库名。如果不指明同步哪些库,就去掉这行,表示所有库的同步(除了ignore忽略的库)。
replicate-do-db=ride_share 
#当只针对某些库的某张表进行同步时,多个不同库表,可以配置将上下两行多配置几个
#replicate-wild-do-table = ride_share.user

## 复制过滤:也就是指定哪个数据库不用同步(mysql库一般不同步)
replicate-ignore-db=mysql,information_schema,sys,performance_schema

#加快事务处理速度,牺牲了一定的可靠性。由于Slave 是Master 的备份,所以即使Slave 服务崩溃或者断点丢失数据,也可以重新启动后从主库恢复。
#sync_binlog = 0
#innodb_flush_log_at_trx_commit = 0

#如果想实现 主-从(主)-从 这样的链条式结构,通过同步产生的变化将记录在自己的binlog中
#log-slave-updates=1
# 只读,主从同步线程具有管理员权限,不受read_only控制,所以能够正常写入。
read_only=1

注意:主库使用binlog-ignore-db,从库使用replicate-do-db配置

多个从机只需要server_id设置不一样即可,其他都一样。
关于binlog_format的选择问题——参考这里
配置完之后,查看一下logbin是否开启

 show variables like 'log_bin%';

第二步:主mysql创建授权用户-用于从mysql同步使用

grant replication slave on *.* to 'repl'@'%' identified by '123456';

第三步:从mysql连接主mysql实现同步

  • 查看主服务器master状态获取File与Position参数
 show master status;
  • 先执行停止同步命令
stop slave; 
  • 连接主mysql
change master to master_host='192.168.150.129',master_user='repl',master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=0;

master_log_file对应File,master_log_pos对应Position,设置0也可以,会自动同步过来。

  • 开启同步
start slave;
  • 查看从节点信息
show slave status; //如图这两个参数都是Yes即可!!!

在这里插入图片描述

  • 解除主从复制关系
1、stop slave;
2、reset slave; 或直接删除master.info和relay-log.info这两个文件;
3、修改my.cnf删除主从相关配置参数。

主主同步

主从相互授权连接,读取对方binlog日志并更新到本地数据库的过程;只要对方数据改变,自己就跟着改变;
主主同步,需要特别注意的是,如果数据库里有自增字段,需要如下配置

#这个参数一般用在主主同步中,用来错开自增值, 防止键值冲突
auto_increment_offset = 1

#这个参数一般用在主主同步中,用来错开自增值, 防止键值冲突
auto_increment_increment = 2
#这个参数一般用在主主同步中,用来错开自增值, 防止键值冲突,增长量都配置为2
auto_increment_offset = 2

#这个参数一般用在主主同步中,用来错开自增值, 防止键值冲突
auto_increment_increment = 2
[mysqld]
# 主库配置
# 设置server_id,一般设置为IP,保证唯一就好
server_id=1

# 开启binlog,名字可以随意取
log-bin=mysql-bin

## binlog日志格式,(mixed,statement,row,默认格式是statement)
##
binlog_format=mixed

## 日志自动删除日期,默认值为0,表示不自动删除。
expire_logs_days=7

# 跳过主从复制中遇到的所有错误或指定类型的错误,避免slave端复制中断。
# 如:1062错误是指一些主键重复,1032错误是因为主从数据库数据不一致
slave_skip_errors=all
#这个参数一般用在主主同步中,用来错开自增值, 防止键值冲突
auto_increment_offset = 1

#这个参数一般用在主主同步中,用来错开自增值, 防止键值冲突
auto_increment_increment = 2

## 复制过滤:也就是指定哪个数据库不用同步(mysql库一般不同步)
binlog-ignore-db=mysql,information_schema,sys,performance_schema

#控制binlog的写入频率。每执行多少次事务写入一次(这个参数性能消耗很大,但可减小MySQL崩溃造成的损失)
sync_binlog = 1

#这个参数一般用在主主同步中,用来错开自增值, 防止键值冲突
auto_increment_offset = 1

#这个参数一般用在主主同步中,用来错开自增值, 防止键值冲突
auto_increment_increment = 1

#通过同步产生的变化将记录在自己的binlog中
log-slave-updates=ON

主主同步就不用指定是哪一个数据库了,尽量保持一致。
接下来,参考主从复制,创建授权用户,然后互相连接对方即可。

mysql定时备份数据

可以参考这个——MySQL 数据库定时备份的几种方式(全面)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值