1、主从复制的基本原理:
- slave 会从master 读取binlog来进行数据同步
2、MySQL主从复制的原理图及复制过程:
只要主机对应了Data changes ,会把这个行为写进 Binary log 里面,右边有一个 IO thread, slaver 会照着这个日志操作,执行主机做的事情。主机做什么,slaver 就读什么,回传,然后写到中继日志里面,然后启动一个 sql thread 线程进行复制。总结起来,一共分为三步:
- master 将本机数据库操作记录记录到二进制日志( binary log )中,这些记录过程叫做二进制日志事件 binary log events
- slave 将 master 的 binary log events 拷贝到它的中继日志( relay log )
- slave 重做中继日志中的事件,将master 的数据库操作记录应用到自己的数据库中, MYSQL 复制是异步且串行化的。
3、主从复制的基本原则
- 每个salve只有一个master
- 每个slave只能有一个唯一的服务器ID
- 每个master可以有多个slave
- 保证主从机的MySQL版本一致且后台以服务运行
- 主从都配置在[mydqld]节点下,都是小写
4、主从复制的具体配置
1)window环境下master主机配置my.ini
- [必配]主服务器唯一ID:server-id=1
- [必配]启用二进制日志:log-bin=MySQL的安装路径/mysqlbin
- 启用错误日志:log-err=MySQL的安装路径/mysqlerr
- 配置根目录:basedir=MySQL的安装路径/
- 临时目录:tmpdir=MySQL的安装路径/
- 数据目录:datadir=MySQL的安装路径/data/
- 主机读写都可以:read-only=0
- 设置不要复制的数据库:binlog-ignore-db=数据库名字
- 设置需要复制的数据库:binlog-do-db=需要复制数据库名字
2)Linux环境下slave从机配置my.cnf
- [必须]从机slave服务器唯一ID: server-id=2
- 启用二进制日志:log-bin=mysql-bin
3)重启主机和从机的mysql服务,并关闭主机和从机的防火墙
4)在主机上建立账户并授权slave
- GRANT REPLICATION SLAVE ON *.* TO ’zhangsan’@’ 从机器数据库IP’IDENTIFIED BY ‘123456’;
//授权复制给从机,允许从机以ZHANGSAN这个用户名,123456的密码登陆
- 执行flush privileges;命令 //为了确保万无一失,最好刷新一下这个界面
- show master status;//查看主机的状态并记录下 File 和 Postition 的值
- 执行完此步骤后不要再操作主服务器 MYSQL,防止主服务器状态值变化
5)在 Linux 从机上配置需要复制的主机
- CHANGE MASTER TO MASTER_HOST=’192.168.14.165’,
MASTER_USER=’zhangsan’,
MASTER_PASSWORD=’123456’,
MASTER_LOG_FILE=’mysqlbin.000035’,MASTER_LOG_POS=341;
- 启动从服务器复制功能:start slave;
- 查看从机装态:show slave status\G
Slave_IO_Running:Yes
Slave_SQL_Running:Yes ,这两个参数都为yes,则主从配置成功,否则一定失败。
6)主机执行建库、建表操作,从机实现复制功能
7)停止主从复制功能:stop slave;//关闭从机