我的编程空间,编程开发者的网络收藏夹
学习永远不晚

MySQL复制数据库

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

MySQL复制数据库

MySQL复制数据库的办法非常多。针对不同的场景,选择相应的办法。
在可以停止写入,不用保证数据一致性,需要速度的情况下,可以通过物理复制的办法。以下给出脚本:

#!/bin/bash
datadir=/data/mysql
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/root/bin:/usr/local/mysql/bin

usage(){
echo -e "Usage: $0 db1 db2\nCopy db1 to db2.\nNote: if db2 exists,drop and recreate it."
exit 1
}
if [ $# -ne 2 ]; then usage; fi

[ -d ${datadir}/$2 ] && rm -rf ${datadir}/$2/*
mysql --login-path=recover -e "drop database if exists $2;create database $2;"
for i in `ls -1 ${datadir}/$1/ | grep .ibd | awk -F '.' '{print $1}'`
do
mysql --login-path=recover -e "create table $2.$i like $1.$i;ALTER TABLE $2.$i DISCARD TABLESPACE;flush tables $1.$i for export;system cp -pf ${datadir}/$1/$i.{ibd,cfg} ${datadir}/$2/; unlock tables;" 
mysql --login-path=recover -e "set foreign_key_checks=0;alter table $2.$i import tablespace;analyze table $2.$i;" 
done
rm -rf ${datadir}/*cfg
exit 0

具体实现可以参阅官方文档。

其中实现很简单,但过程发现了一些有意思的东西。
开始的时候,脚本中并没有[ -d ${datadir}/$2 ] && rm -rf ${datadir}/$2/*这一句。在第一次执行脚本没什么毛病。但是,当对源库修改后,再次执行,这个时候目标库锁定了。查看进程发现System lock,错误日志提示Orphan table encountered during DROP DATABASE. This is possible if 'db2/t1.frm' was lost。
MySQL复制数据库

MySQL复制数据库
这个MySQL服务不能正常shutdown,通过kill掉进程重启。
重启服务过后,仍然不能删除目标库。需要删除目标库目录下的所有文件,可删除目标库。

以上问题在5.6系列会发生,5.7和8.0系列并无此问题。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

MySQL复制数据库

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

linux mysql 数据库复制

一、主服务器配置1、配置文件my.cnf的修改[root@localhost mysql]# vim /etc/my.cnf #在[mysqld]中添加:server-id=1log_bin=master-binlog_bin_index=master-bin
linux mysql 数据库复制
2021-10-29

mysql数据库如何复制表

在MySQL中,可以使用CREATE TABLE … SELECT语句来复制表。下面是一个示例:CREATE TABLE new_tableSELECT *FROM original_table;这将创建一个名为new_table的新
mysql数据库如何复制表
2024-04-09

MySQL INSERT锁与数据库复制技术

MySQL中的INSERT锁是指在进行INSERT操作时对表进行加锁的机制。当一个线程执行INSERT操作时,会对要插入的数据行进行加锁,其他线程需要等待该INSERT操作完成后才能对该数据行进行操作。数据库复制技术是指将一个数据库的数据
MySQL INSERT锁与数据库复制技术
2024-08-19

mysql复制数据库的方法是什么

MySQL复制数据库的方法有多种,以下是其中一种常用的方法:使用mysqldump命令备份源数据库:mysqldump -u username -p password source_database > dump.sql在目标服务器上创建
mysql复制数据库的方法是什么
2024-04-09

linux系统mysql数据库redis主从复制

第一章: 关系型和非关系型1.实质。非关系型数据库的实质:非关系型数据库产品是传统关系型数据库的功能阉割版本,通过减少用不到或很少用的功能,来大幅度提高产品性能。2.价格。目前基本上大部分主流的非关系型数据库都是免费的。而比较有名气的关系型数据库,比如Orac
linux系统mysql数据库redis主从复制
2018-01-22

mysql数据库恢复

目录1.数据库恢复基本事项2.利用source命令恢复数据库2.1.使用source命令恢复数据库的说明2.2.恢复演示3.利用MySQL命令恢复(标准)3.1.使用MySQL命令恢复基本实践3.2.使用开发人员提交的SQL语句恢复文件3.3.针对压缩的备份数
mysql数据库恢复
2018-08-16

编程热搜

目录