Author Topic: mysql dump and import database huge  (Read 4396 times)

golfreeze

  • Administrator
  • Hero Member
  • *****
  • Posts: 2035
    • View Profile
    • นั่งสมาธิ สติปัฏฐานสี่ พาเที่ยววัด แนะนำวัด แจกcd ธรรมะฟรี
    • Email
mysql dump and import database huge
« on: มีนาคม 13, 2015, 03:58:17 PM »
##เริ่มด้วยการ dump database ออกมาก่อน
mysqldump -u[USER] -p[PASS] [DBNAME] | bzip2 --best > DBNAME.sql.bz2
mysqldump -u[USER] -p[PASS] [DBNAME] table1 | bzip2 --best > DBNAME_table.sql.bz2

ก่อน dump กลับปรับจูนค่า ในการ import
[mysqld]
# Performance settings used for import.
delay_key_write=ALL
bulk_insert_buffer_size=256M

##You are now in mysql shell. Set network buffer length to a large byte number. The default value may throw errors for such large data files
set global net_buffer_length=1000000;

##Set maximum allowed packet size to a large byte number.The default value may throw errors for such large data files.
set global max_allowed_packet=1000000000;

##Disable foreign key checking to avoid delays,errors and unwanted behaviour
SET foreign_key_checks = 0;
SET UNIQUE_CHECKS = 0;
SET AUTOCOMMIT = 0;

##การ import ข้อมูลกลับลงไปใน mysql DB
create databases  db_name;
bunzip2 [DBNAME].sql.bz2 | mysql -u[USER] -p[PASS] [DBNAME]

หรือจะ dump เฉพาะ table
mysql -uroot -p database  < dbname_table1.sql

หลังจากทำ import เสร็จแล้ว

SET foreign_key_checks = 1;
SET UNIQUE_CHECKS = 1;
SET AUTOCOMMIT = 1;
« Last Edit: มีนาคม 18, 2015, 01:48:06 PM by golfreeze »

golfreeze

  • Administrator
  • Hero Member
  • *****
  • Posts: 2035
    • View Profile
    • นั่งสมาธิ สติปัฏฐานสี่ พาเที่ยววัด แนะนำวัด แจกcd ธรรมะฟรี
    • Email
Re: mysql dump and import database huge
« Reply #1 on: มีนาคม 13, 2015, 04:39:32 PM »
ลง db server ให้เสร็จแล้ว
อีกวิธีคือ copy data  /var/lib/mysql + ibdata , my.cnf 
มาอีก node เลย

golfreeze

  • Administrator
  • Hero Member
  • *****
  • Posts: 2035
    • View Profile
    • นั่งสมาธิ สติปัฏฐานสี่ พาเที่ยววัด แนะนำวัด แจกcd ธรรมะฟรี
    • Email
Re: mysql dump and import database huge
« Reply #2 on: เมษายน 21, 2015, 01:53:08 PM »
#วิธีการเชคขนาดของแต่ละ table ใน database

SELECT table_name AS "Table",  round(((data_length + index_length) / 1024 / 1024), 2) as TEST   FROM information_schema.TABLES  WHERE table_schema = "YOUR_DATABASE_NAME"  order by TEST;

golfreeze

  • Administrator
  • Hero Member
  • *****
  • Posts: 2035
    • View Profile
    • นั่งสมาธิ สติปัฏฐานสี่ พาเที่ยววัด แนะนำวัด แจกcd ธรรมะฟรี
    • Email
Re: mysql dump and import database huge
« Reply #3 on: เมษายน 21, 2015, 01:53:46 PM »
SELECT table_schema "DB Name",
Round(Sum(data_length + index_length) / 1024 / 1024, 1) "DB Size in MB"
FROM   information_schema.tables
GROUP  BY table_schema;

golfreeze

  • Administrator
  • Hero Member
  • *****
  • Posts: 2035
    • View Profile
    • นั่งสมาธิ สติปัฏฐานสี่ พาเที่ยววัด แนะนำวัด แจกcd ธรรมะฟรี
    • Email
Re: mysql dump and import database huge
« Reply #4 on: เมษายน 30, 2015, 04:19:47 PM »
## ในกรณีที่ password ที่ใส่มี special character ให้ใส่ ' ' ลงไปเพิ่มด้วยนะครับ
mysqldump -hlocalhost -uUSERNAME -p'PA$$W0RD' DATABASE | gzip > /home/USERNAME/backups-mysql/BACKUP.gz

golfreeze

  • Administrator
  • Hero Member
  • *****
  • Posts: 2035
    • View Profile
    • นั่งสมาธิ สติปัฏฐานสี่ พาเที่ยววัด แนะนำวัด แจกcd ธรรมะฟรี
    • Email
Re: mysql dump and import database huge
« Reply #5 on: กุมภาพันธ์ 20, 2016, 01:10:30 PM »
ในกรณีจะ mysqldump ที่มีข้อมูลมากๆ ให้ใส่ option : --single-transaction ลงไปด้วยเพื่อป้องกันการ lock database ครับ
เพราะโดยปกติเวลา รัน mysqldump ตัว service mysqld ตัวออนอยู่ด้วยเสมอครับ

#mysqldump --user=mydbuser --password=mypass --default-character-set=utf8 --single-transaction mydatabase | gzip > "$fullpathbackupfile"