性能更好的新服务器申请下来了,我们决定在2台新服务器上使用mysql5.7,并且使用主从同步、读写分离架构,很不幸这个任务落到了我的头上。读写分离是在业务代码中实现的,在此不做详述,介绍一下我搭建MySQL主从的过程。

 

环境介绍:

Master 10.20.66.150

Slave    10.20.66.151

端口都是3306

 

一.修改主库的配置 vi /etc/my.cnf

  1. [client]
  2. default-character-set=utf8mb4
  3.  
  4. [mysql]
  5. default-character-set=utf8mb4

  6. [mysqld]
  7. datadir=/var/lib/mysql
  8. socket=/var/lib/mysql/mysql.sock
  9. symbolic-links=0
  10. log-error=/var/log/mysqld.log
  11. pid-file=/var/run/mysqld/mysqld.pid
  12.  
  13. init_connect='SET collation_connection = utf8mb4_unicode_ci'
  14. init_connect='SET NAMES utf8mb4'
  15. character-set-server=utf8mb4
  16. collation-server=utf8mb4_unicode_ci
  17. skip-character-set-client-handshake
  18.  
  19. server-id=2
  20. log-bin=log
  21. binlog-ignore-db=mysql
  22. binlog-ignore-db=information_schema
  23. binlog-ignore-db=performance_schema
  24. binlog-ignore-db=sys

需要注意的点:

1.为了兼容emoji等特殊字节符,配置中使用utf8mb4编码

2.与主从相关的配置在整个配置的最下边,主库和从库的server-id必须不同

3.binlog-ignore-db设置不需要同步的库

 

二.创建用于中从同步的账户

1.登录MySQL    mysql -uroot -p

2.create user ‘sync’@’%’ identified by ‘Sync!0000’;    (5.7要求密码必须含有大小写英文,符号和数字)

3.grant FILe on *.* to ‘sync’@’10.20.66.151’ identified by ‘Sync!0000’;   (赋予FILE权限,允许从从库ip访问主库)

4.grant replication slave on *.* to ‘sync’@’10.20.66.151’ identified by ‘Sync!0000’;   (赋予中从同步权限)

5.flush privileges;

6.重启mysql

 

三.查看主库状态,记录必要信息

1.登录MySQL

2.show master status; 记录File和Position对应的信息,我这里是log.000006和151

 

四.修改从库配置

 

  1. [client]
  2. default-character-set=utf8mb4
  3.  
  4. [mysql]
  5. default-character-set=utf8mb4
  6.  
  7. [mysqld]
  8. datadir=/var/lib/mysql
  9. socket=/var/lib/mysql/mysql.sock
  10.  
  11. symbolic-links=0
  12.  
  13. log-error=/var/log/mysqld.log
  14. pid-file=/var/run/mysqld/mysqld.pid
  15.  
  16. init_connect='SET collation_connection = utf8mb4_unicode_ci'
  17. init_connect='SET NAMES utf8mb4'
  18. character-set-server=utf8mb4
  19. collation-server=utf8mb4_unicode_ci
  20. skip-character-set-client-handshake
  21.  
  22. server-id=3
  23. log-bin=mysql-bin
  24. replicate-ignore-db=mysql
  25. replicate-ignore-db=information_schema
  26. replicate-ignore-db=performance_schema
  27. replicate-ignore-db=sys
  28. log-slave-updates
  29. slave-skip-errors=all
  30. slave-net-timeout=60

 

注意事项和主库配置相同,使用replicate-ignore-db标记出不需要同步的库

 

五.配置同步账号

1.systemctl restart mysql    (重启MySQL),然后进入MySQL

2.stop slave;

3.change master to master_host=’10.20.66.150′, master_user=’sync’,master_password=’Sync!0000′,master_file_log=’log.000006′,master_log_pos=’151′; (最关键的一步,将主库ip,同步账号的用户密码,show master status得到的file、position写入)

4.start slave;

 

如果顺利的话,到目前为止主从同步已经搭建完成,在从库中使用show slave status \G;查看同步状态

看到以上结果说明生效了,大家可以在主库上插入数据测试一下主从同步是否生效了~

 

希望对大家有所帮助,祝大家每天开心~

版权声明:本文为baiyb原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/baiyb/p/9306632.html