CentOS7x64配置MYSQL5.7 Master Slave主从复制

前端之家收集整理的这篇文章主要介绍了CentOS7x64配置MYSQL5.7 Master Slave主从复制前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

@1首先修改MysqL配置文件 /etc/my.cnf

  1. #ID 必须唯一
  2. server-id=1
  3. #二进制文件名称前缀,生成文件MysqL-bin.000001,MysqL-bin.000002
  4. log-bin=MysqL-bin
  5. #记录目前有哪些MysqL-bin文件 SHOW MASTER STATUS;
  6. log-bin-index=master-bin.index
  7. #有更新是否立即同步到日志,性能会低,但不会丢数据。
  8. innodb_flush_log_at_trx_commit=1
  9. sync_binlog=1
  10. #二进制日志自动删除的天数。默认值为0,表示“没有自动删除
  11. expire_logs_days=10
  12. #二进制文件大小,操作大小生成文件存储(最小4096byte最大1073741824(1G)默认
  13. max_binlog_size=1073741824
  14. #同步哪些数据库
  15. binlog-do-db=template
  16.  
  17. ##下面配置不是必须的
  18. #数据库编码
  19. character-set-server=utf8
  20. #忽略表明大小写
  21. lower_case_table_names=1
  22. #开启慢查询日志,超过10秒则记录到日志
  23. slow_query_log=1
  24. long_query_time=10.000000
  25. #默认值:128M 专用MysqL服务器设置的大小: 操作系统内存的70%-80%最佳。
  26. #并不是设置的越大越好。设置的过大,会导致system的swap空间被占用,导致操作系统变慢,从而减低SQL查询的效率。
  27. innodb_buffer_pool_size=500M



@2在master上创建用户,用于slave连接登录

  1. MysqL> CREATE USER 'repl'@'192.168.80.%' IDENTIFIED BY 'MyPWD123!@#';
  2. MysqL> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.80.%';
repl用户必须具有REPLICATION SLAVE权限,除此之外没有必要添加不必要的权限,密码为MyPWD123!@#。
192.168.80.%,这个配置是指明repl用户所在服务器,这里%是通配符,表示192.168.80.0网段的Server都可以使用repl用户登陆主服务器,当然你也可以指定固定Ip。


@3在master上备份当前数据

  1. MysqLdump -u root -p --databases mytest --master-data > dbdump.db

--master-data 这个参数比较重要
1:首先在备份之前它会调用 FLUSH TABLES WITH READ LOCK 锁住数据库数据库就不能进行写操作了。
2:它会在备份文件最上面记录 CHANGE MASTER TO MASTER_LOG_FILE=' MysqL-bin.000002',MASTER_LOG_POS= 154,红色的可能与你测试的不一样。
它记录了master服务器二进制日志的文件名与位置,也就是当前数据截止的位置,这样当slave启动以后,就从这个点开始复制数据。
3:然后备份数据到文件
4:最后释放锁 UNLOCK TABLES;

MysqL > FLUSH TABLES WITH READ LOCK;
MysqL > SHOW MASTER STATUS;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| MysqL-bin.000003 | 73 | test | manual,MysqL |
+------------------+----------+--------------+------------------+
MysqL > UNLOCK TABLES;
上诉命令可以查看master当前日志的名称与位置,在启动slave时需要用到。


@4把数据备份拷贝到slave

scp /var/lib/MysqL/dbdump.db root@192.168.80.120:/home/MysqLdata/

================MASTER配置完成===================


@5配置slave /etc/my.cnf

  1. #唯一ID
  2. server-id=2
  3. #中继日志
  4. relay-log=slave-relay-bin
  5. relay-log-index=slave-relay-bin.index
  6. #二进制日志自动删除的天数。默认值为0,表示“没有自动删除
  7. expire_logs_days=10


@6在slave上恢复master当前的数据。

  1. MysqL -u root -p mytest < /home/MysqLdata/dbdump.db

后执行命令:
  1. CHANGE MASTER TO
  2. MASTER_HOST='192.168.80.111',MASTER_USER='repl',MASTER_PASSWORD='sql2008!@#',MASTER_LOG_FILE='MysqL-bin.000002',MASTER_LOG_POS=154;

MASTER_LOG_FILE='MysqL-bin.000002',MASTER_LOG_POS=154 注意这里一定不能写错了,

这个内容可以在dbdump.db的开头找到,记录着master备份时当前二进制文件的位置,slave在恢复数据后就从这个点开始复制数据。

开启slave同步

  1. MysqL> START SLAVE;

猜你在找的CentOS相关文章