전체 / 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.