首页 > 数据库技术 > 详细

mysql5.7.25主从同步图解(主:CentOS7.5,从win10)

时间:2019-03-14 15:06:50      阅读:160      评论:0      收藏:0      [点我收藏+]

环境说明:
  主服务器:CentOS7.5
  从服务器:Windows10(本地测试机)

1. 配置master(主服务器,CentOS7.5)

1.1 首先查看CentOS上面的MySQL是否启动

systemctl status mysqld

技术分享图片

1.2 修改MySQL配置文件

vi /etc/my.cnf

添加以下内容:

#服务器唯一id,默认是1(主从都必须不一样)
server-id=1000
#启动二进制日志名称为mysql-bin
log-bin=mysql-bin
#binlog-do-db与binlog-ignore-db互斥,设置其中一个即可
#binlog-do-db=需要同步的数据库名(多个数据库重复设置即可)
binlog-do-db=test01
#binlog-ignore-db=不需要同步的数据库01(多个数据库重复设置即可)
#binlog-ignore-db=不需要同步的数据库02(多个数据库重复设置即可)
#动清理30天之前的log文件(可自由指定时间)
expire_logs_days=30

技术分享图片

1.3 重新启动MySQL

systemctl restart mysqld

1.4 创建备份账号与测试log_bin是否成功开启

1.4.1 登录主数据库
mysql -uroot -p

技术分享图片

1.4.1 创建有复制权限的帐号

主机名可以是"%"、"192.168.0.%"、或者"192.168.1.106"这些格式,“%”为任意IP

mysql> grant replication slave on *.* to ‘用户名‘@‘主机‘ identified by ‘密码‘;

如果出现提示权限不足的情况,请按照以下方式操作

技术分享图片

修改MySQL密码规则

// 修改密码策略方式为不限制(重启后恢复为默认规则)
mysql> set global validate_password_policy=0;
// 修改密码长度为最少6位(重启后恢复为默认规则)
mysql> set global validate_password_length=6;

技术分享图片

重新设置密码(创建成功)

技术分享图片

1.4.2 #查看主库的状态
mysql> show master status;

技术分享图片

File是二进制日志文件名,Position 是日志开始的位置。后面从库会用到

1.4.3 #查看big-log日志是否开启成功
mysql> show variables like ‘%log_bin%‘;

技术分享图片

可以看到从 "/etc/my.cnf" 文件中添加的 log-bin=mysql-bin 日志已经启动
此时主库停止操作(为了保持主从数据库数据一致),等待从库连接后, 方可进行其他操作

2. 配置slaver(从服务器,Windows10)

2.1 关闭MySQL服务

使用管理员权限打开CMD,执行以下命令

// 关闭MySQL服务
net stop mysql57_01

技术分享图片

2.2 修改MySQL配置文件

进入到MySQL的安装目录,编辑 my.ini 文件

技术分享图片

在[mysqld]下添加以下内容(除了server_id必填,其他选填):

#从库配置
##服务器唯一id,默认是1(主从都必须不一样)
server_id=1001
##从机保存同步中继日志的位置
relay_log=slave-relay-bin
##当slave从库宕机后,假如relay-log损坏了,导致一部分中继日志没有处理,
##则自动放弃所有未执行的relay-log,并且重新从master上获取日志,这样就保证了relay-log的完整性
relay_log_recovery=1
##只读模式(普通用户)
read_only=1
##只读模式(超级管理员)
super_read_only=1

技术分享图片

完整my.ini 文件内容如下:

[mysqld]
# 设置3307端口
port = 3307
# 设置mysql的安装目录
basedir=D:/Program Files/mysql-5.7.25-winx64
# 设置mysql数据库的数据的存放目录
datadir=D:/Program Files/mysql-5.7.25-winx64/data
# 允许最大连接数
max_connections=200
# 服务端使用的字符集默认utf8
character-set-server=utf8
# 创建新表时使用的默认存储引擎
default-storage-engine=INNODB
# 设置sql语法模式
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

#从库配置
##服务器唯一id,默认是1(主从都必须不一样)
server_id=1001
##从机保存同步中继日志的位置
relay_log=slave-relay-bin
##当slave从库宕机后,假如relay-log损坏了,导致一部分中继日志没有处理,
##则自动放弃所有未执行的relay-log,并且重新从master上获取日志,这样就保证了relay-log的完整性
relay_log_recovery=1
##只读模式(普通用户)
read_only=1
##只读模式(超级管理员)
super_read_only=1

##启用gtid类型,否则就是普通的复制架构(需要和主服务器配合使用,本例未完善)
#gtid_mode=on
##强制gtid的一致性
#enforce_gtid_consistency=1
##当mysql启动或重启时,mysql在搜寻gtid时是如何迭代使用binlog文件的.
##这个选项设置为真,会提升mysql执行恢复的性能.因为这样mysql-server启动和binlog日志清理更快
#binlog_gtid_simple_recovery = 1

[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8

2.3 启动MySQL服务

使用管理员权限打开CMD,执行以下命令

// 启动MySQL服务
net start mysql57_01

技术分享图片

2.4 建立连接

2.4.1 登录mysql,关闭主从同步
// 登录mysql
mysql -u root -p -P3307
// 闭主从同步
mysql> stop slave;

技术分享图片

2.4.2 关联主库和从库(操作之时主库停止操作)
change master to 
    master_host=‘主库IP地址‘,
    master_port=主库端口,
    master_user=‘主库用户名‘,
    master_password=‘主库用户密码‘,
    master_log_file=‘要同步的文件名称‘,
    master_log_pos=要开始同步的位置;

技术分享图片

注意:
  "master_log_file"和主库状态中的【File】内容一致
  "master_log_pos"要主库状态中的【Position】内容一致
  具体请参照【1.4.2 #查看主库的状态】章节
  如果关联发生错误,请检查错误后重置slave,然后重新执行即可

// 关闭主从同步
mysql> stop slave;
// 重置主从同步信息
mysql> reset slave;

技术分享图片

2.4.3 开启主从同步
mysql> start slave;

技术分享图片

2.4.4 查看从服务器状态
mysql> show slave status \G;

技术分享图片
技术分享图片

3. 测试

3.1 主库原始信息

技术分享图片

test库(不同步)的数据信息

技术分享图片

test01库(同步)的数据信息

技术分享图片

3.2 从库原始信息

技术分享图片

test库(不同步)的数据信息

技术分享图片

test01库(同步)的数据信息

技术分享图片

3.3 主库修改信息

test库(不同步)新增一条信息

技术分享图片

test01库(同步)新增一条信息

技术分享图片

3.4 从库同步的信息

test库(不同步)的数据信息

技术分享图片

test01库(同步)的数据信息

技术分享图片

mysql5.7.25主从同步图解(主:CentOS7.5,从win10)

原文:https://blog.51cto.com/1197822/2362963

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!