기사 디렉토리
머리말
직장에서 데이터베이스 마이그레이션 작업을 접했는데 기존의 navicate 데이터 연결 도구를 사용하면 데이터 손실과 같은 일련의 문제가 발생할 수 있으므로 mysql 및 pgsql 명령을 사용하여 내 개인 상황과 결합하여 마이그레이션을 수행합니다.Mysql 또는 pgsql은 반드시 사용하기 전에 준비하십시오.
1. mysql은 어떻게 백업을 합니까?
1.1, 데이터베이스 백업
mysqldump -u用户名 -p密码 数据库名 > 导出的文件名
例如:
mysqldump -hhostname -uroot -ppwd dataname >dataname.sql
1.2, 모든 데이터베이스 백업
mysqldump -h *.*.*.* -p -u username -p password --all-databases > /data/backup/mysql_db.sql
1.3, 테이블 백업
예를 들어:
mysqldump -hhostname -uroot -ppwd dataname specific_tabname1 specific_tabname2> dataname_specific_tabname.sql
1.4, 여러 데이터베이스 백업
mysqldump -hhostname -uusername -ppwd --databases dbname1 dbname2 dbname3 > multibackupfile.sql
1.5 데이터베이스 구조 내보내기
mysqldump -hhostname -uroot -ppwd -–add-drop-table --no-data dataname > dataname_nodata.sql
--no-data: 데이터 없음
--add-drop-table 각 create 문 앞에 drop table 명령 추가
1.6 백업 압축
2. 백업 압축
형식: mysqldump -h 호스트 IP -P 포트 -u 사용자 이름 -p 비밀번호 --데이터베이스 데이터베이스 이름 | gzip > 파일 이름
. 압축
mysqldump -h *.*.*.* -p -u username -p password --database mysql | gzip > /data/backup/mysql.sql.gz
둘, mysql 복원 백업
2.1 MySQL 데이터베이스 복원 명령
#database는 데이터베이스 이름입니다.
mysql -h . . . -u 사용자 이름 -p 암호 데이터베이스 < backupfile.sql
2.2 압축된 MySQL 데이터베이스 복원
데이터베이스는 데이터베이스 이름입니다.
gunzip < backupfile.sql.gz | mysql -u username -p password database
2.3 데이터베이스를 새로운 서버로 옮기기
데이터베이스는 데이터베이스 이름입니다.
mysqldump -u username -p password database | mysql –host=*.*.*.* -C database
2.4 데이터베이스 가져오기
소스 명령은 일반적으로 사용되며 특정 데이터베이스, mysql>source d:\test.sql을 입력하는 데 사용되며 다음 매개 변수는 스크립트 파일입니다.
3. pgsql 백업 방법
Linux 시스템에서 백업(여기서 단일 데이터베이스를 다른 서버로 마이그레이션하는 작업 소개)
-h 데이터베이스 IP 주소 연결
-p 데이터베이스 포트
-U 데이터베이스 사용자
-c 다시 만들기 전에 데이터베이스 개체 지우기
-d 데이터베이스 지정
-f 로컬 파일 경로에 대한 백업 지정
pg_dump -h 120.55.163.126 -p 5432 -U postgres -c -d homestead_pengze_prod -f
/ws/db-bak/homestead_pengze_prod.bak
提示:window安装的话进入pgsql的bin目录使用cmd目录执行命令
마이그레이션:
백업 파일을 대상 서버 디렉터리(예: /ws)에 복사하고, 다른 서버에 동일한 이름의 데이터베이스를 만들고, docker를 사용하여 대상 서버에 pgsql을 설치하고, 먼저 백업 스크립트를 컨테이너에 복사합니다
.
docker cp homestead_pengze_prod.bak postgresql:/
컨테이너에 들어가 다음 복원 백업 스크립트를 실행합니다.
docker exec -it postgresql /bin/sh
네, pgsql 복원 백업
복원 스크립트: -d 백업 파일
복원을 위한 -d 데이터베이스
psql -h 127.0.0.1 -p 5432 -U postgres -d homestead_pengze_prod -f
homestead_pengze_prod.bak