mysql主从复制
数据库主从复制的概述和原理这里就不做描述了,这里最重要的就是一个binlog日志,有兴趣的可以去了解,以下着重讲解如何搭建:
1、准备工作
准备两台服务器环境,安装好mysql服务
192.168.80.131 主库
192.168.80.132 从库
开放两台服务器的3306端口(或者关闭防火墙服务)
查看机器中mysql服务的状态:systemctl status mysqld
2、主库的配置
修改my.cnf配置文件 ,在linux环境中 位置在 /etc/my.cnf,在windows环境中位置在安装目录下
#mysql的服务id,要保证在整个集群中唯一,取值范围在 1 ~ 2^32-1,默认为1 server-id=1 #配置是否只读,1为只读,0代表可读可写 read-only=0 #指定不需要同步的数据库 #binlog-ignor-db=mysql #指定同步的数据库 #binlog-do-db=db01 重启mysql服务 systemctl restart mysqld
登录mysql,创建一个远程连接的账号,并赋以主从复制的权限(用于从库去连接主库)
#创建一个用户chencan,%代表允许该用户在任意主机上来访问当前服务器,密码是Abcd1234@ create user 'chencan'@'%' identified with mysql_native_password BY 'Abcd1234@' #赋予chencan用户主从复制的权限 grant replication slave on *.* to 'chencan'@‘%’
#查看二进制日志坐标
show master status file -> 代表binlog日志写到了哪个文件中 position -> 日志写到了日志文件的哪个位置
3、从库的配置
修改从库的配置文件
#mysql的服务id,要保证在整个集群中唯一,取值范围在 1 ~ 2^32-1,默认为1(注意不能和主库一样) server-id=1 #配置是否只读,1为只读(对普通用户,超级管理员还是可读可写的),0代表可读可写 read-only=1 #设置超级管理员是否只读,1为只读,0代表可读可写 super-read-only=1
#重启mysql服务 systemctl restart mysqld
登录mysql,设置主库的配置
#mysql8.0.23以及之后版本的语法 CHANGE REPLICATION SOURCE TO SOURCE_HOST='192.168.80.131',SOURCE_USER='chencan',SOURCE_PASSWORD=‘Abcd1234@’, SOURCE_LOG_FILE='xxx',SOURCE_LOG_POS=xxx; #mysql8.0.23以前的语法 CHANGE MASTER TO MASTER_HOST='192.168.80.131',MASTER_USER='chencan',MASTER_PASSWORD=‘Abcd1234@’, MASTER_LOG_FILE='xxx',MASTER_LOG_POS=xxx;
8.0.23以及之后的参数名 | 含义 | 8.0.23之前的参数名 |
SOURCE_HOST | 主库的ip地址 | MASTER_HOST |
SOURCE_USER | 连接主库的用户名 | MASTER_USER |
SOURCE_PASSWORD | 连接主库的密码 | MASTER_PASSWORD |
SOURCE_LOG_FILE | 主库中binlog日志文件名 | MASTER_LOG_FILE |
SOURCE_LOG_POS | 主库中binlog日志文件的开始位置 | MASTER_LOG_POS |
开启同步操作
start replica; 8.0.23之后 start slave; 8.0.23之前
查看主从同步状态
show replica status\G; 8.0.23之后 show slave status\G; 8.0.23之前
如果:
Replica_Io_Running: YES
Replica_Sql_Running:Yes
则主从同步开启成功