Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Sao lưu tự động hoặc thường xuyên dữ liệu mysql

CSV và CHỌN VÀO OUTFILE

http://dev.mysql.com/doc/refman /5.7/en/select-into.html

SELECT ... INTO OUTFILE ghi các hàng đã chọn vào một tệp. Các dấu cuối cột và dòng có thể được chỉ định để tạo ra một định dạng đầu ra cụ thể.

Đây là một ví dụ đầy đủ:

SELECT * FROM my_table INTO OUTFILE '/tmp/my_table.csv'
  FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
  LINES TERMINATED BY '\n'
  FROM test_table;

Tệp được lưu trên máy chủ và đường dẫn đã chọn cần phải có thể ghi được. Mặc dù truy vấn này có thể được thực thi thông qua PHP và một yêu cầu web, nhưng tốt nhất nó nên được thực thi thông qua bảng điều khiển mysql.

Dữ liệu được xuất theo cách này có thể được nhập vào cơ sở dữ liệu khác bằng cách sử dụng TẢI THÔNG TIN DỮ LIỆU

Mặc dù phương pháp này ưu việt hơn việc lặp lại thông qua một tập hợp kết quả và lưu vào một tệp từng hàng, nó không tốt bằng việc sử dụng ....

mysqldump

mysqldump ưu việt hơn SELECT INTO OUTFILE theo nhiều cách, tạo CSV chỉ là một trong nhiều điều mà lệnh này có thể làm.

Tiện ích máy khách mysqldump thực hiện sao lưu lôgic, tạo ra một tập hợp các câu lệnh SQL có thể được thực thi để tái tạo các định nghĩa đối tượng cơ sở dữ liệu gốc và dữ liệu bảng. Nó kết xuất một hoặc nhiều MySQLdatabases để sao lưu hoặc chuyển sang máy chủ SQL khác. Câu lệnh mysqldump cũng có thể tạo đầu ra dưới dạng CSV, văn bản được phân tách khác hoặc định dạng XML.

Lý tưởng nhất là mysqldump nên được gọi từ shell của bạn. Có thể sử dụng thực thi trong php để chạy nó nhưng vì việc tạo kết xuất có thể mất nhiều thời gian tùy thuộc vào lượng dữ liệu và các tập lệnh php thường chỉ chạy trong 30 giây, bạn sẽ cần phải chạy nó như một quá trình nền.

mysqldump không phải là không có sự chia sẻ công bằng của các vấn đề.

Nó không nhằm mục đích là một giải pháp nhanh hoặc có thể mở rộng để sao lưu lượng dữ liệu đáng kể. Với kích thước dữ liệu lớn, ngay cả khi bước sao lưu mất một thời gian hợp lý, việc khôi phục dữ liệu có thể rất chậm vì việc phát lại các câu lệnh SQL liên quan đến I / O đĩa để chèn, tạo chỉ mục, v.v.

Một ví dụ cổ điển cho câu hỏi này: Sự cố máy chủ khi sao lưu MySQL bằng python trong đó một mysqldump dường như bắt đầu trước khi một mysqldump kết thúc và kết xuất trang web hoàn toàn không phản hồi.

Sao chép Mysql

Sao chép cho phép dữ liệu từ một máy chủ cơ sở dữ liệu MySQL (chính) được sao chép sang một hoặc nhiều máy chủ cơ sở dữ liệu MySQL (nô lệ). Bản sao là không đồng bộ theo mặc định; nô lệ không cần phải kết nối vĩnh viễn để nhận cập nhật từ chủ. Tùy thuộc vào cấu hình, bạn có thể sao chép tất cả cơ sở dữ liệu, cơ sở dữ liệu đã chọn hoặc thậm chí các bảng đã chọn trong cơ sở dữ liệu.

Do đó, sao chép hoạt động khác với SELECT INTO OUTFILE hoặc msyqldump Đó là lý tưởng để giữ dữ liệu trong bản sao cục bộ gần như được cập nhật (Có thể nói là hoàn toàn đồng bộ nhưng có một thứ gọi là độ trễ nô lệ) Mặt khác, nếu bạn sử dụng một tác vụ đã lên lịch để chạy mysqldump 24 giờ một lần. Hãy tưởng tượng điều gì có thể xảy ra nếu máy chủ bị treo sau 23 giờ?

Mỗi khi bạn chạy mysqldump, bạn đang tạo ra một lượng lớn dữ liệu, hãy tiếp tục làm điều đó thường xuyên và bạn sẽ thấy đĩa cứng của mình bị lấp đầy hoặc hóa đơn lưu trữ tệp của bạn đang tăng vọt. Với bản sao, chỉ những thay đổi được chuyển đến máy chủ (bằng cách sử dụng cái gọi là binlog)

XtraBackup

Một giải pháp thay thế cho sao chép là sử dụng Percona XtraBackup .

Percona XtraBackup là một tiện ích sao lưu nóng mã nguồn mở dành cho các máy chủ dựa trên MySQL không khóa cơ sở dữ liệu của bạn trong quá trình sao lưu.

Mặc dù của Percona, nó tương thích với Mysql và Mariadb. Nó có khả năng thực hiện các bản sao lưu gia tăng, đó là hạn chế lớn nhất của mysqldump.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tìm hiểu cách sử dụng một số chức năng của MySQL và MariaDB - Phần 2

  2. Sử dụng Cơ sở dữ liệu quan hệ MySQL trên Ubuntu 9.10 (Karmic)

  3. Mã lỗi:1406. Dữ liệu quá dài cho cột - MySQL

  4. Cách chuyển đổi hàng thành cột động trong MySQL

  5. Lỗi 1064 trong TẠO BẢNG ... TYPE =MYISAM