Mysql(三) ------数据迁移备份(针对数据量很大的情况)

新跳槽了一家公司,上来就是数据库调优和数据迁移。调优那部分后面再补上来。公司目前用的是5.1的数据库,很老了,而且随着业务的发展需要做读写分离和主从复制。想把所有的数据都挪到新库上去。但这个库大概有60G的数据。
主要思路:

1.创建用户,并授权

2.搭建主从,做到主从同步,数据目前先保持一致,在切换主从同步切换ip
Mysql5.1已有数据量了,为保证数据的一致性。故需要锁库,等数据导入后再解锁

3.需要注意从库和主库的引擎,字符集
show variables like ‘character_set%‘; --查看当前环境的character_set
show variables like ‘collation%‘; --查看当前的collation

4.数据搬完后做数据校验,校验一致性
采用pt-table-checksum 进行校验用pt-table-sync恢复一致
Zabbix定时监控mysql是否一致,如果不一致,调用脚本自动修复
统计了几种方式:
一·版本相同的数据库

1.如果版本相同的话,直接停库,拷贝(cp、tar,gzip,cpio) 把mysql的整个目录打包发送到新的主机上。
这个是最简单粗暴的,也是最有效,而且数据也是很一致的

2。也可以采用percona-xtrabackup 物理备份 + binlog
借助第三方软件备份,好处:它能对InnoDB和XtraDB存储引擎的数据库非阻塞地备份。它不暂停服务创建Innodb热备份;
为mysql做增量备份;在mysql服务器之间做在线表迁移;使创建replication更加容易;备份mysql而不增加服务器的负载。

3.mysqldump备分
a.主机A备份成sql文件,在导入到主机B数据库里,这种方式需要长时间锁表,而且需要大量时间
mysqldump -uvnum [email protected] --force data_base_name > /data/data_base_name.sql
或直接传到对应主机下的sql文件,60个G的话,导出导入时间差不多要五个小时左右,太慢了

    b.tar备份
    备份并压缩
    mysqldump -uusername -ppassword dbname | gzip > /data/wwwroot/www/dbname.sql.gz
解压并还原
    gunzip < /root/dbname.sql.gz | mysql -uusernameb -ppasswordb dbnamenew
    时间相对减少点

    最佳方式介绍
    还有一种直接将数据库A直接转移到数据库B的方式(在服务器A中执行)但要求网速一定要好
    mysqldump --default-character-set=utf8mb4 --host=127.0.0.1 -uusername -ppassword
    1.必须保证服务器B的数据库能够服务器A访问,且B服务器存在对应的库
    2.--opt命令可选,建议加上。等同于指定 --add-drop-tables--add-locking --create-option --disable-keys--extended-insert --lock-tables --quick --set-charset。它可以给出很快的转储操作并产生一个可以很快装入MySQL服务器的转储文件。
    3.--default-character-set=utf8mb4 指定该数据库连接的字符类型。如果服务器默认未utf8的话,导出的数据可能会丢失四字节的unicode信息(表情之类的)
    4.-C 客户端和服务器之间启用压缩传递所有信息。当然得要有咯。

mysql通过命令行快速转移数据库,一个命令(mysqldump)完成数据备

原文地址:https://blog.51cto.com/14444287/2419797

时间: 2024-08-01 16:16:39

Mysql(三) ------数据迁移备份(针对数据量很大的情况)的相关文章

es 在数据量很大的情况下(数十亿级别)如何提高查询效率啊?

面试题es 在数据量很大的情况下(数十亿级别)如何提高查询效率啊?面试官心理分析这个问题是肯定要问的,说白了,就是看你有没有实际干过 es,因为啥?其实 es 性能并没有你想象中那么好的.很多时候数据量大了,特别是有几亿条数据的时候,可能你会懵逼的发现,跑个搜索怎么一下 5~10s,坑爹了.第一次搜索的时候,是 5~10s,后面反而就快了,可能就几百毫秒.你就很懵,每个用户第一次访问都会比较慢,比较卡么?所以你要是没玩儿过 es,或者就是自己玩玩儿 demo,被问到这个问题容易懵逼,显示出你对

关于数据量很大的题目

这段时间写多校,碰到很多数据量很大的题目,有的有规律,有的需要一定的预处理以及一些好玩的算法.那么怎么区分呢?首先看下题目给的限时,如果比较多,那么就需要一定预处理啦:再就是看下rank,如果一道题目突然很多人短时间写出来,一定是规律题,而且是巧妙的规律题.在说一下关于贡献这个东西,有些题目需要枚举,我们在枚举的时候,通常题目表面信息给的枚举是满足不了时间复杂度的,所以我们需要选取合适的枚举对象..这个也很重要.

关于android中gridview数据量很大的时候,在加载gridview时会出现卡顿的现象

好的解决办法就是先加载一定数量的数据,然后在最下方提示正在加载! 动态加载就是把放入adapter中的数据分好几次加载.在用户拖动gridview时再加载一定的数据,和sina微博的客户端类似. 给gridview添加OnScrollListener监听事件默认会覆盖下面两个方法: 下面列举个列子: <com.ui.widget.LazyGridView xmlns:android="http://schemas.android.com/apk/res/android" andr

斯坦福大学公开课机器学习:machine learning system design | data for machine learning(数据量很大时,学习算法表现比较好的原理)

下图为四种不同算法应用在不同大小数据量时的表现,可以看出,随着数据量的增大,算法的表现趋于接近.即不管多么糟糕的算法,数据量非常大的时候,算法表现也可以很好. 数据量很大时,学习算法表现比较好的原理: 使用比较大的训练集(意味着不可能过拟合),此时方差会比较低:此时,如果在逻辑回归或者线性回归模型中加入很多参数以及层数的话,则偏差会很低.综合起来,这会是一个很好的高性能的学习算法. 原文地址:https://www.cnblogs.com/chenwenyan/p/8326027.html

Mysql数据迁移备份

新跳槽了一家公司,上来就是数据库调优和数据迁移.调优那部分后面再补上来.公司目前用的是5.1的数据库,很老了,而且随着业务的发展需要做读写分离和主从复制.想把所有的数据都挪到新库上去.但这个库大概有60G的数据.主要思路: 1.创建用户,并授权 2.搭建主从,做到主从同步,数据目前先保持一致,在切换主从同步切换ipMysql5.1已有数据量了,为保证数据的一致性.故需要锁库,等数据导入后再解锁 3.需要注意从库和主库的引擎,字符集show variables like 'character_se

mysql学习之旅-数据迁移-备份-恢复

1.数据迁移 将/tmp/t3.txt中的数据导入到t3表中,数据以逗号为分割符 load data infile ‘/tmp/t3.txt’ into table t3 fields terminated by ','; 将table2表中的数据导出为文件data.txt,以逗号为分隔符 SELECT * INTO OUTFILE 'data.txt' ->     FIELDS TERMINATED BY ',' ->     FROM table2; #####在mysql命令行内执行

[Sqlite]--&gt;数据迁移备份--从低版本3.6.2到高版本3.8.6

数据迁移 一, 使用.dump命令 命令帮助提示 .dump ?TABLE? ...      Dump the database in an SQL text format If TABLE specified, only dump tables matching LIKE pattern TABLE. 理解分析:       使用.dump命令可以将数据库对象导出成SQL格式.不带任何参数时,.dump将整个数据库导出为数据库定义语言(DDL)和数据库操作语言(DML)命令,适合重新创建数据

Mysql使用innobackupex在线备份方案(全量+增量)操作记录

在日常的linux运维工作中,对mysql数据库的备份是非常重要的一个环节.关于mysql的备份和恢复,比较传统的是用mysqldump工具.今天这里介绍下另一款mysql备份工具innobackupex,利用它对mysql做全量和增量备份,仅仅依据本人实战操作做一记录,如有误述,敬请指出~ 一.innobackupex的介绍Xtrabackup是由percona开发的一个开源软件,是使用perl语言完成的脚本工具,能够非常快速地备份与恢复mysql数据库,且支持在线热备份(备份时不影响数据读写

数据量很大的排序问题 大量数据如何排序

某天参加阿里面试,技术面的时候,面试官问了排序问题: 问题一:若有1T的数据,比如 只有两列,身份证号和姓名 需要实现由大到小排序,你用什么办法,能否做到 复杂度为O(n),说说你的思路和想法? 问题二:有10个G的数据,也是一样,比如两列,身份证号和姓名,如果两条数据一样,则表示该两条数据重复了,现在给你512的内存,把这10G中重复次数最高的10条数据取出来. 我的思路是:这么大的数据,用普通的排序一定不行, 可以这样,用身份证号的前三位切割这个数据,这样会分成999份, 每一份再进行排序,