朋也的博客 » 首页 » 文章
作者:朋也
日期:2019-10-24
类别:java学习笔记
版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)
mysql自带的就有主从复制功能,原理是通过主节点的bin-log日志来实现的数据同步
master开启bin-log日志 -> slave开启同步日志 -> slave读取master的bin-log中的sql语句达到同步数据的功能
既然要做主从复制,就先要有两台服务器,并在每台服务器上安装好mysql服务,这里省略
我这里安装好的两台服务器的ip分别是 192.168.16.87
192.168.16.109
下面可能会用到,请根据自己的ip自行修改一些sql语句
master
修改mysql的配置文件
$ sudo vim /etc/mysql/mysql.cond.d/mysqld.conf
将如下两行注释去掉保存即可
server-id = 1
log_bin = /var/log/mysql/mysql-bin.log
重启mysql服务,登录mysql后运行
show variables like '%log_bin%';
可以看到bin-log的开启是否成功
链接文原: https://atjiu.github.io/2019/10/24/mysql-master-slave/
slave
然后配置从节点
同样的打开mysql的配置文件,添加下面三行配置
server-id = 2
relay-log = /var/log/mysql/relay-bin.log
relay-log-index = /var/log/mysql/relay-bin.index
其中 server-id
一定不能跟主节点的重复
重启服务
开启了bin-log,然后配置一个用户用于同步这些日志
这个用户配置在主节点上,因为从节点要连主节点读取日志信息,所以这个用户就需要主节点来提供
创建用户并赋予权限,用户名sync_db
> create user 'sync_db'@'%' identified by '123123';
> grant replication slave on *.* to 'sync_db'@'%' identified by '123123';
主节点有了用户,就可以在从节点开启同步功能了
登录mysql,运行下面命令开启同步功能
> change master to master_host = '192.168.16.87', master_port=3306, master_user='sync_db', master_password='123123', master_log_file='mysql-bin.000001', master_log_pos=0;
> start slave;
关闭同步
> stop slave;
查看同步开启状态
> show slave status;
如果看到下图中两个字段都是YES
了,就说明开启成功了
这时候在主节点上创建数据库,添加数据,创建表等操作都会被自动的同步到从节点上的mysql数据库中
主主复制就是将主从复制返过来,在上面配置的从节点中开启bin-log日志,然后在主节点同步从库的bin-log达到同步数据的目的
与主从复制的区别:主从复制中当从库数据有变动时,主库里数据不会变,主主复制不管哪一个库发生了变动,数据始终都会保持一致