mysql数据库主从同步

参考:https://blog.csdn.net/linuxlsq/article/details/52606292
MySQL的主从复制方案,和上述文件及文件系统级别同步是类似的,都输数据的传输。只不过MySQL无需借助第三方工具,而是其自带的同步复制功能,另外一点,MySQL的主从复制并不是从硬盘给上文件直接同步,而是逻辑的binlog日志同步到本地的应用执行的过程
提示:官方说主从不要超过9台,推荐不超过5台。

1)在Slave 服务器上执行sart slave命令开启主从复制开关,开始进行主从复制。

2)此时,Slave服务器的IO线程会通过在master上已经授权的复制用户权限请求连接master服务器,并请求从执行binlog日志文件的指定位置(日志文件名和位置就是在配置主从复制服务时执行change
master命令指定的)之后开始发送binlog日志内容

3)Master服务器接收到来自Slave服务器的IO线程的请求后,其上负责复制的IO线程会根据Slave服务器的IO线程请求的信息分批读取指定binlog日志文件指定位置之后的binlog日志信息,然后返回给Slave端的IO线程。返回的信息中除了binlog日志内容外,还有在Master服务器端记录的IO线程。返回的信息中除了binlog中的下一个指定更新位置。

4)当Slave服务器的IO线程获取到Master服务器上IO线程发送的日志内容、日志文件及位置点后,会将binlog日志内容依次写到Slave端自身的Relay Log(即中继日志)文件(Mysql-relay-bin.xxx)的最末端,并将新的binlog文件名和位置记录到master-info文件中,以便下一次读取master端新binlog日志时能告诉Master服务器从新binlog日志的指定文件及位置开始读取新的binlog日志内容

5)Slave服务器端的SQL线程会实时检测本地Relay Log 中IO线程新增的日志内容,然后及时把Relay LOG 文件中的内容解析成sql语句,并在自身Slave服务器上按解析SQL语句的位置顺序执行应用这样sql语句,并在relay-log.info中记录当前应用中继日志的文件名和位置点

主从复制条件

1、开启Binlog功能
2、主库要建立账号
3、从库要配置master.info(CHANGE MASTER to…相当于配置密码文件和Master的相关信息)
4、start slave 开启复制功能
知识点

1.3个线程,主库IO,从库IO和SQL及作用
2.master.info(从库)作用
3.relay-log 作用
4.异步复制
5.binlog作用(如果需要级联需要开启Binlog)

安装

在两台服务器上安装mysql(版本必须一致)
我的要同步的两台mysql数据库版本都是mysql5.5

主:192.168.2.135 端口号:3306
从:192.168.2.35 端口号:3306

一、修改配置文件

linux:vi /etc/my.cnf
windows:my.ini

配置master(主服务器)

# mysql数据库同步配置
#这是数据库ID,此ID是唯一的,ID值不能重复,否则会同步出错;
server-id=135
#二进制日志文件,此项为必填项,否则不能同步数据;如果不取名字的话,那么就会以,计算机的名字加编号来命名二进制文
log-bin = mysql-bin 
#需要同步的数据库,如果还需要同步另外的数据库,那么继续逐条添加,如果不写,那么默认同步所有的数据库;
binlog-do-db = new
#不需要同步的数据库;
binlog-ignore-db = mysql

注:server-id的s大写会报错,windows无法启动mysql服务 1067

配置slave(从服务器)

#这是数据库ID,此ID是唯一的,ID值不能重复,否则会同步出错;
server-id=35
#需要同步的数据库,如果还需要同步另外的数据库,那么继续逐条添加,如果    不写,那么默认同步所有的数据库;
binlog-do-db = new
#不需要同步的数据库;
binlog-ignore-db = mysql

如果你的从服务器下面再挂从服务器,启用二进制日志就是必选的!

重启mysql服务
重启的目的是使用刚才的配置生效,主从都需要重启;

linux:/etc/init.d/mysqld restart
注意:服务名是“mysqld”,不是某同学文章中的“mysql”!
windows可在服务下启动

二、在主服务器上创建备份专用帐户

①添加主数据库用于同步的账号:

mysql -uroot -p 
//先进入数据库
//在创建备份用户
mysql> grant replication slave on *.* to 'copyuser'@'192.168.2.35' identified by '123456';

说明:’copyuser’:同步的数据库账户名;
‘192.168.2.35’:同步的数据库地址;
‘123456’ :同步的数据库密码,在从库配置时需要设置。
注意:
1、这里是用GRANT创建用户并授权远程登录权限,而不是使用“Create User”来创建;
2、命令是在Shell下执行,不是在“mysql”客户端中执行;

② 查询master(主服务器)的状态

mysql> show master status;

查询结果:

这里写图片描述

三、配置Slave启动主从复制

①在mysql下执行命令

mysql -uroot -p
mysql> stop slave;
mysql> change master to
    -> master_host='192.168.2.135',
    -> master_user='copyuser',
    -> master_password='123456',
    -> master_log_file='mysql-bin.000001',
    -> master_log_pos=107;
mysql> start slave;

master_host=主服务器IP
master_user=在主服务器上创建的备份用户名
master_password=备份用户密码
master_log_file=查询master(主服务器)的状态得到的File列的值
master_log_pos=Position列的值
start slave:启动从服务器复制功能

② 检查从服务器复制功能状态

mysql> show slave status\G;

这里写图片描述

Slave_IO及Slave_SQL进程必须正常运行,即YES状态,否则都是错误的状态(如:其中一个NO均属错误)。
以上操作过程,主从服务器配置完成。
我在一次配置过程中忘记在主服务器上创建备份用户,Slave_IO_Running 就一直处于“connect”状态。

参考:http://blog.csdn.net/h13509205/article/details/50432954
http://blog.csdn.net/testcs_dn/article/details/51423861

问题

有时在配置完成后,Slave_IO_Running就一直处于”connecting”状态,然后将备份账户backup的host改为了’%’,就连接上了,状态也变为了Yes。

配置Slave启动主从复制时
在配置之前,可以先测试backup用户能否连接到主库的mysql:

mysql  -h 192.168.x.xxx -uusercopy -p123456  

可能会遇到问题:

D:\mysql\mysql-5.6.38-winx64\bin>mysql -h 192.168.x.xxx -uusercopy  -p123456  
Warning: Using a password on the command line interface can be insecure.  
ERROR 1045 (28000): Access denied for user 'usercopy '@'192.168.x.xxx' (using password: YES)  

此时可以去主服务器上更改usercopy的host,命令如下:

mysql -uroot -proot  
mysql>use mysql;  
mysql>update user set host='%' where user='usercopy';  
mysql>flush privileges;  

再去连接就连上了。
flush privileges作用:(百度结果)
本质上的作用是将当前user和privilige表中的用户信息/权限设置从mysql库(MySQL数据库
的内置库)中提取到内存里。MySQL用户数据和权限有修改后,希望在”不重启MySQL服务”的情况下直接生效,
那么就需要执行这个命令。通常是在修改ROOT帐号的设置后,怕重启后无法再登录进来,那么直接flush之后就可以
看权限设置是否生效。而不必冒太大风险。

结束语
上面提到了“如果你的从服务器下面再挂从服务器,启用二进制日志就是必选的!”,主从只是一个相对概念,一台MySQL服务即可以是主,也可以是从。
一开始讲了主从复制的一些好处,但是单一的主从复制也有其不足:当更新操作增加到一定程度后,主服务器的任务会过分繁重,成为瓶颈,从而使系统性能大幅度下降。另外当主机出现故障时,整个系统都涉及更新的功能都不能正常使用,因此系统的可靠性依然不高。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值