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