数据库同步原理
首先要明确读写分离数据库能同步的原理:Mysql数据库自带的二进制日志功能,首先主库会将改变记录到二进制日志,然后从库将主库的binary lowg拷贝到中继日志(relay log)再解析,基于日志并应用到自身最终实现数据一致
同步数据库的连接
首先是数据库的连接,我是在Linux上进行的,准备了两台服务器,并且数据库中的表数据都是一致的(一致很重要,避免读写出现错误)。可通过下面指令查看ip
ip addr
主库配置
第一步:进入数据库配置文件/etc/my.cnf ,将以下代码复制上去
其中server-id 的数字是随便设定的,但一定要设定,最好是按顺序
第二步:重启Mysql服务
systemctl restart mysqld
第三步:登陆数据库进行以下SQL
GRANT REPLICATION SLAVE ON *.* to 'xiaoming'@'%' identified by 'Root@123456';
注:上面SQL的作用是创建一个用户xiaoming,密码为Root@123456,并且给xiaoming用户授予REPLICATION SLAVE权限。常用于建立复制时所需要用到的用户权限,也就是slave必须被master授权具有该权限的用户,才能通过该用户复制。(Mysql8.0后要先创建才能授权)
第四步:登陆数据库,执行以下SQL
show master status;
查看Master状态,其中Position是对应的位置,会随着每次操作而变化,因此执行完后就不要再操作
从库配置
第一步:配置server-id (不重复)
第二步:重启Mysql服务
systemctl restart mysqld
第三步:登陆数据库,执行以下SQL
change master to master_host='192.168.138.100', master_user=' xiaoming', master_password=' Root@123456' , master_1og_file=' mysql-bin.000001', master_log_pos=439;
其中master_1og_file和master_log_pos要对应先前主库的信息
启动从库
start slave;
第四步:登陆数据库执行以下SQL
show slave status;
将结果可以复制到NotePad++里方便查看,重点关注
Slave_IO_Running 和Slave_SQL_Running都显示为Yes
到此就配置成功