centos7恢复mysql数据库_MySQL数据库升级迁移填坑记

原库:*.*.101.73/74    

   系统环境: Suse 12.4

   MySQL: 5.7.29

新库:*.*.110.46/47

   系统环境:CentOS7.7 64位

   MySQL版本: 5.7.30

[一、数据库升级迁移场景]

因业务侧在*.*.101.73/74 mysql数据库服务器上部署了java应用程序、Hadoop+Hbase数据库等大数据环境,导致主机内存突然暴增告急,经双方排查,发现数据库进程本身才占用内存8.5%,大部分都是由应用缓存占用了内存。经与局方及业务侧沟通,局方敦促业务侧将数据库服务器从73/74服务器迁移到*.*.110.46/47服务器上,我方负责实施数据库的迁移操作。

[二、迁移采坑问题表现]

本次迁移使用的MySQL自带的备份工具mysqldump从原库双主(*.*.101.73/74)导出数据,通过nfs共享文件系统上传到资源池新库双主(*.*.110.46/47)。

在资源池新库分别将73、74数据库的备份文件导入 46、47新库,并启动双主复制进程:

mysql> change master to master_host='*.*.110.46',master_user='repl',master_password='xxxxxx',master_port=3306,master_auto_position=1;

结果报错如下:

ERROR 1201 (HY000): Could not initialize master info structure; more error messages can be found in the MySQL error log

[三、迁移采坑问题分析过程]

从报错信息来看,起初以为是执行复制的语句重复制账号信息有误,然后核对了repl账号的口令是正确的,并查看了复制账号repl的权限信息:

mysql>show grants for ‘repl’@’*.*.110.%’;

结果显示没有repl用户的权限信息记录。接着查看系统表user中数据信息,竟然没有导入数据前创建的repl用户记录,哦,奇怪。

突然想到,由于我们备份的是原库中所有表(--all-databases),导出的dump文件中包含有重新创建表结构的语句,所以马上在资源池双主库新建复制账号repl:

grant  replication  slave  on *.* to  'repl'@'*.*.110.%'  identified by  'xxxxxx';

flush privileges;

然后重新执行复制语句并开启复制进程依然报刚才的错。然后就想到此次迁移是从Suse 12.4  MySQL-5.7.29 迁移到CentOS7.7 MySQL-5.7.30, 以为是版本不兼容。

接着将资源池46/47的MySQL版本降为 mysql 5.7.29。分别重新导入数据到新库46/47上,导入数据库的过程中46服务器导入正常,而发现47库上通过source导入时非常的慢,每条执行返回10-30秒,当时没有查具体原因,有可能是网络卡顿吧。

最后查看原库74/74的数据库配置文件,返现没有开启GTID全局复制方式(说明,目前这边项目MySQL数据库几乎都使用的基于GTID全局事务复制协议做的同步),而我执行的复制语句中有“master_auto_position=1”,原来新库上执行的复制机制跟原库不一致,这就是刚才开启复制进程报错的根本原因。

[四、数据迁移采坑处理]

通过以上分析,我们得知,既然原库使用的是binlog和pos做的同步,那么我们新库也同样按照这个方式来配置复制。其次由于刚才使用mysql内置工具导入数据时很缓慢,所以我们准备采用percona提供的xtrabackup 工具来做数据备份和恢复。

4.1、首先检查新旧库上是否有创建备份账号,结果现实没有新新建

  create user 'bkuser'@'localhost' identified by 'xxxxxx';

  grant reload,lock tables,replication client,process on *.* to 'bkuser'@'localhost';

  flush privileges;

4.2、原库上使用xtrabackup备份双主数据

分别在原库73/74上使用xtrabackup做全量备份。

73服务器上:

innobackupex --defaults-file=/home/mysql/my_cnf/my.cnf --host=*.*.101.73 --user=bkuser --password=xxxxxx --port=3306 --socket=/app/gzyd/data/mysql/tmp/mysql.sock --no-timestamp /mysqlbackup/73_xtra_base_20200623

74服务器上:

innobackupex --defaults-file=/home/mysql/my_cnf/my.cnf --host=*.*.101.74 --user=bkuser --password=xxxxxx --port=3306 --socket=/app/gzyd/data/mysql/tmp/mysql.sock --no-timestamp /mysqlbackup/74_xtra_base_20200623

4.3、新库上恢复双主数据

1)导入数据前记录binlog文件及同步位置(master_log_pos和master_log_file)

# 46/47库上执行

mysql> flush table with read lock;

mysql> show master status;

注:记得记录下master状态信息,后面执行复制的时候要用到。

mysql> unlock table;

4.4、全量恢复

分别在原库73/74上使用xtrabackup做全量恢复

1)在46库上执行恢复操作

innobackupex --defaults-file=/home/mysql/my_cnf/my.cnf  --use-memory=2G --apply-log  /mysqlbackup/73_xtra_base_20200623

mysqladmin  --login-path=myconn shutdown immediate

mv /data/mysql/data /data/mysql/data-bak20200624

mkdir /data/mysql/data

innobackupex --defaults-file=/home/mysql/my_cnf/my.cnf  --copy-back /mysqlbackup/73_xtra_base_20200623

chown -R mysql.mysql   /data/mysql/data   

mysqld_safe  --defaults-file=/home/mysql/my_cnf/my.cnf  &

2)在47库上恢复操作同上

4.5、新库上配置双主复制

1)在46/47服务器上新建复制账号

注:由于在原库导出的是所有库,备份文件中含有重新创建表结构的语句,所以在新库恢复数据后需要重新创建复制账号:

grant  replication  slave  on *.* to  'repl'@'*.*.110.%'  identified by  'xxxxxx';

flush privileges;

2)配置46->47方向主从

 登录47服务器,执行复制语句:

stop slave; 

change master to master_host='*.*.110.46',master_user='repl',master_password='xxxxxx',master_port=3306,master_log_file='bin.000001',master_log_pos=448;

start slave;

show slave status\G;

b93c360b4805a773c05dd05860d16e1b.png

3)配置47->46方向主从

 登录46服务器,执行复制语句:

stop slave;

change master to master_host='*.*.110.47',master_user='repl',master_password='repQAv2wsx@gzydxk',master_port=3306,master_log_file='bin.000001',master_log_pos=1066;

start slave;

show slave status\G;  

5fbf80c2c18d1f66acfb567cf6986a70.png

4.6、新库双主测试

1)主主库46上试着写入测试数据

mysql> create database chg;

mysql> use chg;

mysql> create table t1(id int, name varchar(30));

mysql> insert into t1(id,name) values(1,'zhangsan');

mysql> insert into t1(id,name) values(2,'lisi');

然后到重复47上查看新插入的两条数据是否同步过来:

mysql> show databases;

+--------------------+

| Database           |

+--------------------+

| information_schema |

| chg                |

| mysql              |

| performance_schema |

| smzrz              |

| sys                |

+--------------------+

6 rows in set (0.00 sec)

mysql> use chg;

mysql> show tables;

+---------------+

| Tables_in_chg |

+---------------+

| t1            |

+---------------+

1 row in set (0.00 sec)

mysql> select  * from t1;

+------+----------+

| id   | name     |

+------+----------+

|    1 | zhangsan |

|    2 | lisi     |

+------+----------+

2 rows in set (0.00 sec)

2)主主库46上试着写入测试数据

mysql> create database chg2;

mysql> use chg2;

mysql> create table t2(id int,name varchar(20));

mysql> insert into t2(id,name) values(1,'derek');

mysql> insert into t2(id,name) values(2,'john');

然后到重复47上查看新插入的两条数据是否同步过来:

mysql> use chg2;

mysql> show tables;

+----------------+

| Tables_in_chg2 |

+----------------+

| t2             |

+----------------+

1 row in set (0.00 sec)

mysql> select * from t2;

+------+-------+

| id   | name  |

+------+-------+

|    1 | derek |

|    2 | john  |

+------+-------+

[五、问题规避]

MySQL数据库类似的升级迁移操作注意事项:

①升级迁移操作前仔细检查当前数据库配置文件(my,cnf),关注关键性的参数配置。

②自此检查数据库的架构,如:具体使用哪种复制模式等。

③升级迁移变更前做好充分的数据测试。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/531845.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

so把asp页面生成静态的html,23、asp系列课程--server.URLEncode方法和server.HTMLEncode方法...

作者:杨凡来自:杨凡博客地址:blog.sina.com.cn/aboutshisanserver.URLEncode方法和server.HTMLEncode方法可以对字符串进行编码。我们一个一个的说。server.URLEncode可以对字符串进行URL编码转换,语法格式为:server.u…

下列关于html5表单的多样输入方式,IT兄弟连 HTML5教程 HTML5表单 多样的输入类型1...

原标题:IT兄弟连 HTML5教程 HTML5表单 多样的输入类型1HTML5拥有多个新的表单输入类型,这些新特性提供了更好的输入控制和验证。并不是所有的主浏览器都支持新的input类型,不过我们可以在所有的主浏览器中使用它们,即使不被支持&a…

v7000更换电池步骤_ups电源运行中是否可以更换电池?应如何操作呢

ups电源在日常使用中除了日常维护工作之外,对于使用达到一定年限的时候,内部使用的ups蓄电池就需要更换了,很多人以为ups不间段电源在工作的时候是可以跟换电池。其实,这个具体就需要看ups电源设计的原理,不同厂家设计…

华为怎么用手机看时间到读秒_华为手机灭屏也可以看时间?其实设置方法很简单,不会有些可惜了...

华为作为手机界名副其实的大佬,而且华为手机的口碑也是非常不错的。那么为什么会有这么多人喜欢华为手机呢?主要是华为手机的质量高,并且用很多实用的小功能,比如说神奇的灭屏显示功能等等,今天就给大家分享几个华为手…

hive转16进制unhex_Java 进制的转换

什么是进制?进制也就是进位计数制,是人为定义的带进位的计数方法(有不带进位的计数方法,比如原始的结绳计数法,唱票时常用的“正”字计数法,以及类似的tally mark计数)。 对于任何一种进制---X进制,就表示每…

引入ui组件_Vuejs, Semantic CSS前端框架fish-ui

简介基于vue2.0, github star 690, 一款小众的UI框架fish-ui,直接上截图:主要特性配备Vue.js,Moment,Vue-Router,ES6和Babel 6使用Webpack 2.0和Vue LoaderSemantic CSS 组件使用 Less支持现代浏览器快速开发安装npm i…

减去字符串_从文本字符串中提取指定值的6个超级技巧解读

在实际的工作中,从指定的字符串中提取指定文本也是常用的技巧之一,除了手动操作之外,下文的8种应用技巧也是必须要掌握的。一、Left函数法。功能:从指定文本字符串的第一个字符开始,提取指定长度的字符串。语法结构&am…

如果用计算机录制歌曲需要,网络歌手怎么用电脑录音软件录歌

现在网上有很多网络歌手主要分为两类,一类是原创,一类是翻唱。可是不管是原创还是翻唱都需要自己唱歌录歌,要有属于自己的歌曲(自己唱的)。要录歌就要有设备,毕竟网路歌手刚开始大多数都是草根没有钱找音乐工作室,只能…

中国剩余定理证明过程

原网址:http://blog.csdn.net/wtq493841534/article/details/5452720 中国剩余定理 中国剩余定理可以描述为: 若某数x分别被d1、、…、dn除得的余数为r1、r2、…、rn,则可表示为下式:xR1r1R2r2…RnrnRD其中R1是d2、d3、…、dn的公…

关闭浏览器前提示_win7系统ie总弹出查看和跟踪下载的关闭方法

今天小编给大家分享的是win7系统ie总弹出查看和跟踪下载的关闭方法,使用ie浏览器上网的时候,有些用户会遇到ie总弹出查看和跟踪下载的窗口,很多用户想关闭掉此提示,却不知如何关闭查看和跟踪下载的窗口,那么请参照以下…

html引入百度地图报错,vue引入百度地图BMapGL,或者其他个性化地图

3.jpgvue的百度地图早就有vue-baidu-map这里就不赘述了,自己去直接对着API写就好了,基本上已经满足绝大多数需求了还简单方便。vue-baidu-map 传送门 https://dafrok.github.io/vue-baidu-map/#/zh/index这里主要是在vue里面引入BMapGL,或者其…

排序千万级数据_从千万级房产成交量排名,窥探中国城市的真实家底

原标题:从千万级房产成交量排名,窥探中国城市的真实家底 文/孙不熟 来源/城市战争 如果你有1000万以上的买房预算,你的选择其实很少,总共不超过10个城市,这就是中国城市和楼市的真实家底。 昨天推送了一篇《…

html 实现列表组并排,列表组--自定义列表组

Bootstrap框加在链接列表组的基础上新增了两个样式:☑list-group-item-heading:用来定义列表项头部样式☑list-group-item-text:用来定义列表项主要内容这两个样式最大的作用就是用来帮助开发者可以自定义列表项里的内容,如下面的…

queryselectorall 怎么取name_用这个方法,我爬取了《王者荣耀》《英雄联盟》等游戏皮肤图片...

本文简介:本文使用Python制作爬虫,来爬取《英雄联盟》《王者荣耀》《神之浩劫》等游戏官方网站的英雄皮肤图片。可以作为新手爬虫的练手实战案例!!爱打游戏的各位肯定也是对游戏里面制作精美,妩媚无比或是帅气逼人的皮…

云端计算机可以玩游戏么,手机掌上云电脑是什么?为什么可以玩PC游戏?

原标题:手机掌上云电脑是什么?为什么可以玩PC游戏?经常会在一些短视频平台上看到别人用云电脑的应用在手机上玩PC游戏,那么这个掌上云电脑的应用到底是什么呢?为什么可以玩PC游戏呢?按照以往的理解&#xf…

计算机组策略怎么设置远程桌面,组策略 之   自动启用客户端远程桌面功能

在企业里进行管理的时候,有时需要利用远程桌面来管理客户端计算机,在一般情况下,往往需要客户端启用此功能,有没有好的办法,让客户端自动启用呢?当然可以,我们可以通过组策略的形式来完成。实施…

华北水利水电大学c语言程序设计四_我校代表队在“中国高等计算机大赛——团体程序设计天梯赛” 中喜获佳绩...

近日,第四届“中国高校计算机大赛——团体程序设计天梯赛”全国总决赛获奖名单公布,我校以全国高校排名第84位,河南省高校第4名的成绩获得河南省高校二等奖。我校派出的“NCWU_面壁者”,“NCWU_弹星者”和“NCWU_执剑人”三支队伍…

当我不再依赖你的时候说说_不要依赖任何人说说 不要指望别人的经典话

1、静下心慢慢变得沉稳,不再依赖任何人, 珍惜身边人 ,不强求不勉强每天都要很开心。2、的确没什么人可以陪你一辈子,所以在那些难熬的日子过去之后,将会不再依赖任何人成长。3、自己一个人走在路上,才发现依…

android 版本更新工具类_报表分析工具FastReport .Net 2021年超大版本更新,实现了对.NET 5的支持...

在FastReport .NET 2021.1的新版本中,我们实现了对.NET 5的支持。添加了新条形码-Deutsce Post Leitcode。将RTF转换为报告对象的算法已得到显着改进。并且还添加了用于转换数字的新功能。欢迎下载体验。(点击下方按钮下载)立即点击下载FastR…

poj2186Popular Cows(Kosaraju算法--有向图的强连通分量的分解)

1 /*2 题目大意:有N个cows, M个关系3 a->b 表示 a认为b popular;如果还有b->c, 那么就会有a->c 4 问最终有多少个cows被其他所有cows认为是popular!5 6 思路:强连通分量中每两个节点都是可达的&#xff…