Slave 会从 Master 读取 binlog 来进行数据同步
复制的基本原则
新克隆的主机要修改如下信息:
show slave status \G
[mysqld]
主服务器唯一 ID 必须
server-id=xx
#启用binlog,指明路径,比如: /log/mysqlbin 如不指定,则是数据库主目录下 必须
log-bin=xxxx-bin0:默认,表示读写(主机) 1:表示只读(从机) 可选
read-only=0
设置日志文件保留的时长,单位是秒 可选
binlog_expire_logs_seconds=xxxxxx
控制单个binlog大小,此参数的最大和默认值 1GB 可选
max_binlog_size=200M
设置不要复制的数据库 可选
binlog-ignore-db= 数据库名
设置需要复制的数据库,默认全部记录 可选
binlog-do-db=需要复制的主数据库名字
设置binlog格式 可选
binlog_format=STATEMENT
保存 my.ini 或 my.cnf
重启后台mysql 服务,使配置生效
查看主机的状态
show master status;
注意
my.ini 或 my.cnf
[mysqld]从机服务器唯一 ID 必须
启用中继日志 可选
relay-log=mysql-relay
重启mysql 服务
查看从机的状态
show slave status;
在主机mysql里执行授权主从复制的命令
#mysql 5.7
grant replication slave on . to ‘从机用户’@‘从机器数据库IP’ identified by ‘密码’;mysql 8.0 取消 grant 授权同时创建用户了
create user ‘从机用户’@‘从机器数据库IP’ IDENTIFIED WITH mysql_native_password BY ‘password’;
grant replication slave on . to ‘从机用户’@‘从机器数据库IP’ ;
flush privileges;
在从机的mysql中执行
change master to
master_host=‘主机的IP地址’,
master_user=‘主机用户名’,
master_password=‘主机用户名的密码’,
master_log_file=‘xxx-bin.具体数字’,
master_log_pos=具体值;
master_delay=具体数值;# 可以指定这个备库、从库持续跟主库有N秒的延迟。
在从库要 执行 stop slave ,就停止从库从主库获取binlog日志了。