探讨学习MySQL主从复制
2018-03-14 15:21
246 查看
作为一名PHP开发工程师,我想不管是在面试中还是在实际工作当中,我们不仅仅每天只是增删改查,if....else...那一套,我们应更深层的去学习PHP,学习MySQL,学习nginx ..........
那么在此仅作为学习MySQL主从复制分享一点点心得吧(往往我们听起来很高大上的东西,动手做起来其实简单的很,难则难在基本功)
首先我们应该在学习之前应掌握其原理所在,那么主从复制的原理,通俗来理解就是MySQL主服务器做什么事的同时从服务器也做该同样的事,两者保持一致,例如说:主服务说1加1等于2,那从服务就要同样说1加1等于2,但是与此同时呢,二者还需要建立一定的联系,才能进行握手通信,进行主从复制,也就是需要打开MySQL的二进制日志 binlog ,主服务器每次执行都会在binlog产生日志,从服务器相当于把主服务器的binlog读取过来,转化为自己可用的文件在自己的机器上执行一遍,(主从的执行间隔大约几十毫秒的样子,如果超过一秒基本是不能忍的),这样主从复制就完成了
下面就配置主服务器binlog;
一,
找到自己的数据库配置文件(一般是/etc/my.cnf ,当然要结合自己搭建环境的实际情况),
并开启二进制日志
log-bin=mysql-bin ,
接下来就是,二台服务器要建立起来联系,互相通信,那么就要为从服务器设置一个登陆主服务器的用户密码:
进入MySQL命令行执行:
mysql>grant replication slave on *.* to‘用户名’@’从服务器ip’ identified by ‘密码’;
刷新权限: mysql>flush privileges;
二,
查看主服务器二进制文件名与位置
mysql>show master status;
在从服务器告知主服务器二进制文件名与位置,故在从服务器执行 mysql>change master to >master_host=’xxx.xxx.xx.xx’,>master_user=’用户名’,>master_password=’密码’,>master_log_file=’二进制binlog文件名’,>master_log_pos=xxx; #binlog文件位置偏移处
至此,就完成了主从配置
三,接下来就是测试是否成功,mysql>slave start; #开启复制mysql>show slave status\g #查看主从复制是否配置成功
(若有异常,此处会抛出),在我实验过程中,抛出了权限拒绝(root用户),解决方法是因为MySQL用户表中每个用户的权限是不一样的,故此指定MySQL登录用户,问题解决,当看到Slave_IO_Running: YES、Slave_SQL_Running: YES 时,严重祝贺你一切顺利完成四,进行实际测试,先登陆主MySQL mysql>show databases;
再登陆从MySQL mysql>show databases;
----------------------------------------------------- 然后在主MySQL操作sql: mysql>create database aa; mysql>use aa; mysql>create table tab1(id int auto_increment,name varchar(10),primary key(id)); mysql>show databases; mysql>show tables;
在从服务器MySQL操作查看: mysql>show databases; mysql>show tables;
果然多了,一个aa库,并且在aa中有一张tab1表,与主MySQL保持了一致。
那么在此仅作为学习MySQL主从复制分享一点点心得吧(往往我们听起来很高大上的东西,动手做起来其实简单的很,难则难在基本功)
首先我们应该在学习之前应掌握其原理所在,那么主从复制的原理,通俗来理解就是MySQL主服务器做什么事的同时从服务器也做该同样的事,两者保持一致,例如说:主服务说1加1等于2,那从服务就要同样说1加1等于2,但是与此同时呢,二者还需要建立一定的联系,才能进行握手通信,进行主从复制,也就是需要打开MySQL的二进制日志 binlog ,主服务器每次执行都会在binlog产生日志,从服务器相当于把主服务器的binlog读取过来,转化为自己可用的文件在自己的机器上执行一遍,(主从的执行间隔大约几十毫秒的样子,如果超过一秒基本是不能忍的),这样主从复制就完成了
下面就配置主服务器binlog;
一,
找到自己的数据库配置文件(一般是/etc/my.cnf ,当然要结合自己搭建环境的实际情况),
并开启二进制日志
log-bin=mysql-bin ,
接下来就是,二台服务器要建立起来联系,互相通信,那么就要为从服务器设置一个登陆主服务器的用户密码:
进入MySQL命令行执行:
mysql>grant replication slave on *.* to‘用户名’@’从服务器ip’ identified by ‘密码’;
刷新权限: mysql>flush privileges;
二,
查看主服务器二进制文件名与位置
mysql>show master status;
在从服务器告知主服务器二进制文件名与位置,故在从服务器执行 mysql>change master to >master_host=’xxx.xxx.xx.xx’,>master_user=’用户名’,>master_password=’密码’,>master_log_file=’二进制binlog文件名’,>master_log_pos=xxx; #binlog文件位置偏移处
至此,就完成了主从配置
三,接下来就是测试是否成功,mysql>slave start; #开启复制mysql>show slave status\g #查看主从复制是否配置成功
(若有异常,此处会抛出),在我实验过程中,抛出了权限拒绝(root用户),解决方法是因为MySQL用户表中每个用户的权限是不一样的,故此指定MySQL登录用户,问题解决,当看到Slave_IO_Running: YES、Slave_SQL_Running: YES 时,严重祝贺你一切顺利完成四,进行实际测试,先登陆主MySQL mysql>show databases;
再登陆从MySQL mysql>show databases;
----------------------------------------------------- 然后在主MySQL操作sql: mysql>create database aa; mysql>use aa; mysql>create table tab1(id int auto_increment,name varchar(10),primary key(id)); mysql>show databases; mysql>show tables;
在从服务器MySQL操作查看: mysql>show databases; mysql>show tables;
果然多了,一个aa库,并且在aa中有一张tab1表,与主MySQL保持了一致。
相关文章推荐
- Linux学习笔记:MySQL主从复制的风险与防范
- Mysql学习总结(14)——Mysql主从复制配置
- Mysql学习总结(43)——MySQL主从复制详细配置
- mysql dba系统学习(18)mysql主从复制的实现 mysql dba系统学习(19)配置mysql+lvs+keeplived实现Mysql读操作的负载均衡
- mysql学习之主从复制
- 分布式架构学习之:MyCat在MySQL主从复制基础上实现读写分离
- Docker学习+基于Docker MySQL的主从复制
- mysql学习之主从复制
- Mysql学习总结(43)——MySQL主从复制详细配置
- 马哥学习笔记二十六——MySQL主从复制
- mysql dba系统学习(18)mysql主从复制的实现
- Mysql学习总结(33)——阿里云centos配置MySQL主从复制
- Linux学习笔记:MySQL主从复制遭遇 'Misconfigured master - server id was not set'
- MySQL学习笔记--简单主从复制配置
- Mysql DBA 高级运维学习笔记-MySQL主从复制指定不同库表参数说明
- Mysql学习总结(33)——阿里云centos配置MySQL主从复制
- mysql主从复制学习分享
- mysql主从复制原理,深入探讨
- Mysql DBA 高级运维学习笔记-生产场景Mysql主从复制读写分离授权方案及实战
- mysql主从复制学习笔记