前面说了主从复制的原理,现在我们搭建主从结构
1. 提前准备
我准备了两台主机,主节点是远程的centos7,从节点是本机windows
主从复制的原理在上一篇已经说了:主节点中mysql创建一个用户,专门提供给从节点去复制主节点的binlog文件,然后从节点的io线程将获取到的文件内容复制到自己的中继日志中,最后从节点的SQL线程读取中继日志,同步数据;
2. 配置linux主节点
(1)登录mysql,新建一个mysql账号:GRANT REPLICATION SLAVE ON *.* to 'java'@'%' identified by '123456'; //这个账号名是java,密码是123456,所有远程都可以通过这个账号和密码去读主节点mysql中的binlog
(2)修改my.cnf配置文件
linux使用yum安装的话,可以使用vim /etc/my.cnf打开mysql的配置文件:
#id唯一
server-id=1
#开启binlog,同时日志文件名为my_bin_log
log-bin=my_bin_log#主从复制需要同步到从节点的数据库
binlog-do-db=mydb
binlog_format=STATEMENT
binlog_format有三种:
statement表示每一条增删改的sql都会记录到bin_log中,如果sql包含函数now(),那么同步到从节点执行该sql会导致数据不一致;
row表示记录最终每一行数据的变化,同步到从节点中的数据肯定一致;
mixed表示混合模式,sql中有函数就使用row模式,没有函数就使用statement
(3)查询主节点的binlog文件名和position;
为什么要知道这个position呢?因为从节点就是从主节点的position这个位置开始同步的,主节点前面的其他操作都不会被同步,主从复制都搭建好了之后再创建数据库!!!
(4)重启主节点mysql服务: systemctl restart mysqld
3 配置windows从节点
(1)修改从节点的配置文件my.ini
#从节点配置
server-id=2
#从节点需要同步的库,需要和主节点对应
replicate-do-db=mydb#开启从节点中继日志
relay-log=mysql-relay
(2)重启从节点mysql服务:任务管理器->服务->mysql,右键,重新启动
(3)登录mysql,配置从节点连接主节点,使用我们在主节点配置的用户,还有binlog文件名以及数据库
#配置主节点的ip,用户名,密码,binlog文件名,position
change master to master_host='106.77.104.190',master_user='java',master_password='123456',master_log_file='my_bin_log.000001',master_log_pos=154;
(4)开启从节点主从复制功能:start slave;
(5)查看从节点mysql服务状态:show slave status\G;
4.测试
(1)主节点创建其他名字的数据库,从节点不会同步
(2)主节点创建mydb数据库,从节点会自动同步
(3)主节点在mydb库中创建表,从节点会同步
(4)主节点向mydb库中插入数据,从节点会同步
修改和删除表中的数据,从节点也是会同步的,就不截图了,有兴趣的自己去试试;