主从复制
复制基本原理
image.png
复制的三步骤
- master将改变记录到二进制日志。这些记录过程叫做二进制日志事件,binary log events
- slave将master的binary log events拷贝到它的中继日志中
- slave重做中继日志中的事件,将改变应用到自己的数据库中。MySQL复制是异步且串行的。
复制的基本原则
- 每个slave只有一个master
- 每个slave只能有一个唯一的服务器ID
- 每个master可以有多个slave
一主一从常见配置
- MySQL版本一致且后台服务可以运行
- 主从主机可以相互通信
- 主从配置都在[mysqld]结点下,都是小写
主机配置文件 my.ini
server-id = 1 # [必须]主服务器唯一ID
log-bin = 自己本地的路径/mysqlbin # [必须]启用二进制日志
log-err = 自己本地的路径/mysqlerr # [可选] 启用错误日志
从机配置文件-mysqld.cnf /etc/mysql/mysql.conf.d/mysqld.cnf
server-id = 2 # [必须]主服务器唯一ID
log-bin = 自己本地的路径/mysqlbin # [可选]启用二进制日志
修改过配置文件之后,要重启MySQL服务
service mysql restart
主从都关闭防火墙
service iptables stop
在Windows主机上建立账户并授权slave
grant replication slave on *.* to 'zhangsan'@'从机数据库IP' identified by '123456';
show master status;
记录下File和position的值
配置Linux从机
change master to master_host = '192.168.0.161',
master_user = 'juran',
master_password = '123',
master_log_file = 'mysql-bin.000002',
master_log_pos= 908;
测试是否配置成功
start slave; 启动从服务器复制功能
show slave status\G
下面两个参数都是yes,则说明主从配置成功
slave_io_running:yes
slave_sql_running:yes