迁移Linux MySQL数据可以通过多种方法实现,以下是一些常见的步骤和方法:
备份数据库
使用mysqldump命令备份整个数据库或特定数据库。
mysqldump -u username -p database_name > backup.sql
这将提示你输入密码,并将数据库备份到backup.sql文件中。
传输备份文件
将备份文件传输到目标服务器。可以使用scp、rsync或其他文件传输工具。
scp backup.sql user@target_server:/path/to/destination
在目标服务器上恢复数据库 在目标服务器上登录MySQL并恢复数据库。
mysql -u username -p
然后执行:
CREATE DATABASE database_name;
USE database_name;
SOURCE /path/to/destination/backup.sql;
安装Percona XtraBackup 在源服务器和目标服务器上安装Percona XtraBackup。
sudo apt-get install percona-xtrabackup-24
准备备份 在源服务器上执行完整备份。
xtrabackup --backup --target-dir=/path/to/backup --user=username --password=password
准备备份(可选) 如果需要,可以在目标服务器上准备备份以使其可读。
xtrabackup --prepare --target-dir=/path/to/backup
恢复备份 将备份文件复制到目标服务器并恢复。
xtrabackup --copy-back --target-dir=/path/to/backup --datadir=/var/lib/mysql
修改权限 确保MySQL用户对数据目录有适当的权限。
chown -R mysql:mysql /var/lib/mysql
重启MySQL服务 重启MySQL服务以应用更改。
systemctl restart mysql
配置主服务器
在源服务器上编辑my.cnf文件,启用二进制日志并设置唯一的服务器ID。
[mysqld]
server-id=1
log_bin=mysql-bin
创建复制用户 在源服务器上创建一个用于复制的用户。
CREATE USER 'replicator'@'%' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'replicator'@'%';
FLUSH PRIVILEGES;
获取二进制日志位置 锁定表并获取当前的二进制日志位置。
FLUSH TABLES WITH READ LOCK;
SHOW MASTER STATUS;
配置目标服务器
在目标服务器上编辑my.cnf文件,设置唯一的服务器ID。
[mysqld]
server-id=2
relay_log=mysql-relay-bin
log_bin=mysql-bin
read_only=1
启动复制 在目标服务器上登录MySQL并配置复制。
CHANGE MASTER TO
MASTER_HOST='source_server_ip',
MASTER_USER='replicator',
MASTER_PASSWORD='password',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=123456;
START SLAVE;
解锁表 在源服务器上解锁表以允许写操作。
UNLOCK TABLES;
选择适合你需求和环境的方法进行数据迁移。