在网站搬迁的过程中,最重要也是最麻烦的就是数据库了,数据库文件一旦丢失而备份又不灵光时,网站会面临灭顶之灾。那么搬迁数据库有些什么办法呢?现在一起来探讨。 通过phpmyadmin备份由于mysql数据库是通过phpmyadmin在进行管理,因此用phpmyadmin进行备份也是顺理成章。但通过phpmyadmin导出的备份文件还只能通过phpmyadmin软件还原回去,而且这个软件默认只允许还原小于2M的备份来源。因此如果网站数据少,小于2M可以直接备份还原;数据较多备份文件过大时,有两种方法解决:第一种是分段备份,在phpmyadmin的备份选项中设置为每个备份文件大小不超过2M,第二种是在还原空间的phpmyadmin中修改软件源文件进行设置,改为对还原文件没有大小限制,相应的方法可以在网上搜索。应该说此种备份方法相对麻烦,且需要自己购有服务器或vps,否则根本没有相关权限,一般情况下不建议选择。 通过网站程序自带功能进行备份还原现在使用到mysql数据库的网站程序有DZ,PW,DEDE等,这些程序后台都有备份还原功能,因为是自带的功能,兼容性好,方便快捷。不过有一个问题是要先重新安装网站程序,再进入后台选择还原已经保存的备份文件进行还原,目前所有的主流程序都提倡这种方法。 通过备份王等软件进行备份用备份王等软件进行备份方便快捷,只要上传备份软件到空间按提示一步步操作就可以了。但是要注意新老空间数据库用户名和密码不统一,网站文件打包过来后因没有修改连接文件,还原数据库是好了,可是前台会提示数据库连接错误,网站从而出现打不开的情况。所以要学会修改网站配置文件,大多是由config和data.php文件来控制,将这些文件中的连接信息设置为正确的连接信息,避免网站不能打开。 直接在mysql文件夹中复制文件如果是独立服务器,可以直接进入服务器mysql文件夹下的DATA文件夹找到数据库文件复制后再粘贴到新空间。但这样有个很大的隐患:备份的目标数据库如果正在被使用,粘贴到新空间后会出错。不提倡这种方法。
② centos 7.2 迁移 mysql 数据库文件
原目录:/var/lib/mysql
新目录:/data/mysql
1.将/smp/mysql/mysql.sock文件复制到/data/db/mysql.sock,并停止运行mysql(注意,需将
mysql.sock文件复制后,才能停止mysql)
/smp/mysql/bin/mysqladmin -uroot -p shutdown
2.data目录迁移
cp -a /var/lib/mysql/* /data/mysql
3.修改/etc/my.cnf
socket=/data/db/mysql.sock(注意将原来的socket文件注释掉,方便回滚)
datadir=/data/db/data
4.建立软链接
ln -s /data/db/mysql.sock /var/lib/mysql/mysql.sock
③ 如何迁移MySQL数据库
MySQL数据库迁移
MySQL数据库迁移(数据文件直接迁移)
在今年10月下旬的时候,公司的服务器需要迁移,其中涉及到了MySQL数据库迁移。查看了一下MySQL数据文件的大小,接近60G的大小(实际数据并没用那么多)。由于服务器上业务需要,要尽量减少服务器迁移时的损失。所以迁移时间选在了晚上零点开始,而且要尽量减少迁移所用的时间。
在迁移之前有三种方案:
数据库直接导出,拷贝文件到新服务器,在新服务器上导入。
使用【MySQL
GUI
Tools】中的
MySQLMigrationTool。
数据文件和库表结构文件直接拷贝到新服务器,挂载到同样配置的MySQL服务下。
我在我的电脑上用虚拟机测试后,选中了占用时间最少的第三种方案。下面是三种方案的对比:
第一种方案的优点:会重建数据文件,减少数据文件的占用空间。
第一种方案的缺点:时间占用长。(导入导出都需要很长的时间,并且导出后的文件还要经过网络传输,也要占用一定的时间。)
第二种方案的优点:设置完成后传输无人值守
第二种方案的缺点:
设置繁琐。
传输中网络出现异常,不能及时的被发现,并且会一直停留在数据传输的状态不能被停止,如不仔细观察不会被发现异常。
传输相对其他fang时间长。
异常后很难从异常的位置继续传输。
第三种方案的优点:时间占用短,文件可断点传输。操作步骤少。(绝大部分时间都是在文件的网络传输)
第三种方案的缺点:可能引起未知问题,暂时未发现。
下面介绍一下第三种方案d迁移步骤:
保证Mysql版本一致,安装配置基本一致(注意:这里的数据文件和库表结构文件都指定在同一目录data下)
停止两边的Mysql服务(A服务器--迁移-->B服务器)
删除B服务器Mysql的data目录下所有文件
拷贝A服务器Mysql的data目录下除了ib_logfile和.err之外的文件到B服务器data下
启动B服务器的Mysql服务,检测是否发生异常
迁移完成后,服务启动正常,未发现其他异常问题。
备注:经测试,源mysql的安装目录及数据文件目录
可以与
目标Mysql的安装目录及数据文件目录
不一致。
此时,只需要拷贝您所需移动的dbname(如上:pa、testdb)及'mysql'和'ibdata1',即可。
④ CentOS7下mysql数据库的迁移
想知道你的mysql装在哪里吗?CentOS7一般是装在/var/lib/mysql中的
在完成迁移之前,先用下面的指令来停止mysqld服务
service mysqld stop,或者直接点sudo systemctl stop mysqld
然后用df-h指令看服务器上剩余空间是多少,假设我们新挂了一块500G的硬盘到/data上
那么请把mysql整个文件夹拷贝到/data中,像下面这样:
sudo cp -rf /var/lib/mysql /data/mysql,拷完以后原来的mysql文件夹就可以删除了
然后再修改/etc/my.cnf,这个也是需要su的:
sudo vi /etc/my.cnf
里面有一个字段叫[mysqld],将datadir和socket修改成这样:
datadir=/data/mysql
socket=/data/mysql/mysql.sock
接下来,有的人说要修改/etc/init.d/mysqld,但我的服务器不需要,直接通过
service mysqld start就可以启动SQL服务了,远程也可以连接上,但是:
当你使用终端mysql -u root -p的时候,就会报下面这个错:
Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock'
这个时候,你有两种解决办法,一种是造一个软连接
ln -s /data/mysql/mysql.sock /var/lib/mysql/mysql.sock,原因是你已经删掉之前的mysql目录了
另外一种办法,是在/etc/my.cnf下面新建一个新字段:
[mysql]
socket=/data/mysql/mysql.sock
第一种方法不需要重启mysql server,第二种方法需要重启mysql server,
然后,你就可以成功地从终端里进入mysql了
敲黑板,不要在[mysql]下面自做主张地写上datadir=/data/mysql,这样会导致本地命令行登录时报错:Unknown Variable: datadir=/data/mysql
⑤ 怎样用命令行把MySQL数据库迁移到另一台Linux服务器
1、用mp命令备份数据库。
# mysqlmp -u root -p dbfile > dbfile.sql
2、用rsync从新服务器获得备份的文件(SCP或WGET也可以)。
# rsync -avr root@myolddbserver:/home/mympfolder/dbfile.sql
3、登陆新服务器的mysql客户端。
# mysql -u root -p
4. 建立数据库。
mysql> create database dbfile;
5. 选择新数据库;
mysql> use dbfile;
6. 加载数据;
mysql> source dbfile.sql
或者
在Mysql程序中有我自己的一个数据库共5张表,里边数据不算太多。我现在想把他们全部弄到另一台电脑中去,该怎么弄,如果不用其它的软件工具,只用Mysql自已的程序不知可否?
注:不用考虑操作系统。
---------------------------------------------------------------
在dos命令提示符下使用mysqlmp命令进行备份.
如下:
C:\Documents and Settings\Administrator>mysqlmp yinshi >c:\\backup.txt -uroot
-p12142022
说明:yinshi是我的数据库名,里面有5张表; c:\\backup.txt 是我备份出来文件名和路径;
-u,-p参数后面跟的分别是用户名和密码.
将你备份出来的文件我这里是backup.txt拷贝到另一台机上,再在dos命令提示符下用mysql命令,进行恢复,如下:
C:\Documents and Settings\Administrator>mysql < c:\\backup.txt -uroot -p12142022
or
mysql>source backup.txt;(这里backup.txt在放在data目录下)
---------------------------------------------------------------
如果另一台机器上也安装了mysql,可以直接导入
C:\mysql\bin>mysqlmp -h172.20.6.250 -udeveloper -p123456 --opt server_databasename | mysql -hlocalhost -uroot -C obj_databasename
172.20.6.250源服务器ip
developer源服务器连接用户名
---------------------------------------------------------------
有两种办法。
1、在B机器上装mysql。
将A机器上的mysql/data下的你的数据库目录整个拷贝下来。
将B机器上的mysql服务停止。
找到B机器上的mysql/data目录,将你拷贝的目录粘贴进去,然后启动mysql服务就可以了。
2、使用SQL语句备份和恢复
你可以使用SELECT INTO OUTFILE语句备份数据,并用LOAD DATA INFILE语句恢复数据。这种方法只能导出数据的内容,不包括表的结构,如果表的结构文件损坏,你必须要先恢复原来的表的结构。
语法:
SELECT * INTO {OUTFILE | DUMPFILE} ’file_name’ FROM tbl_name
LOAD DATA [LOW_PRIORITY] [LOCAL] INFILE ’file_name.txt’ [REPLACE | IGNORE]
INTO TABLE tbl_name
SELECT ... INTO OUTFILE ’file_name’
⑥ mysql把一个数据库中的数据复制到另一个数据库中的表 2个表结构相同
1、使用软件Navicat就可迁移复制数据库,打开Navicat,右键点击左边空白的地方,点击New Connection下的MySQL,创建一个服务器的连接,下面将演示把本地的数据迁移到服务器:
⑦ mysql5.1的数据库如何迁移至mysql5.7
安全的办法是在旧环境导出表数、在新环境建立数据库后导入表,可以使用SQL或者TXT为中间文件。
⑧ 如何迁移MySQL数据库
caching_sha2_password认证插件提供更多的密码加密方式,并且在加密方面具有更好的表现,目前MySQL8.0选用caching_sha2_password作为默认的认证插件,MySQL5.7的认证插件是MySQL_native_password。如果客户端版本过低,会造成无法识别MySQL8.0的加密认证方式,最终导致连接问题。
MySQL存储引擎现在负责提供自己的分区处理程序,而MySQL服务器不再提供通用分区支持,InnoDB和NDB是唯一提供MySQL8.0支持的本地分区处理程序的存储引擎。如果分区表用的是别的存储引擎,存储引擎必须进行修改。要么将其转换为InnoDB或NDB,要么删除其分区。通过MySQLmp从5.7获取的备份文件,在导入到8.0环境前,需要确保创建分区表语句中指定的存储引擎必须支持分区,否则会报错。
MySQL8.0的默认字符集utf8mb4,可能会导致之前数据的字符集跟新建对象的字符集不一致,为了避免新旧对象字符集不一致的情况,可以在配置文件将字符集和校验规则设置为旧版本的字符集和校验规则。
MySQL8.0启动使用的lower_case_table_names值必须跟初始化时使用的一致。使用不同的设置重新启动服务器会引入与标识符的排序和比较方式不一致的问题。
要避免MySQL8.0上的启动失败,MySQL配置文件中的sql_mode系统变量不能包含NO_AUTO_CREATE_USER。返碰
从MySQL5.7.24和MySQL8.0.13开始,MySQLmp从存储程序定义中删除了NO_AUTO_CREATE_USER。必须手动修改使用早期版本的MySQLmp创建的转储文件,以删除NO_AUTO_CREATE_USER。
在MySQL8.0.11中,删除了这些不推荐使用的兼容性SQL Mode:DB2,MAXDB,MSSQL,MySQL323,MySQL40,ORACLE,POSTGRESQL,NO_FIELD_OPTIONS,NO_KEY_OPTIONS,NO_TABLE_OPTIONS。从5.7到8.0的复制场景中,如果语句使用到废弃的SQL Mode会导致复制异常。
在执漏档谈行到MySQL8.0.3或更高版本的in-place升级时,BACKUP_ADMIN权限自动授予具有RELOAD权限的用户。
<lower_case_table_names>
https://dev.mysql.com/doc/refman/8.0/en/server-systemvariables.html#sysvar_lower_case_table_names
本文对MySQL 5.7到MySQL 8.0的升级过程中出现部分易出现问题进行整理:升级对MySQL版本的要求、升级都做了哪些内容、数据库升级做了哪些步骤以及注意事项,希望对大家版本升级有蠢迅帮助。
⑨ 怎么将mysql数据库转移到另一台电脑上。可以整个mysql安装目录一起转移么
mysql要转换到另一台机器上面,最重要的要考虑以下几个问题
1、数据库使用什么存储引擎,如果是myisam的话,可以把data目录复制移走。但如果是innodb的话,千万不要用这种方法,会存在种种问题的。至于innodb引myisam的区别,网络一下详细点。
2、本地的操作系统是否引目标操作系统相同,如果是linux与windows之间的转移,因为平台的的不台,注意大小写表名字段的兼容性。也可以在my.ini或者my.cnf中忽略大小写。
3、比较安全的做法,还是用mysqlmp的方法导出来,再用mysqlmp的方法导进去,这是一种比较保险安全兼容性高的做法,请考虑。
如果还有什么疑问,欢迎追问。
⑩ mysql数据库如何转移呢
mysql标准化的迁移工具是mysqlmp.exe、mysqlimport.exe,你运行这两个工具,使用--help就可以知道怎么使用了,他们用来把MYSQL数据库转换为文本文件,以及把文本文件导入到新的MYSQL数据库中。事实上这个文本文件可以导入到其它非MYSQL数据库里面,比如INFORMIX、DB2等,需要简单写一下SQL语句即可。
不过,我的服务器多次升级和迁移中测试发现,MYSQL数据库文件是可以拷贝的,也就是二进制兼容的,包括我在FreeBSD、LINUX、WINDOWS之间迁移数据都是成功的。