Mysql主从复制介绍及配置
程序员文章站
2024-03-21 07:58:27
...
本文主要通过四方面介绍Mysql的主从复制:
- 主从复制支持的类型
- 主从复制的优点
- 主从复制实现原理
- 主从复制的配置及demo
1.类型
Mysql支持的复制类型有三种,如下:
-
基于语句的复制
在主服务器上执行的SQL语句,在从服务器上执行同样的语句。MySQL默认采用基于语句的复制,效率比较高 -
基于行的复制
把改变的内容复制过去,而不是把命令在从服务器上执行一遍. 从mysql5.0开始支持 -
混合型复制
默认采用基于语句的复制,一旦发现基于语句的无法精确的复制时,就会采用基于行的复制
2.优点
- 数据分布 (Data distribution )
- 负载平衡(load balancing)
- 备份(Backups)
- 高可用性和容错行 High availability and failover
3.原理
主从复制最少需要两台机器才能实现,一个作为Master,一个作为Slave,当然也可以有一个Master和多个Slave的情况,如果再加上其他技术或者中间件则也可以实现多个Master的情况,此处分成三个步骤来介绍原理:
- master将改变记录到二进制日志(binary log)中(这些记录叫做二进制日志事件,binary log events);
- slave将master的binary log events拷贝到它的中继日志(relay log);
- slave重做中继日志中的事件,将改变反映它自己的数据
4.配置
配置主要分为两步:Master配置、Slave配置,配置完成后需要进行验证同步。
4.1.前提
- 主服务器(Master)、从服务器(Slave)mysql版本一致(或者从服务器mysql版本高)
- 主从服务器上需要配置的数据库中的数据一致,如果都是空数据库最好
4.2.Master配置
4.2.1.编辑my.cnf
命令:
vim /etc/my.cnf
内容如下:
#服务器唯一id,一般取ip最后一段
server_id=65
#指定binlog
log-bin=mysql-bin
#指定需要配置主从的库,如果多个库,则设置多个此属性,不配置此项则所有库都执行复制
binlog-do-db=vote
#指定忽略的库
binlog-ignore-db=mysql
4.2.2.重启Mysql服务
根据mysql版本选择命令:service mysql restart 或者 service mysqld restart
service mysql restart
4.2.3.登录mysql,查看master状态
命令:
show master status
输入如下:
4.2.4.登录mysql,建立用户并授权给slave
命令:
grant replication slave on *.* to 'myslave'@'192.168.45.%' identified by 'root';
命令语法如下:
grant replication slave on *.* to '用户名'@'192.168.45.%' identified by '密码';
其中%是通配符,也可以不用通配符直接指定具体ip。
4.3.Slave配置
4.3.1.编辑my.cnf
命令:
vim /etc/my.cnf
内容如下:
#服务器唯一id,一般取ip最后一段
server_id=64
#指定binlog(此slave做为其他slave的master时候需要配置此项,如果配置此项则必须同时配置log_slave_updates )
#log-bin=mysql-bin
#中继日志
#relay_log=mysql-relay-bin
#log_slave_updates = 1
4.3.2.重启Mysql服务
根据mysql版本选择命令:service mysql restart 或者 service mysqld restart
service mysql restart
4.3.3.登录mysql,停止slave
slave stop
4.3.4.登录mysql,指定master信息
命令(命令中master_log_file和master_log_pos的值是在master中查看状态结果的信息):
change master to master_host='192.168.45.65',master_user='myslave',master_password='root',master_log_file='mysql-bin.000001',master_log_pos=106;
4.3.5.登录mysql,停止slave
slave start
4.3.6.登录mysql,查看slave状态
查看Slave_IO_Running属性和Slave_SQL_Running属性是yes,则配置成功,命令:
show slave status;
输出如下:
4.3.配置完成,验证同步
登录主库,找到主库my.cnf中binlog-do-db属性对应的数据库名称,在对应的数据库中创建表插入数据,查看slave中对应的数据库是否创建了对应的表和数据。
推荐阅读
-
mysql主从同步原理及配置
-
Mysql主从复制介绍及配置
-
MYSQL安装及环境配置教程 Mac
-
JDBC 有关MySql jar包下载及配置,jdbc连接MySql数据的基本步骤
-
bboss平台子系统配置及系统登录以及其它常用配置介绍 博客分类: 平台 bboss平台菜单
-
Linux下Mysql 5.7的安装及远程连接配置 博客分类: Linux linuxmysql
-
mysql主从复制与读写分离配置 博客分类: mysql mysql
-
mysql主从复制与读写分离配置 博客分类: mysql mysql
-
mysql性能监控工具Innotop简介及配置
-
Linux环境Mysql环境配置优化及主从配置 博客分类: SQL技术栈 mysqlredhatlinuxperformancecentos