这里的配置指的是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;

如果报错如下:

mysql主从复制系统宕机后 mysql主从复制多久一次_MySQL


可以执行如下操作,删除之前的relay_log信息。然后重新执行change master to ...语句即可。

reset slave ; #删除slave数据库的relaylog日志文件,并重新启用新的relaylog文件

查看slave状态

show slave status

如果下面两个参数都是yes,则说明主从复制成功。

Slave_IO_Running:Yes
Slave_SQL_Running:Yes

mysql主从复制系统宕机后 mysql主从复制多久一次_mysql_02

停止从复制功能

stop slave

重新配置主从,需要在从机上执行:

stop slave;

reset master;#删除master中所有的binlog文件,并将日志索引文件清空,重新开始所有新的日志文件--慎用!!