MySQL 数据库主从同步
主从介绍
- MySQL主从又叫做Replication, AB复制.就是A主机与B主机做主从后,在A上写数据,另一台机器B也会跟着同步写入数据,保持实时同步.
- MySQL主从是基于binlog实现,主必须开启binlog.
- 主从步骤:
- 主 将操作记录到binlog
- 从将主的binlog同步到本机写在relaylog里.
- 从根据relaylog里面的sql语句按照顺序执行
- 主上有一个log dump线程,用来和从的I/O线程传递binlog
- 从上有两个线程,其中I/O线程用来同步主的binlog并升恒relaylog,另外一个sql线程来吧relaylog里面的sql语句按顺序执行
配置
前言
- 两台主机上的MySQL版本需要一致
- MySQL 都会有一个uuid,如果是复制或者同一个镜像的MySQL,uuid可能一致,需要修改
- uuid 写在 auto.cnf 文件,一般路径在
/var/lib/mysql/auto.cnf
,可以通过find / -name auto.cnf
查找
- uuid 写在 auto.cnf 文件,一般路径在
主库配置
- 编辑mysql配置文件,一般是在
/etc/mysql/my.cnf
, 可以通过ps -ef|grep mysql
查找MySQL服务信息log-bin=mysql-bin # 非必需 server-id=1 # 必需,与从库 id 不能一致
- 创建用于同步数据的账户
# 用户名repl , 从库ip 192.... 密码:123456 CREATE USER 'repl'@'192.168...' IDENTIFIED BY '123456'; GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192....'; FLUSH PRIVILEGES;
- 查看bin-log 是否开启
# 登录mysql mysql> show variables like 'log_bin%';
- 查看 master状态,结果参数后面从库需要用到
show master status;
从库配置
- 修改master 相关参数
# 登录mysql # 主库ip: 192... 用户: repl 密码:123456 都与主库上面创建的一致 change master to master_host='192....', master_user='repl', master_password='123456', master_log_file='mysql-bin.000001', master_log_pos=514;
- 启动/停止 slave 服务
# 登录MySQL start/stop slave;
- 查看从库状态
# 登录MySQL show slave status\G;
显示yes ,表示配置成功