mysql 主从复制 position_mysql 主从复制原理及步骤。

mysql是现在普遍使用的数据库,但是如果宕机了必然会造成数据丢失。为了保证mysql数据库的可靠性。就要会一些提高可靠性的技术。

主从复制原理如下。

slave(从服务器)   master(主服务器)

mysql主从是异步复制过程

1 master开启bin-log功能,日志文件用于记录数据库的读写增删;

2 需要开启3个线程,master IO线程,slave开启 IO线程 SQL线程;

3 Slave 通过IO线程连接master,并且请求某个bin-log,position之后的内容。

4 MASTER服务器收到slave IO线程发来的日志请求信息,io线程去将bin-log内容,position返回给slave IO线程。

5 slave服务器收到bin-log日志内容,将bin-log日志内容写入relay-log中继日志,创建一个master.info的文件,

该文件记录了master ip 用户名 密码 master bin-log名称,bin-log position。

6 slave端开启SQL线程,实时监控relay-log日志内容是否有更新,解析文件中的SQL语句,在slave数据库中去执行。

字有点多 上张图看看。

3981932575cfd8e7ebb9cae0937d3e19.png

应该有一定了解了吧。、

准备两个mysql,一个做主,一个做从。防火墙,selinux都要关闭,保证可以ping通对方

主服务器配置:vi/etc/ntp.conf

添加:

server 127.127.1.0fudge127.127.1.0 stratum 8service ntpd start #因为同步数据 两个服务器的时间也要同步。

稍后要在从服务器执行来同步时间

vi/etc/my.cnf

在配置文件49行

effae326fa11f5d3980c9cef89cecbfe.png

其他内容都可以保持默认。

---------------------------------------------------------------------------------------------------------

在主服务器登录mysql 给从服务器授权。

mysql> grant replication slave on *.* to zs@'192.168.43.%' identified by '123456';

授权用户zs 密码为123456 允许192.168.43.0的网络连接 一会儿要在slave上使用这个账号

----------------------------------------------------------------------------------------

show master status;    #此命令查看主服务器的bin-log日志文件名称和position点

a0e5aec3f8676eb835ce53f5accef093.png

从服务器就是要指定这个文件maste-bin.000001 (随着mysql增删修改日志文件名字也有可能改变)  和 107 (position点 主服务器增删修改都会改变)所以现在开始就不要再在主服务器创表干啥的了,

mysqldump -uroot -p --opt --all-databases >/all_databases.sql#导出主数据库的数据

scp -r /all_databases.sql root@192.168.43.2:/   #用scp把数据复制到从服务器。

因为主从复制是从主从关系建立完毕开始同步的。也就是现在 position 107之前的内容复制不了所以要手动复制主之前的数据导入从数据库。

从服务器配置:

/usr/sbin/ntpdate 192.168.43.22  #和主服务器同步时间。192.168.43.22为主服务器ip

23f9fc799bd8f2cacedfef741687d3a6.png

20bd26b8d5639ae498069eb61ad66584.png

mysql -u root -p  

vi /etc/my.cnf

846aabf4663bd9570e24a01de5b730ef.png

修改后重启mysql服务

进入从服务器的mysql

change master to master_host='192.168.43.22',master_user='zs',master_password='123456',master_log_file='maste-bin.000001',master_log_pos=107;

start slave;  #开启SQL线程

adabad8ef067aba512ddf3df943e1229.png

show slave status\G;  查看从服务器状态

c8f1e1e9da0a9cb9e127227b30374a2d.png

注意两个都要是yes才是正常。

查看效果,在主服务器上创建个库看看。

b48ad690b095106c9909831fe17c7bf7.png

从数据库也会有

cff92c27bb88638232a49a2b8a3b6bef.png

同样删掉数据库从数据库也会复制。

主库上删除一个数据库。

c7ddcdcb6fa2621064d9b40d07be85d0.png

从库上也没了。所以还是要备份数据库的。

809a7e4d02391ac4e3d735d9649e9789.png

完毕。希望对你有所帮助

原文链接:https://blog.csdn.net/qq_41772936/article/details/80380950

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值