当前位置: 首页 > news >正文

mysql 主从同步

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

系统 centos6.5 至 centos7.0
mysql 5.6.15 至 mysql 5.6.29

下面程序中配置文件的位置根据自己服务器的情况进行修改

1,主服务器操作
修改 /etc/my.cnf
log-bin=mysql-bin   //[必须]启用二进制日志
server-id=123       //[必须]服务器唯一ID,默认是1,一般取IP最后一段

2,从服务器操作
修改 /etc/my.cnf
log-bin=mysql-bin   //[不是必须]启用二进制日志
server-id=456       //[必须]服务器唯一ID,默认是1,一般取IP最后一段

3,重启两台服务器的mysql

4,主服务器建立账户并且授权slave
mysql > GRANT REPLICATION SLAVE ON *.* to 'mysync'@'%' identified by 'q123456'; //一般不用root帐号,“%”表示所有客户端都可能连,只要帐号,密码正确,此处可用具体客户端IP代替,如192.168.145.226,加强安全。

5,主服务器开始备份数据
安装在线的 yum库
yum install http://www.percona.com/downloads/percona-release/redhat/0.1-3/percona-release-0.1-3.noarch.rpm

安装
yum install percona-xtrabackup-22

6,备份主服务器数据库 (这个里面有一个 --database的参数可以指定数据库,不过这次是整库备份就没用,指定数据库和整库备份应该有不同的操作)
innobackupex --socket=/var/lib/mysql/mysql.sock --user=root --password=123456 --defaults-file=/etc/my.cnf --parallel=4 /data/backup/database

保持事物的一致性(上面备份完后会生成一个类似于 2016-07-28_15-17-40 的目录下面就填这个)
innobackupex --socket=/var/lib/mysql/mysql.sock --user=root --password=123456 --defaults-file=/etc/my.cnf --apply-log /data/backup/database/2016-07-28_15-17-40

7,进入从服务器
这里可以使用screen screen -S database

将主服务器的备份文件传输至从服务器
rsync -rP root@123.123.123.123:/tmp/backup/2016-07-28_15-17-40 /home/mysqlbackup/

恢复文件
innobackupex --socket=/tmp/mysql.sock --user=root --password=ShuaDuan#$%Mysql123 --defaults-file=/etc/my.cnf --copy-back /home/mysqlbackup/2016-07-28_15-17-40/

提醒一下恢复文件的目录是my.cnf中指定的 datadir的路径 这个路径不能是你传过来的路径,这个目录下必须为空,日过恢复文件时报 ibdata1 cannot overwrite 你需要将innodb_data_home_dir 和 innodb_log_group_home_dir改成 和datadir一样的路径 如果不改的话就在/usr/local/mysql/var 把 ibdata1、ib_logfile1、ib_logfile0删掉(当然 老实如我 还是改了)

恢复完后一定记得将恢复后的目录用户和用户组改为mysql 不然mysql启动不了

这时看一下远程传输过来的 尚未恢复的那个目录 里面有一个 xtrabackup_binlog_info 打开之后类似于 mysql-bin.000044        6061066

然后配置从服务器的slave,下面的master_log_file、master_log_pos就填刚才 xtrabackup_binlog_info里面的
mysql > change master to master_host='123.123.123.123',master_user='mysync',master_password='q123456',master_port=3306,master_log_file='mysql-bin.000044',master_log_pos=6061066;

开启slave服务

查看从服务器复制功能状态
show slave status\G

下面这两个必须是yes 否则就不行
Slave_IO_Running: Yes    //此状态必须YES
Slave_SQL_Running: Yes   //此状态必须YES

大功告成,看下从服务器的数据 是否和主服务器一致

以上主从同步参考 http://369369.blog.51cto.com/319630/790921/ 
以上数据库备份恢复参考 https://segmentfault.com/a/1190000003063874

 

如果同步出现后你还在从表插入数据那么会发生主键冲突,我当时直接把新增的数据删除后就好了(不知道是不是该怎么做)。

 

如果出现类似于 Could not execute Delete_rows event on table z.nidaye; Can't find record in 'nidaye', Error_code: 1032; 这样的1032错误 我当时是删除了主表数据,接着又删除了从表的同样数据(为毛没同步删除,我也不知道)然后就出现了这个错误,网上说是mysql的BUG,不管是什么,提供了几个方法。

1,说是5.5.13有bug,升级数据库就好(我没这么干)

2,利用配置参数 来躲避这个bug    vi /etc/my.cnf  slave-skip-errors = 1032,xxxx,xxxx ....(我也没这么干)

3.Replicate_Wild_Ignore_Table 发生错误的表。然后手工同步。(我干了但没成功,貌似是语法错误),

4,临时逃避此次错误。set global sql_slave_skip_counter=1;   stop slave; start slave; (这我倒是干了,那个sql_slave_skip_counter后面的数字貌似是执行忽略的条数,我当时大概删了十几条数据,那个数字我就填的 十几,然后重新启动slave 在看一下状态,成功了)

以上原文:http://blog.csdn.net/lxpbs8851/article/details/7914992

转载于:https://my.oschina.net/waterPlants/blog/719904

相关文章:

  • 张掖百公里,再次折戟
  • 前端 封装 时间转换
  • 封装一个接口方法,根据条件,调用不同接口数据
  • Linux正则表达式
  • es6的解构赋值 和扩展运算符 ... 的区别
  • 项目上线注意事项
  • apply()方法
  • 学习Vue.js的五个小例子
  • 执行 set-ExecutionPolicy RemoteSigned 失败解决方法
  • UVA11729 Commando War【贪心】
  • 根据 选中行数据状态进行按钮的展示和置灰功能
  • 视频编解码学习之五:差错控制及传输
  • Git安装和项目中常用的git命令,
  • php发送邮件(正解!!!)
  • 开发项目时,分支新建和合并保留
  • 【跃迁之路】【735天】程序员高效学习方法论探索系列(实验阶段492-2019.2.25)...
  • idea + plantuml 画流程图
  • KMP算法及优化
  • RxJS: 简单入门
  • Solarized Scheme
  • Spark VS Hadoop:两大大数据分析系统深度解读
  • SpringCloud集成分布式事务LCN (一)
  • ViewService——一种保证客户端与服务端同步的方法
  • vue--为什么data属性必须是一个函数
  • Windows Containers 大冒险: 容器网络
  • 经典排序算法及其 Java 实现
  • 坑!为什么View.startAnimation不起作用?
  • 前端之React实战:创建跨平台的项目架构
  • 如何在GitHub上创建个人博客
  • 深入浏览器事件循环的本质
  • 听说你叫Java(二)–Servlet请求
  • 最简单的无缝轮播
  • ​软考-高级-系统架构设计师教程(清华第2版)【第20章 系统架构设计师论文写作要点(P717~728)-思维导图】​
  • #鸿蒙生态创新中心#揭幕仪式在深圳湾科技生态园举行
  • %@ page import=%的用法
  • (3)nginx 配置(nginx.conf)
  • (done) NLP “bag-of-words“ 方法 (带有二元分类和多元分类两个例子)词袋模型、BoW
  • (javascript)再说document.body.scrollTop的使用问题
  • (十)DDRC架构组成、效率Efficiency及功能实现
  • (一)基于IDEA的JAVA基础12
  • (原創) 如何動態建立二維陣列(多維陣列)? (.NET) (C#)
  • (终章)[图像识别]13.OpenCV案例 自定义训练集分类器物体检测
  • .a文件和.so文件
  • .h头文件 .lib动态链接库文件 .dll 动态链接库
  • .NET实现之(自动更新)
  • .Net下的签名与混淆
  • .NET运行机制
  • [20180129]bash显示path环境变量.txt
  • [ACTF2020 新生赛]Include
  • [asp.net core]project.json(2)
  • [Bada开发]初步入口函数介绍
  • [BIZ] - 1.金融交易系统特点
  • [Django 0-1] Core.Email 模块
  • [hdu2196]Computer树的直径
  • [Java] 模拟Jdk 以及 CGLib 代理原理