전체 / var / lib / mysql 폴더를 다른 서버로 복사 할 수 있습니까? (mysql vs mariadb, 다른 버전)


9

예전에는 MySQL과 함께 Linux 시스템 (LMDE)을 사용했습니다. 시스템은 대부분의 데이터베이스에 innodb_file_per_table을 사용했습니다. (LMDE의 "최신"버전에 관계없이 버전에 대해 확실하지 않음)

MariaDB와 함께 새로운 시스템 (Manjaro / Arch)을 사용하고 있습니다.

$ mysql --version
mysql  Ver 15.1 Distrib 10.0.15-MariaDB, for Linux (x86_64) using readline 5.1

오래된 시스템에는 대용량 데이터베이스가 많았으므로 mysqldump로 복사하지 않아도됩니다. 이전 시스템에서 / var / lib / mysql 폴더를 복사하는 것이 좋습니다.

이것이 가능한가?


이상한. 이제 나는 정반대의 방향, 아치에서 민트 (우분투 기반)가 필요하며 다시 우둔합니다. / var / lib / mysql을 교체 한 후 "시작 : 작업을 시작하지 못했습니다"가 표시됩니다.
— donquixote

답변:


20

네 가능합니다. (질문을 작성하면서 이것을 알아 냈습니다)

  1. 새 아치 시스템에 MariaDB를 설치하고 작동하는지 확인하십시오.
    /etc/mysql/my.cnf를 변경하십시오. 예 : innodb_file_per_table
    (이 중 더 많은 것은이 질문의 범위를 벗어났습니다)
  2. sudo systemctl stop mysqld.
    (두 서버에서 모두 중지하고 싶지만 제 경우에는 다른 서버가 이미 꺼져 있습니다)
  3. / var / lib / mysql 폴더의 이름을 바꾸십시오 (예 : / var / lib / _mysql).
  4. 이전 데비안 (LMDE) 시스템에서 이전 / var / lib / mysql 폴더를 복사하십시오.
  5. / var / lib / mysql의 모든 항목에 대해 파일 소유권을 mysql : mysql로 ​​복원하십시오.
    sudo chown -R mysql:mysql /var/lib/mysql
  6. sudo systemctl start mysqld.
    ->Job for mysqld.service failed. See "systemctl status mysqld.service" and "journalctl -xe" for details.
  7. sudo systemctl status mysqld.
    -> 서비스가 실행 중이지만 일부 문제가 발생했음을 나타냅니다. 이것이 mysql_upgrade의 목적입니다.
  8. mysql_upgrade -u root -p
    노트:
    • 이전 시스템의 mysql 루트 비밀번호입니다!
    • 잘못된 데이터베이스 이름으로 인해 / var / lib / mysql에서 하나의 남은 폴더를 제거해야했습니다.
    • / var / lib / mysql / mysql_upgrade_info 파일은 쓰기 가능해야합니다.
    • 프로세스는 시간이 걸릴 수 있습니다.
  9. sudo systemctl restart mysqld.

주의 사항 : 분명히 낮은 MySQL 버전으로 다운 그레이드 할 수 없습니다. 데이터베이스를 MySQL 5.5 (또는 해당 MariaDB)로 마이그레이션하려고했는데 서버가 시작되지 않았습니다. 대신 MySQL 5.6을 설치해야했습니다. (MySQL 5.6에 해당하는 MariaDB는 Linux 배포판에서 사용할 수 없습니다).


1
+1 인상적입니다. 그러나 : 단순히 양쪽에서 mysql을 중지하고 rsync-ing / var / lib / mysql을 시작한 다음 시작하는 것만으로는 충분하지 않습니까?
— peterh-Reinstate Monica

4
또한 서버 구성이이 프로세스로 복사되지 않았 음을 알아야합니다. 새로운 기본값 중 일부를 그대로 사용하고 싶을 수도 있지만 맞춤 변수도 복사해야 할 /etc/my.cnf것입니다.
— 리처드

@Richard : 맞습니다. 사실 나는이 중 일부를 수행해야했는데, 내가 바꾼 것을 정확히 기억하지 못합니다. 한 가지 변경 사항은 innodb_file_per_table을 활성화했다는 것입니다.
— donquixote

@PeterHorvath 아니요, mysql_upgrade가 필요했습니다.
— donquixote

방금 말해서, 나는 Manjaro에서 Mint로 똑같이했습니다. 작동했지만 MariaDB 5.5가 아닌 MySQL 5.6을 사용하는 것이 중요했습니다.
— donquixote
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.