MySQL的主从复制主要是基于binlog日志实现的,binlog日志(二进制日志)主要负责记录DDL,DML语句。
主要过程(见下图)如下:
主从复制过程
1:修改配置文件 /etc/my.cnf。
vim /etc/my.cnf
#mysql 服务ID,保证整个集群环境中唯一,取值范围:1 – 232-1,默认为1 server-id=1 #是否只读,1 代表只读, 0 代表读写 read-only=0 #忽略的数据, 指不需要同步的数据库 #binlog-ignore-db=mysql #指定同步的数据库 #binlog-do-db=db01
2: 重启MySQL服务器。
systemctl restart mysqld
3:登录mysql,创建远程连接的账号,并授予主从复制权限。
CREATE USER 你的用户名 IDENTIFIED WITH mysql_native_password BY 密码
分配权限 :
GRANT REPLICATION SLAVE ON *.* TO 创建的用户名
1:修改配置文件 /etc/my.cnf。
vim /etc/my.cnf
#mysql 服务ID,保证整个集群环境中唯一,取值范围:1 – 2^32-1,和主库不一样即可 server-id=2 #是否只读,1 代表只读, 0 代表读写 read-only=1
2: 重新启动MySQL服务 。
systemctl restart mysqld
3:登录mysql,设置主库配置。
CHANGE REPLICATION SOURCE TO SOURCE_HOST='主数据库地址', SOURCE_USER='用户名', SOURCE_PASSWORD='密码', SOURCE_LOG_FILE='主数据库中所要同步的binlog日志文件', SOURCE_LOG_POS=binlog文件的位置;
4:开启同步操作。
start replica ;
5:查看主从同步状。
show replica status ;
1:在主库上创建表和执行相应的insert,update等相应语句。
2:在从库中查询数据,查看是否同步。
顾名思义,主从延迟指的是,在复制数据的过程中,主从节点间存在数据更新的延迟。导致这个问题,可能会是网络的延迟,当然也有可能是服务硬件资源占用过多所造成的,再者就是从节点的复制线程不够,当线程不够时,数据回放就会慢。
常用思路: