当前位置:Gxlcms > 数据库问题 > mysql5.7.25主从同步图解(主:CentOS7.5,从win10)

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

时间:2021-07-01 10:21:17 帮助过:17人阅读

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

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

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

  1. <code>systemctl status mysqld</code>

技术图片

1.2 修改MySQL配置文件

  1. <code>vi /etc/my.cnf</code>

添加以下内容:

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

技术图片

1.3 重新启动MySQL

  1. <code>systemctl restart mysqld</code>

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

1.4.1 登录主数据库
  1. <code>mysql -uroot -p</code>

技术图片

1.4.1 创建有复制权限的帐号

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

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

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

技术图片

修改MySQL密码规则

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

技术图片

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

技术图片

1.4.2 #查看主库的状态
  1. <code>mysql> show master status;</code>

技术图片

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

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

技术图片

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

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

2.1 关闭MySQL服务

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

  1. <code>// 关闭MySQL服务
  2. net stop mysql57_01</code>

技术图片

2.2 修改MySQL配置文件

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

技术图片

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

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

技术图片

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

  1. <code>[mysqld]
  2. # 设置3307端口
  3. port = 3307
  4. # 设置mysql的安装目录
  5. basedir=D:/Program Files/mysql-5.7.25-winx64
  6. # 设置mysql数据库的数据的存放目录
  7. datadir=D:/Program Files/mysql-5.7.25-winx64/data
  8. # 允许最大连接数
  9. max_connections=200
  10. # 服务端使用的字符集默认utf8
  11. character-set-server=utf8
  12. # 创建新表时使用的默认存储引擎
  13. default-storage-engine=INNODB
  14. # 设置sql语法模式
  15. sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
  16. #从库配置
  17. ##服务器唯一id,默认是1(主从都必须不一样)
  18. server_id=1001
  19. ##从机保存同步中继日志的位置
  20. relay_log=slave-relay-bin
  21. ##当slave从库宕机后,假如relay-log损坏了,导致一部分中继日志没有处理,
  22. ##则自动放弃所有未执行的relay-log,并且重新从master上获取日志,这样就保证了relay-log的完整性
  23. relay_log_recovery=1
  24. ##只读模式(普通用户)
  25. read_only=1
  26. ##只读模式(超级管理员)
  27. super_read_only=1
  28. ##启用gtid类型,否则就是普通的复制架构(需要和主服务器配合使用,本例未完善)
  29. #gtid_mode=on
  30. ##强制gtid的一致性
  31. #enforce_gtid_consistency=1
  32. ##当mysql启动或重启时,mysql在搜寻gtid时是如何迭代使用binlog文件的.
  33. ##这个选项设置为真,会提升mysql执行恢复的性能.因为这样mysql-server启动和binlog日志清理更快
  34. #binlog_gtid_simple_recovery = 1
  35. [mysql]
  36. # 设置mysql客户端默认字符集
  37. default-character-set=utf8</code>

2.3 启动MySQL服务

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

  1. <code>// 启动MySQL服务
  2. net start mysql57_01</code>

技术图片

2.4 建立连接

2.4.1 登录mysql,关闭主从同步
  1. <code>// 登录mysql
  2. mysql -u root -p -P3307
  3. // 闭主从同步
  4. mysql> stop slave;</code>

技术图片

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

技术图片

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

  1. <code>// 关闭主从同步
  2. mysql> stop slave;
  3. // 重置主从同步信息
  4. mysql> reset slave;</code>

技术图片

2.4.3 开启主从同步
  1. <code>mysql> start slave;</code>

技术图片

2.4.4 查看从服务器状态
  1. <code>mysql> show slave status \G;</code>

技术图片
技术图片

当出现Slave_IO_Running: Connecting的提示时,说明主库和从库没有连接上,一般有三点原因:
1.网络问题:检查网络连接是否能够连接上
2.密码或POS号错误:查看pos号和主库的号是否对应
3.防火墙的问题:查看主库防火墙的策略,数据库是否拒绝外来连接

3. 测试

3.1 主库原始信息

技术图片

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

技术图片

test01库(同步)的数据信息

技术图片

3.2 从库原始信息

技术图片

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

技术图片

test01库(同步)的数据信息

技术图片

3.3 主库修改信息

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

技术图片

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

技术图片

3.4 从库同步的信息

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

技术图片

test01库(同步)的数据信息

技术图片

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

标签:nlog   bee   ddb   binlog   -o   策略   pos   完整   term   

人气教程排行