Mysql 主从配置
前景提要
由于现公司设备服务器每天产生14万,接近15万条数据,在运维服务器端同时也需要处理设备服务器的数据,所以部署了主从两台mysql服务,实现读写分离。大致架构如下图
复制原理
Mysql中有一种叫做bin(二进制)的日志,这个日志记录了主Mysql服务器执行的所有Sql语句。
复制过程
1、主服务必须启用二进制日志,记录修改数据的事件
2、从服务器开启一个线程,通过一个线程,请求主服务的二进制日志文件中的事件
3、主服务器启动一个线程,检查自己二进制日志中的事件,跟对方请求的位置对比,如果不带位置参数请求,则主节点就会从第一个日志文件中的第一个事件一个个发给从服务器
4、从服务器收到主服务器发送过来的数据放到中继日志(Relay log)文件中,并记录该请求到主服务器的具体哪个日志文件的哪个位置
5、从节点启动一个,把Relay log中的事件读取出来 ,并在本地执行一次
配置演示
主服务:
1、启用二进制日志
2、为当前节点设置一个全局唯一的server_id
3、创建有复制权限的用户账号 REPLIACTION SLAVE ,REPLIATION CLIENT。
从服务:
1、启用中继日志
2、为当前节点设置一个全局唯一的server_id
3、使用有权限的用户账号连接到主服务,并启动复制线程
环境配置
主Mysql:172.18.0.2
从Mysql: 172.18.0.3
Mysql版本:5.7.28
运行环境:docker
1、编辑主Mysq配置文件
2、添加配置
添加:log-in=mysql-bin
添加:server-id=5
添加:replicate-do-db=main_db
添加:innodb_file_per_table=ON
添加:skip_name_resolve=ON
3、启动服务,查看主Mysql日志状态
4、查看主Mysql服务状态
5、创建备份权限的用户
6、刷新权限
7、编辑从服务
修改myl.cnf文件
8、修改配置
添加:relay-log=relay-log
添加:relay-log-index=relay-log.index
添加:server-id=23
添加:innodb_file_per_table=ON
添加:skip_name_resolve=ON
添加:replicate-do-db=main_db
9、查看从Mysql服务日志信息
10、在从Mysql服务配置访问主节点的参数信息
添加主Mysql 访问主Mysql服务的用户名和密码,主Mysql的二进制信息
查看主Mysql服务当前日志信息:
11、启动同步服务
12、查看同步服务
13、Mysql同步服务在这里配置完成。