mysql主从复制
# (1)创建用户
启动主MySQL服务器,登入主MySQL客户端,在主服务器上创建复制数据的账号并授权:
# 登录主mysql客户端
mysql> mysql -S /opt/software/mysql/3306/tmp/mysql_3306.sock -p
mysql> grant replication slave on *.* to 'slave'@'%' identified by 'mysql@123';
1
2
3
4
2
3
4
创建一个MySQL用户,该用户是主服务器专门给从服务器拷贝数据用的
注意:该语句可完成授权、创建用户、修改密码操作
# (2)重置主服务器状态
查看主服务器状态:
mysql> show master status; +------------------+----------+--------------+------------------+-------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set | +------------------+----------+--------------+------------------+-------------------+ | mysql-bin.000001 | 430 | | | | +------------------+----------+--------------+------------------+-------------------+ 1 row in set (0.00 sec)
1
2
3
4
5
6
7- 默认的mysql主服务器默认初始值:
- File:mysql-bin.000001
- Position:154
- 默认的mysql主服务器默认初始值:
如果主服务状态不是初始状态,需要重置状态:
reset master;
1
# (3)重置从服务器状态
查看从服务器状态
# 登录从mysql mysql -S /opt/software/mysql/3307/tmp/mysql_3307.sock -p # 查看从服务器状态 show slave status;
1
2
3
4- 初始状态:Empty set
如果从服务器不是初始状态,建议重置一下
stop slave; #停止复制,相当于终止从服务器上的IO和SQL线程 reset slave;
1
2设置从服务器的master,在从服务器客户端执行:
- master_host:主服务器ip
- master_port:主服务器端口
- master_user,master_password:2.4.1中创建的专门执行主从复制的用户名和密码
- master_log_file:2.4.2中查出的File值
- master_log_pos:2.4.2中查出的Position值,如果主服务器是初始值的话,就是154
change master to master_host='127.0.0.1',master_user='slave', master_port=3306,master_password='mysql@123', master_log_file='mysql-bin.000001',master_log_pos=154;
1
2
3在从机器上执行开始复制命令:
start slave;
1
# (4) 验证
在从服务器的客户端执行以下命令:
\G
:表示格式化输出
show slave status \G;
1显示结果: 注意:如果
Slave_IO_Running
和Slave_SQL_Running
均为 YES,则表示主从关系正常在主服务器上创建数据库、表、数据,然后在从服务器上查看是否已经复制
查看主从复制binlog日志文件内容: 在主服务器客户端执行:
show binlog events in 'mysql-bin.000001'\G;
1查看结果:
上次更新: 2022/03/27, 00:01:02