linux

如何迁移Linux MariaDB数据

小樊
45
2025-06-29 09:59:59
栏目: 云计算

迁移Linux MariaDB数据可以通过多种方式进行,以下是一些常见的方法:

方法一:使用mysqldump工具

  1. 备份数据库 使用mysqldump命令备份整个数据库或特定数据库。

    mysqldump -u username -p database_name > backup.sql
    

    或者备份所有数据库:

    mysqldump -u username -p --all-databases > all_databases.sql
    
  2. 传输备份文件 将生成的SQL文件传输到目标服务器。

    scp backup.sql user@target_server:/path/to/destination/
    
  3. 恢复数据库 在目标服务器上使用mysql命令恢复数据库。

    mysql -u username -p database_name < /path/to/destination/backup.sql
    

方法二:使用rsync进行文件复制

  1. 停止MariaDB服务 在源服务器上停止MariaDB服务以确保数据一致性。

    sudo systemctl stop mariadb
    
  2. 复制数据目录 使用rsync命令复制MariaDB的数据目录到目标服务器。

    sudo rsync -avz /var/lib/mysql/ user@target_server:/var/lib/mysql/
    
  3. 修改权限 确保目标服务器上的MySQL用户对数据目录有适当的权限。

    sudo chown -R mysql:mysql /var/lib/mysql/
    
  4. 启动MariaDB服务 在目标服务器上启动MariaDB服务。

    sudo systemctl start mariadb
    

方法三:使用LVM快照

如果源服务器和目标服务器都使用LVM(逻辑卷管理),可以利用LVM快照进行迁移。

  1. 创建快照 在源服务器上创建LVM快照。

    sudo lvcreate --size 10G --snapshot --name mariadb_snapshot /dev/vg_name/lv_name
    
  2. 挂载快照 挂载快照到一个临时目录。

    sudo mount /dev/vg_name/mariadb_snapshot /mnt/snapshot
    
  3. 复制数据 将快照中的数据复制到目标服务器。

    sudo rsync -avz /mnt/snapshot/ user@target_server:/path/to/destination/
    
  4. 删除快照 复制完成后删除快照。

    sudo umount /mnt/snapshot
    sudo lvremove /dev/vg_name/mariadb_snapshot
    

方法四:使用MariaDB复制功能

如果需要在两台服务器之间实时同步数据,可以使用MariaDB的复制功能。

  1. 配置主服务器 在源服务器上配置my.cnf文件,启用二进制日志并设置唯一的服务器ID。

    [mysqld]
    server-id = 1
    log_bin = /var/log/mysql/mysql-bin.log
    
  2. 创建复制用户 创建一个用于复制的用户并授予权限。

    CREATE USER 'replicator'@'%' IDENTIFIED BY 'password';
    GRANT REPLICATION SLAVE ON *.* TO 'replicator'@'%';
    FLUSH PRIVILEGES;
    
  3. 获取二进制日志位置 锁定表并获取当前的二进制日志位置。

    FLUSH TABLES WITH READ LOCK;
    SHOW MASTER STATUS;
    
  4. 配置从服务器 在目标服务器上配置my.cnf文件,设置唯一的服务器ID并指定主服务器的信息。

    [mysqld]
    server-id = 2
    relay_log = /var/log/mysql/mysql-relay-bin.log
    log_bin = /var/log/mysql/mysql-bin.log
    read_only = 1
    
  5. 启动复制 在目标服务器上启动复制进程。

    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;
    
  6. 解锁表 解锁表以允许写操作。

    UNLOCK TABLES;
    

选择适合你需求的方法进行数据迁移。对于一次性迁移,mysqldumprsync是最常用的方法;而对于实时同步,MariaDB复制功能更为合适。

0
看了该问题的人还看了