旗下导航:搜·么
当前位置:网站首页 > MySQL教程 > 正文

MySQL双向备份的要领引见(附代码)【MySQL教程】,备份恢复,mysql

作者:搜教程发布时间:2019-12-01分类:MySQL教程浏览:21评论:0


导读:本篇文章给人人带来的内容是关于MySQL双向备份的要领引见(附代码),有肯定的参考价值,有须要的朋侪能够参考一下,愿望对你有所协助。MySQL双向备份也被称为主主备份,即...

本篇文章给人人带来的内容是关于MySQL双向备份的要领引见(附代码),有肯定的参考价值,有须要的朋侪能够参考一下,愿望对你有所协助。

MySQL 双向备份也被称为 主主备份 ,即两个 MySQL 效劳都是 Master,个中恣意一个效劳又是另一个效劳的 Slave。

预备

效劳器

MySQL效劳器 版本 IP地点
masterA 5.6.41 192.168.1.201
masterB 5.6.41 192.168.1.202

注:

备份的 MySQL 效劳器版本只管保持一致,差别的版本能够二进制日记花样不兼容。

具体操纵

注重

操纵过程当中注重双方数据的一致!!!

masterA 设置

my.cnf

[mysqld]
# 效劳器唯一标识
server-id=1
# 二进制日记文件名
log-bin=mysql-bin

# 须要备份的数据库,多个数据库用 , 分开
binlog-do-db=piumnl
# 须要复制的数据库,多个数据库用 , 分开
replicate-do-db=piumnl
# 中继日记文件名
relay_log=mysqld-relay-bin
# 手动启动同步效劳,防备倏忽宕机致使的数据日记差别步
skip-slave-start=ON
# 互为主从须要到场这一行
log-slave-updates=ON
# 禁用标记链接,防备平安风险,可不加
symbolic-links=0

# 可不加
# resolve - [Warning] Slave SQL: If a crash happens this configuration does not guarantee that the relay log info will be consistent, Error_code: 0
master-info-repository=table
relay-log-info-repository=table
relay-log-recovery=1

# 可不加
# 禁用 dns 剖析,会使受权时运用的域名无效
skip-host-cache
skip-name-resolve

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

masterB 设置

my.cnf

# 不再诠释各个设置项
[mysqld]
server-id=2
log-bin=mysql-bin

binlog-do-db=piumnl
replicate-do-db=piumnl
relay_log=mysql-relay-bin
skip-slave-start=ON
log-slave-updates=ON
symbolic-links=0

# resolve - [Warning] Slave SQL: If a crash happens this configuration does not guarantee that the relay log info will be consistent, Error_code: 0
master-info-repository=table
relay-log-info-repository=table
relay-log-recovery=1

skip-host-cache
skip-name-resolve

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

建立备份用户

masterA & masterB 都要建立备份用户:

create user 'rep'@'%' identified by 'rep';    # 建立一个账户
grant replication slave on *.* to 'rep'@'%';  # 授与该账户对恣意数据库恣意表的主从备份权限

备注:

  1. Linux 下 MySQL 对 root@% 用户封闭了 grant_priv 权限,所以假如是长途登录会涌现受权失利的状况
  2. 此处备份用户帐号和暗码可不一致,此处为了简化操纵运用一样的帐号和暗码

重启效劳器

重启效劳器

开启备份

masterA

检察 masterB 状况

show master status\G;
# 此处须要关注 File 和 Position 值

开启备份

stop slave;
# master_log_file 就是第一步操纵的 File 值
# master_log_pos 就是第一步操纵的 Position 值
change master to master_host=<master_hostname>, master_user=<rep_username>, master_port=<master_port>, master_password=<rep_password>, master_log_file='mysql-log.000003', master_log_pos=154;
start slave;

检察效果

show slave status\G;
# 检察最主要的两项,两个都必须为 Yes ,有一个为 No 都要去检察毛病日记文件,看看什么地方存在题目
# Slave_IO_Running: Yes
# Slave_SQL_Running: Yes

masterB

反向反复 masterA 的操纵

测试

分别在 masterA 和 masterB 中插进去数据,并检察另一台效劳器是不是实时涌现预期的数据

题目

MySQL Slave Failed to Open the Relay Log

这应该是中继日记涌现题目,可尝试以下操纵

stop slave;
flush logs;
start slave;

Got fatal error 1236 from master when reading data from binary log

从主库中拉取日记时,发明主库的 mysql_bin.index 文件中的第一个文件不存在。

# 举行以下操纵重置
# 假如二进制日记或中继日记有其他作用,请勿举行以下操纵
reset master;
reset slave;
flush logs;

<database>.<table>

运用 <database>.<table> 举行插进去、更新和删除操纵,将不会举行备份( 这是巨坑 )!!!【相干引荐:MySQL教程】

以上就是MySQL双向备份的要领引见(附代码)的细致内容,更多请关注ki4网别的相干文章!

标签:备份恢复mysql


欢迎 发表评论: