Mysql5.7主从复制

环境

Linux:CentOS7
Mysql:5.7
服务器:腾讯云

安装

见:https://blog.csdn.net/haxyek/article/details/85273553
安装后可能需要的初始化命令:

mysqld --initialize-insecure --user=mysql --explicit_defaults_for_timestamp

主从复制原理

主从复制原理
从服务器读取主服务器的binlog,进行数据复制。

主从复制实践

主服务器配置:

第一步:修改my.cnf文件

[mysqld]段增加

1
2
3
4
#启动而进制日志
log-bin=mysql-bin
#服务器唯一ID,一般取IP最后一段
server-id=83

第二步:重启mysql服务

1
systemctl restart mysqld

第三步:主机给从机授权备份权限

登录到主机的mysql

1
myysql> GRANT REPLication slave on *.* to '从机用户名'@'从机ip地址' identified by '从机密码';

示例

1
myysql> GRANT REPLication slave on *.* to 'slave'@'172.32.1.16' identified by 'slave_password';

第四步:刷新权限

1
mysql>flush privileges;

第五步:查询master的状态

1
2
3
4
5
6
mysql>show master status;
+------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000002 | 601 | | | |
+------------------+----------+--------------+------------------+-------------------+

从服务器配置

第一步:修改my.cnf文件

1
2
[mysqld]
server-id=16

第二步:重启并登录到mysql进行配置从服务器配置

1
2
3
4
5
6
7
mysql> change master to 
master_host = '172.32.1.83',
master_port=3306,
master_user='slave',
master_password='slave_password',
master_log_file='mysql-bin.000002',
master_log_pos=601

注意:
master_port:mysql服务端口号,
master_user:为执行同步数据库账户
master_log_file:为主机show master status看到的File的值
master_log_pos:为主机show master status看到的position的值,不带引号
如果是想延迟同步可以使用master_delay = 1800 ,延迟1800秒

第三步:检查从服务器的复制功能

1
mysql> start slave;

第四步:检查从服务器复制功能状态:

1
2
3
4
5
mysql>show slave status \G;
………………………(省略若干)………………………
Slave_IO_Running: Yes # 此处应为YES
Slave_SQL_Running: Yes # 此处应为YES
………………………(省略若干)………………………

测试

以上步骤完成后,往主机中插入数据,看看从机中是否有数据。