这里的配置指的是MySQL的my.cnf文件[mysqld]下进行配置。环境是Centos7.9+MySQL8.0,可以参考博文Centos7下使用RPM包安装MySQL8 。
如果是在虚拟机上操作并且是克隆方式生成的虚拟机(包含MySQL Server),则克隆的虚拟机MySQL Server的UUID相同,这是需要修改的。
vim /var/lib/mysql/auto.cnf systemctl restart mysqld
【1】 主MySQL配置
建议MySQL版本一致且后台以服务运行,主从所有配置项都配置在[mysqld]节点下,且都是小写字母。
① 必选
主服务器唯一ID
# 主服务器唯一ID server-id=1 #启用二进制日志,指明路径 log-bin=自己本地路径/mysqlbin log-bin=mysqlbin
② 可选
# 0 默认 表示读写,1 表示只读 read-only=0 #设置日志文件保留的时长 单位是秒 binlog_expire_logs_seconds=6000000 # 控制单个二进制日志大小,此参数的最大和默认值是1GB max_binlog_size=200M # 设置不要复制的数据库 binlog-ignore-db=test # 设置需要复制的数据库,如果不设置,则默认同步除忽略的之外的数据库 binlog-do-db=需要复制的主数据库名字 #设置binlog格式 binlog_format=STATEMENT # --------其他亦可自行配置,比如数据目录-------- #错误日志 log-err=自己本地路径/mysqlerr #根目录 basedir="自己本地路径" # 临时目录 tmpdir="自己本地路径" # 数据目录 datadir="自己本地路径/Data/"
重启后台MySQL服务,使配置生效。需要注意的是,建议先搭建主从配置,再创建数据库。MySQL主从复制起始时,从机不继承主机数据。
【2】从服务器配置
主要是从服务器唯一ID与二进制日志文件配置。
#[必选] server-id=2 #[可选]如果默认已经配置,无需更改 log-bin=mysqlbin #[可选] 启用中继日志 relay-log=mysql-relay
修改完配置需要重启MySQL服务。
【3】开启复制
① 主MySQL上建立账户并授权
在master上建立账户并授权给slave。
grant replication slave on *.* to 'slave1'@'从机数据库IP' identified by '123456'; # 5.5 ,5.7 flush privileges;
如果使用的MySQL8.0,需要如下的方式建立账户并授权salve。
#创建用户 create user 'slave1'@'%' identified by '123456'; #授予复制权限 grant replication slave on *.* to 'slave1'@'%'; #重置密码哦,必须执行 alter user 'slave1'@'%' identified with mysql_native_password by '123456'; #刷新权限 flush privileges;
查询master状态,并记录下file和position的值
show master status mysql> show master status; +-----------------+----------+--------------+------------------+-------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set | +-----------------+----------+--------------+------------------+-------------------+ | mysqlbin.000001 | 1164 | | | | +-----------------+----------+--------------+------------------+-------------------+ 1 row in set (0.00 sec)
到这里暂时不要操作master,防止状态值变化,接下来设置slave。
② 从机配置需要复制的主机
从机上复制主机的命令:
change master to master_host='主机IP', master_user='主机用户名', master_password='主机用户密码', master_log_file='mysqlbin.具体数字', master_log_pos=position数字;
举例:
change master to master_host='192.168.255.128',master_user='slave1',master_password='123456', master_log_file='mysqlbin.000001',master_log_pos=1164;
启动slave同步
start slave;
如果报错如下:
可以执行如下操作,删除之前的relay_log信息。然后重新执行change master to ...
语句即可。
如果报错如下: 在这里插入图片描述 可以执行如下操作,删除之前的relay_log信息。然后重新执行change master to ...语句即可。 reset sla
查看slave状态
show slave status
如果下面两个参数都是yes,则说明主从复制成功。
Slave_IO_Running:Yes Slave_SQL_Running:Yes
停止从复制功能
stop slave
重新配置主从,需要在从机上执行:
stop slave; reset master;#删除master中所有的binlog文件,并将日志索引文件清空,重新开始所有新的日志文件--慎用!!