MySQL主从复制中, 主机(master)对外工作, 而从机(Slave)对内进行备份.
- 配置:在配置文件[mysqld]段下添加:
# 启用二进制日志
log-bin=mysql-bin
# 服务器唯一ID, 一般取IP最后一段
server-id = 133
- 登录客户端, 给从机授备份权限:
grant replication slave on . to '从机MySQL用户名'@'从机IP' identified by '从机MySQL密码';
- 从服务器配置, 修改my.conf文件,[mysqld]server-id=135在从机上执行:
change master to master_host = '192.168.10.135', master_port= 3306, master_user='', master_password='', mysql_log_file='', master_log_pos=123(此值为从binlog的哪个位置开始复制)
mysql复制的优点:
- 如果主库出现问题,可以快速切换到从库提供服务
- 可以在从库执行查询操作(更新不频繁的数据),降低主库的访问压力
- 可以在从库进行备份,以免备份期间影响主库的服务
主从复制原理:
- mysql在提交时会把变更存在binlog日志中;
- mysql推送二进制文件binlog到从库relay log,从库根据relay log做数据变更
共3个线程: Binlog dump线程(主库), I/O线程和SQL线程(从库)
- 当启动复制(start slave)时, 创建I/O线程连接主库
- 主库创建Binlog dump线程读取事件发送到I/O线程
- I/O线程读取到数据放入从机的relay log中
- 之后从机的SQL线程读取中继日志更新数据库