1.原理
1. 数据库有个bin-log二进制文件,记录了所有sql语句。
2. 我们的目标就是把主数据库的bin-log文件的sql语句复制过来。
3. 让其在从数据的relay-log重做日志文件中再执行一次这些sql语句即可。
master开启bin-log功能,日志文件用于记录数据库的读写增删
需要开启3个线程,master IO线程,slave开启 IO线程 SQL线程,
Slave 通过IO线程连接master,并且请求某个bin-log,position之后的内容。
MASTER服务器收到slave IO线程发来的日志请求信息,io线程去将bin-log内容,
position返回给slave IO线程。
slave服务器收到bin-log日志内容,将bin-log日志内容写入relay-log中继日志,创建一个
master.info的文件,该文件记录了master ip 用户名 密码 master bin-log名称,bin-log position。
slave端开启SQL线程,实时监控relay-log日志内容是否有更新,解析文件中的SQL语句,
在slave数据库中去执行。
2.环境介绍
192.168.110.208 主
192.168.110.129 从
centos7 mysql5.7
mysql5.7安装参考
https://blog.csdn.net/weixin_37714489/article/details/90672967
https://blog.csdn.net/weixin_37714489/article/details/86220616
3.主服务器配置
1. 在/etc/my.cnf文件中新增内容
vim /etc/my.cnf 新增一下内容
server-id=208 ###服务器ip
log-bin=mysql-bin ###开始日志文件
2.重启mysql服务
service mysqld restart
3.验证是否配置成功
查询配置的server_id
show variables like '%server_id%';
查询主的二进制文件
show master status;
4.从服务器配置
1. 在/etc/my.cnf文件中新增内容
vim /etc/my.cnf 新增一下内容
server-id=129 ###服务器ip
log-bin=mysql-bin ###开始日志文件
binlog_do_db=test ###同步数据库
2.重启mysql服务
service mysqld restart
3.验证是否配置成功
查询配置的server_id
show variables like '%server_id%';
查询主的二进制文件
show master status;
**4.从服务器同步主服务器c
change master to master_host='192.168.110.208',master_user='root',
master_password='root',master_log_file='mysql-bin.000009',master_log_pos=120;
5.开启从节点
start slave
6.查看从服务器复制功能状态
show slave status
5.测试是否成功
在主mysql中创建一个test的数据库,然后去从库中查看是否存在test数据库,则表示成功。