centos7配置mysql主从复制
常见的高可用MySQL解决方案有主从复制,主主复制,Heartbeat/SAN高可用,MySQL Cluster高可用等等。 这里我使用最简单的主从复制高可用方案,也是Mysql内置的功能。
mysql主从复制原理:
- master将数据改变记录到二进制日志(binary log)中,也即是配置文件log-bin指定的文件(这些记录叫做二进制日志事件)
- slave将master的binary log events拷贝到它的中继日志(relay log)
- slave重做中继日志中的事件,将改变反映它自己的数据(数据重演)
其实就是根据主数据库的日志文件来进行同步。
支持类型
- 基于语句的复制:在主服务器上执行的SQL语句,在从服务器上执行同样的语句.MySQL默认采用基于语句的复制,效率比较高
- 基于行的复制:把改变的内容直接复制过去,而不关心到底改变该内容是由哪条语句引发的 . 从mysql5.0开始支持
- 混合类型的复制: 默认采用基于语句的复制,一旦发现基于语句的无法精确的复制时,就会采用基于行的复制.
前置条件
- 主DB server和从DB server数据库的版本一致
- 主DB server和从DB server数据库数据一致[可以把主的备份在从上还原]
- 主DB server开启二进制日志,主DB server和从DB server的server_id都必须唯一
详细步骤
主服务器node200:192.168.212.200
从服务器node201:192.168.212.201(可以设置多个从服务器)
1. 两台机器的的selinux都是disable
2. 修改主DB server的配置文件(/etc/my.cnf),开启日志功能,设置server_id值,保证唯一[node200为主DB server]
1 | [root@node200 ~]# vi /etc/my.cnf |
3. 启动数据库服务器,并登陆数据库,授予相应的用户用于同步
1 | mysql -uroot -p |
4. 为保证主DB server和从DB server的数据一致,这里采用主备份,从还原来实现初始数据一致
1 | # 主DB上面登录 |
5. 从数据库配置文件只需修改一项,其余用命令行做
1 | [root@node201 ~]# vi /etc/my.cnf |
6.启动从数据库,还原备份数据
1 | # 启动数据库 |
7. 登陆从数据库,添加相关参数(主DBserver的ip/端口/同步用户/密码/position号/读取哪个日志文件)
1 | [root@node201 ~]# mysql -uroot -p |
8. 下面大家就可以在主DB server上新建一个表,看是否能同步到从DB server上,我这里就不测试了
查看server_id:
1 | mysql> show variables like '%server_id%'; |