Mysql主从复制介绍及配置 今天药忘吃喽~ 2021-06-11 15:11 403阅读 0赞 本文主要通过四方面介绍Mysql的主从复制: * 主从复制支持的类型 * 主从复制的优点 * 主从复制实现原理 * 主从复制的配置及demo # 1.类型 # Mysql支持的复制类型有三种,如下: * **基于语句的复制** 在主服务器上执行的SQL语句,在从服务器上执行同样的语句。MySQL默认采用基于语句的复制,效率比较高 * **基于行的复制** 把改变的内容复制过去,而不是把命令在从服务器上执行一遍. 从mysql5.0开始支持 * **混合型复制** 默认采用基于语句的复制,一旦发现基于语句的无法精确的复制时,就会采用基于行的复制 # 2.优点 # * 数据分布 (Data distribution ) * 负载平衡(load balancing) * 备份(Backups) * 高可用性和容错行 High availability and failover # 3.原理 # 主从复制最少需要两台机器才能实现,一个作为Master,一个作为Slave,当然也可以有一个Master和多个Slave的情况,如果再加上其他技术或者中间件则也可以实现多个Master的情况,此处分成三个步骤来介绍原理: 1. master将改变记录到二进制日志(binary log)中(这些记录叫做二进制日志事件,binary log events); 2. slave将master的binary log events拷贝到它的中继日志(relay log); 3. 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 输入如下: ![这里写图片描述][70] ##### 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; 输出如下: ![这里写图片描述][70 1] ### 4.3.配置完成,验证同步 ### 登录主库,找到主库my.cnf中binlog-do-db属性对应的数据库名称,在对应的数据库中创建表插入数据,查看slave中对应的数据库是否创建了对应的表和数据。 [70]: /images/20210607/1cd56efeb16a4490a28667f32e3ef62b.png [70 1]: /images/20210607/5956fb28eab3434fa44cbe9b3ced016b.png
还没有评论,来说两句吧...