转https://zhuanlan.zhihu.com/p/50597960
主从复制概念:数据可以从主数据库复制到从数据库种,默认采用异步复制方式。
原理:
1、当主数据库发生更新操作时(删除、更新和插入),会将更新的操作写入到二进制日志。
2、从库的IO线程会实时监控主库的二进制日志文件,查看是否发生变化。
如果发生变化则读取变化的日志消息写入到中继日志。
3、从数据库会通过sql线程监控中继日志,将新增的日志文件,通过sql语句实现数据库的更新从中。
主从复制的用途:
1、读写分离
2、故障迁移 -- 如果主库宕机了,则会主动访问从库
——————————————————————————————————————————————
配置主从复制:
1、开启二进制日志(主从的二进制文件默认是关闭的)
vim /etc/my.cnf
添加以下内容:
log-bin=mysql
server-id=1
然后启动MySQL服务:systemctl start mysql.service (因为配置文件改了所以要执行该命令)( 默认该文件存放于 data文件夹下)
注意:配了挺久,一直报错:
解决:按照我上述的指令来
2、配置从数据库
安装完从数据库后,需要手动更改/etc/my.conf文件
添加以下内容:
log-bin=mysql
server-id=2
注意:之后从库的配置文件与主库配置一样,除了mysql-id
3、实现主从配置
原理:由于需要实现主从同步,从库需要了解主库的位置。该位置可能根据不同的机器位置不同
主库告知从库同步的起始位置。当主库的信息改变,则位置也会新增。
1)查询主库状态
2)配置从库
change master to master_host='47.104.236.248',master_port=3306,
master_user='root',master_password='root',
master_log_file='mysql-bin.000001',master_log_pos=120
启动从服务 start slave
查看从服务 show slave status
上述两个状态即为yes,说明此时主从复制已经建立完成
扩展:二进制日志和中继日志 http://blog.itpub.net/31383567/viewspace-2140060/