mysql实现主从备份
mysql 主从备份的原理:
主服务器在做数据库操作的时候将所有的操作通过⽇志记录在binlog⾥⾯,有专门的⽂件存放。如localhost-bin.000003,这种,从服务器和主服务配置好关系后,通过I/O线程获取到这个binlog⽂件然后写⼊到从服务器的relaylog(中继⽇志)中,然后从服务器执⾏从服务器中的sql语句进⾏数据库的同步。
实现:
准备:两台服务器,mysql环境,可以是Windows,Linux,下⾯是两台Linux服务器,192.168.3.32(主),192.168.3.31(从)。
1. 配置主服务器上mysql的配置⽂件,配置⽂件在/etc/myf
log_bin放开注释
server-id=1 新增
2. 重启数据库
systemctl start mysqld
3. 创建复制⽤户并赋权限给从服务器把主服务的所有东西。
数据库怎么备份数据grant replication slave on *.* to 'slave'@'192.168.3.31' identified by 'Pangolin123!';
注:‘slave’是复制数据的⽤户名,'Pangolin123!'是密码。192.168.3.31 可以改成%,表⽰所有的从服务器都可以。不做限制。
4. 更新权限
flush privileges;
5. 在从服务器上进⾏配置数据库
server-id=2
6. 重启数据库
systemctl start mysqld
7. 在从服务器上进⾏从数据库的复制数据的配置
⾸先登录 mysql -uroot -p
stop slave;
change master to master_host='192.168.3.32', master_user='slave',
master_password='Pangolin123!',master_log_file='mysql-bin.000006',
master_log_pos=2060 ;
注:mysql-bin.000006 这个东西需要⾃⼰,在mysql的安装⽬录 /var/lib/mysql下⾯
start slave;
show slave status \G;
查看是否正常:
这两个Yes表⽰正常。
8. 测试。
9. 错误总结:
错误1:从服务器 show slave status \G; 显⽰
Slave_IO_Running:NO
Last_IO_Error: Got fatal error 1236 from master when reading data from binary log: 'Binary log is not open'
我解决的办法是重启⼀下就好了。
重启之后再mysql的⽬录下就可以看到 binlog的⽣成。
错误2
Slave_IO_Running:NO
Got fatal error 1236 from master when reading data from binary log: 'Could not find first log file name in binary log index file'
解决⽅案:在主服务器上进⾏⽇志刷新
mysql -uroot -p
flush logs;
show master status;
显⽰这个,
然后到从服务器上重新配置binlog⽂件。
stop slave;
CHANGE MASTER TO MASTER_LOG_FILE='localhost-bin.000003',MASTER_LOG_POS=322;
start slave;
show slave status \G;
错误3:
Got fatal error 1236 from master when reading data from binary log: 'log event entry exceeded max_allowed_packet; Increase
max_allowed_packet on master; the first event 'localhost-bin.000002' at 107, the last event read from './localhost-bin.000002' at 123, the last byte read from './localhost-bin.000002' at 126.'
是由于配置错了binlog⽂件的开始位置。参考错误2 重新配置即可。
主从配置已完,下篇是springboot项⽬怎么配置读写分离。
敬请期待。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论