概念
主从复制可以使MySQL数据库主服务器的主数据库,复制到一个或多个MySQL从服务器从数据库,默认情况下,复制异步; 根据配置,可以复制数据库中的所有数据库,选定的数据库或甚至选定的表。
MySQL中主从复制的优点
- 横向扩展解决方案
在多个从库之间扩展负载以提高性能。在这种环境中,所有写入和更新在主库上进行。但是,读取可能发生在一个或多个从库上。该模型可以提高写入的性能(由于主库专用于更新),同时在多个从库上读取,可以大大提高读取速度。
- 数据安全性
由于主库数据被复制到从库,从库可以暂停复制过程,可以在从库上运行备份服务,而不会破坏对应的主库数据。
- 分析
可以在主库上创建实时数据,而信息分析可以在从库上进行,而不会影响主服务器的性能。
- 长距离数据分发
可以使用复制创建远程站点使用的数据的本地副本,而无需永久访问主库。
环境准备
MySQL版本 | MySQL 5.7.21 |
---|---|
Master-Server | 192.168.229.116 |
Slave-Server | 192.168.229.119 |
安装MySQL
参考上篇博文
首先在两台机器上装上,保证正常启动,可以使用
Master-Server 配置
修改 my.cnf
配置 Master 以使用基于二进制日志文件位置的复制,必须启用二进制日志记录并建立唯一的服务器ID,否则则无法进行主从复制。
开启binlog ,每台设置不同的 server-id
|
|
重启MySQL服务
|
|
登录MySQL
|
|
创建备份用户
|
|
每个从库使用MySQL用户名和密码连接到主库,因此主库上必须有用户帐户,从库可以连接。任何帐户都可以用于此操作,只要它已被授予 REPLICATION SLAVE权限。可以选择为每个从库创建不同的帐户,或者每个从库使用相同帐户连接到主库
虽然不必专门为复制创建帐户,但应注意,复制用到的用户名和密码会以纯文本格式存储在主信息存储库文件或表中 。因此,需要创建一个单独的帐户,该帐户只具有复制过程的权限,以尽可能减少对其他帐户的危害。
Slave-Server 配置
修改 my.cnf
|
|
如果要设置多个从库,则每个从库的server-id与主库和其他从库设置不同的唯一值。
重启MySQL服务
|
|
登录MySQL
|
|
配置主库通信
查看 Master-Server , binlog File 文件名称和 Position值位置 并且记下来
要设置从库与主库进行通信,进行复制,使用必要的连接信息配置从库在从库上执行以下语句
将选项值替换为与系统相关的实际值
配置从库通信
|
|
启动从服务器复制线程
|
|
查看复制状态
|
|
检查主从复制通信状态
Slave_IO_State:
#从站的当前状态Slave_IO_Running:
Yes #读取主程序二进制日志的I/O线程是否正在运行Slave_SQL_Running:
Yes #执行读取主服务器中二进制日志事件的SQL线程是否正在运行。与I/O线程一样Seconds_Behind_Master
#是否为0,0就是已经同步了
必须都是 Yes
测试主从复制
启动mysql服务并在主库中创建表
从库中查询库表
主库中刚才创建的数据库demo
已经同步到存库中,即标识一个主从复制的数据库配置已经大功告成
注意事项
如果在用启动mysql> start slave;
启动从服务器复制线程是出错,可使用reset slave
进行重置
参考资料: