mysql的数据迁移大致可分为两种:
1.通过mysqldump工具备份数据,然后导入到新的数据库中
导出:
mysqldump -uroot -p --all-databases > /backup/mysqldump/all.db(备份所有数据库)
mysqldump -uroot -p test > /backup/mysqldump/test.db(备份指定数据库)
mysqldump -uroot -p mysql db event > /backup/mysqldump/2table.db 备份指定数据库指定表(多个表以空格间隔)
mysqldump -uroot -p test --ignore-table=test.t1 --ignore-table=test.t2 > /backup/mysqldump/test2.db(备份指定数据库排除某些表)
以上语句加上--single-transaction参数可解决锁表问题。(该参数仅适用于InnoDB引擎。)
导入:
mysqladmin -uroot -p create db_name
mysql -uroot -p db_name < /backup/mysqldump/db_name.db
2.通过Xtrabackup工具实现数据迁移
#安装yum仓库
yum install http://www.percona.com/downloads/percona-release/redhat/0.1-6/percona-release-0.1-6.noarch.rpm
#安装Percona XtraBackup
yum install percona-xtrabackup-24
2.1完全备份
xtrabackup --user=root --password=centos --backup --target-dir=/backup/fullback
拷贝到远程主机:scp -r /backup/fullback x.x.x.x:/backup/fullback
以下步骤在备份主机执行
2.2准备备份
xtrabackup --prepare --target-dir=/backup/fullback
2.3.恢复全备
systemctl stop mysqld
rm -rf /var/lib/mysql/*(删除所有数据库的数据文件,不然会报错)
xtrabackup --defaults-file=/etc/my.cnf --copy-back --target-dir=/backup/fullback
chown -R mysql:mysql /var/lib/mysql
systemctl start mysqld